wake-up-neo.com

So erhalten Sie die kanonische ID des Benutzers zum Hinzufügen einer S3-Berechtigung

Ich möchte eine S3-Berechtigung für einen bestimmten Benutzer hinzufügen. Die AWS-Konsole fragt mich nach der Canonical ID für den Benutzer . Ich habe den AWS CLI-Befehl aws iam list-users verwendet, um die Liste der Benutzer abzurufen, aber es war kein Feld "Canonical ID" vorhanden, und die "Benutzer-ID" wird nicht erkannt und gibt mir eine "Ungültige ID" -Meldung. Ich habe es auch mit ARN versucht und es hat nicht funktioniert.

19
jigarzon

Es gibt zwei Lösungen, mit denen Sie diesem Benutzer Zugriff auf einen Amazon S3-Bucket und Inhalt gewähren können

  1. IAM-Benutzerrichtlinien

    {
      "Version": "2012-10-17",
      "Id": "9758b97b-6fe0-4ba3-b5bd-3d0fe8896a83",
      "Statement": [
       {
        "Sid": "AllowMyUser",
        "Effect": "Allow",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::YOUR bucket name /*"
       }
      ]
    }
    
  2. Bucket-Richtlinien

    {
      "Version": "2012-10-17",
      "Id": "9758b97b-6fe0-4ba3-b5bd-3d0fe8896a83",
      "Statement": [{
        "Sid": "AllowMyUser",
        "Effect": "Allow",
        "Principal": {
            "AWS": "YOUR IAM User AWSId"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::YOUR bucket name /*"
     }]
    }
    

AWS CLI iam user Gibt die UserId zurück, die in der API-Dokumentation state in S3 verwendet werden kann 

Sie können beispielsweise einen IAM-Benutzer mit dem Namen David erstellen. Ihr Unternehmen verwendet Amazon S3 und verfügt über einen Ordner mit Ordnern für jeden Mitarbeiter. Der Bucket verfügt über eine ressourcenbasierte Richtlinie (eine Bucket-Richtlinie), mit der Benutzer nur auf ihre eigenen Ordner im Bucket zugreifen können. Angenommen, der Mitarbeiter namens David verlässt Ihr Unternehmen und Sie löschen den entsprechenden IAM-Benutzer. Später wird jedoch ein anderer Mitarbeiter namens David gestartet, und Sie erstellen einen neuen IAM-Benutzer namens David. Wenn in der Bucket-Richtlinie der IAM-Benutzer mit dem Namen David angegeben ist, kann die Richtlinie dem neuen David möglicherweise Zugriff auf Informationen im Amazon S3-Bucket gewähren, die vom vorherigen David hinterlassen wurden.

https://docs.aws.Amazon.com/IAM/latest/APIReference/API_User.html

9
strongjz

Um einem IAM-Benutzer Berechtigungen für einen Bucket zu erteilen, müssen Sie eine Bucket-Richtlinie erstellen. Hierbei handelt es sich um ein JSON-Dokument. Mit der Option "Zugriff auf andere AWS-Konten" in der ACL können Sie Zugriff auf andere (vollständig separate) AWS-Stammkonten gewähren, nicht jedoch IAM-Benutzern innerhalb Ihres eigenen Stammkontos.

Eine Richtlinie erstellen/bearbeiten

Um auf die Bucket-Richtlinie zuzugreifen, navigieren Sie zu einem Bucket in der S3-Webkonsole. Dort sehen Sie die Registerkarten Übersicht/Eigenschaften/Berechtigungen/Verwaltung. Unter Berechtigungen befindet sich eine Unterregisterkarte mit dem Namen "Bucket Policy". Am unteren Rand der Bucket Policy-Seite befindet sich ein Link zu einem "Policy Generator", der die JSON für Sie generiert. (oder der direkte Link ist http://awspolicygen.s3.amazonaws.com/policygen.html )

Identifizieren eines IAM-Benutzers, dem Rechte zugewiesen werden sollen

Um den IAM-Benutzer zu identifizieren, dem Sie Berechtigungen erteilen möchten, verwenden Sie einen ARN (Amazon Resource Name). Das ARN-Format für IAM-Benutzer lautet wie folgt: "arn: aws: iam :: {Konto-ID}: Benutzer/{Benutzername}" (Beachten Sie, dass die geschweiften Klammern nicht Teil des Formats sind). Ein Beispiel für IAM ARN sieht folgendermaßen aus: arn: aws: iam :: 100123456789: user/Daniel

Um Ihre numerische Konto-ID zu erhalten, melden Sie sich als Root-Benutzer an und klicken Sie auf Ihren Benutzernamen oben rechts auf der Seite. Wählen Sie "Mein Konto" (damit gelangen Sie zu https://console.aws.Amazon.com/rechnung/home? #/konto ). Die Konto-ID ist oben auf der Seite unter "Kontoeinstellungen" aufgeführt.

Stecken Sie diesen Benutzer-ARN in das Feld "Principal" des Richtliniengenerators und wählen Sie aus der Dropdown-Liste aus, welche Aktion (en) Sie dem Benutzer gewähren möchten.

Festlegen, für welche Berechtigungen Berechtigungen erteilt werden sollen

Um einem Bucket oder einem Satz von Dateien (Objekten) innerhalb eines Buckets Berechtigungen zu erteilen, müssen Sie einen ARN eingeben, der den Bucket oder eine Teilmenge von Objekten innerhalb des Buckets in das Feld "Amazon Resource Name" (Amazon Ressourcenname) angibt (z Ein Bucket namens daniels-stuff und ein Ordner in diesem Bucket namens images, auf das ich Zugriff gewähren wollte. Dann könnte ich einen ARN wie arn: aws: s3 ::: daniels-stuff bereitstellen/images/*

Klicken Sie auf "Anweisung hinzufügen", wenn Sie die erforderlichen Informationen eingegeben haben, und klicken Sie dann auf "Richtlinie erstellen". Beachten Sie, dass Sie mehrere Anweisungen (Zugriffsrechtzuweisungen) in die eine Richtlinie einfügen können.

Mehr Info

Schließlich gibt es eine gute Einführung in die s3-Bucket-Richtlinien unter https://brandonwamboldt.ca/understanding-s3-permissions-1662/ , die einige Beispielrichtlinien enthält.

Viel Glück (obwohl ich davon ausgehe, dass Sie Ihr Problem wahrscheinlich jetzt gelöst haben, kann dies für andere hilfreich sein).

13
Daniel Scott

Um die kanonische ID abzurufen, verwenden Sie die CLI und führen den Befehl aws s3api list-buckets aus. Sie erhalten die ID in der Ausgabe.

Es gibt auch andere Möglichkeiten, die kanonische ID zu erhalten. Diese sind in den aws-Dokumenten beschrieben: https://docs.aws.Amazon.com/general/latest/gr/acct-identifiers.html

list-buckets aws docs: https://docs.aws.Amazon.com/cli/latest/reference/s3api/list-buckets.html

3
Rathan

Die kanonische ID des Benutzers ist am einfachsten zu finden, wenn der Benutzer, dessen ID Sie suchen, aws s3api list-buckets genannt wird:

aws --profile PROD s3api list-buckets
{
    "Owner": {
        "DisplayName": "a-display-name",
        "ID": "a-64?-char-hex-string"  <<-- this HERE is the canonical user ID
    },
    "Buckets": [
        {
            "CreationDate": "2018-03-28T21:50:56.000Z",
            "Name": "bucket-1"
        },
        {
            "CreationDate": "2018-03-22T14:08:48.000Z",
            "Name": "bucket-2"
        }
    ]
}

Mit dieser ID können Sie dann das s3api anrufen, um Zugriff zu gewähren - zB um Lesezugriff zu gewähren - wie folgt:

aws --profile OTHER s3api put-object-acl \
    --bucket bucket-3 \
    --key path/to/file \
    --grant-read id="the-64-char-hex"
3
Enda Farrell

1. Erstellen Sie eine neue Richtlinie mit dem folgenden JSON

{
  "Version": "2012-10-17",
  "Statement": [
      {
          "Effect": "Allow",
          "Action": [
              "s3:ListAllMyBuckets"
          ],
          "Resource": "arn:aws:s3:::*"
      },
      {
          "Effect": "Allow",
          "Action": [
              "s3:ListBucket",
              "s3:GetBucketLocation"
          ],
          "Resource": "arn:aws:s3:::<your_bucket_name_here>"
      },
      {
          "Sid": "VisualEditor0",
          "Effect": "Allow",
          "Action": [
              "s3:PutObject",
              "s3:GetObject",
              "s3:ListBucket",
              "s3:DeleteObject",
              "s3:GetObjectVersion"
          ],
          "Resource": "arn:aws:s3:::<your_bucket_name_here>/*"
      }
  ]
}

** 2. Weisen Sie die Richtlinie dem Benutzer oder einer Benutzergruppe zu

Hinweis:

Ich erhielt immer wieder Access Denied (Status code: 403)-Fehler, da mir die ersten beiden Objekte im JSON-Array oben fehlten. Sie müssen Ihrem Benutzer die Erlaubnis erteilen,

  • Sehen Sie alle Ihre Eimer
  • Listen Sie den spezifischen Bucket auf und ermitteln Sie den Speicherort

bevor es überhaupt die Möglichkeit bekommt, irgendwelche Aktionen am Bucket-Inhalt auszuführen.

0
RVP

Gehen Sie wie folgt vor, um die Canonical ID des Kontos zu ermitteln:

  1. Klicken Sie auf Ihren Benutzernamen, der sich in der oberen Menüleiste befindet.
  2. Ein Dropdown wird angezeigt. Wählen Sie My Security Credentials.
  3. Canonical User ID ist da

Sie können Ihre kanonische ID für Ihren IAM-Benutzer auch über den CLI-Befehl erhalten:

Listen Sie alle Eimer und Ihre iam-Canonical-ID auf:

aws s3api list-buckets

Und wenn Sie nur Ihre kanonische ID erhalten möchten:

aws s3api list-buckets | grep ID

Beachten Sie, dass die oben genannten Befehle über die CLI ausgeführt werden, wo Sie Ihr Profil bereits eingerichtet haben.

0
Stryker

Stellen Sie sicher, dass * am Ende der Zeile steht, um allen Berechtigungen zu gewähren!

arn:aws:s3:::daniels-stuff/images/*
0
Rachael