Direkt zum Inhalt

Wie greife ich über einen S3-Zugangspunkt, der auf eine VPC beschränkt ist, auf einen Bucket in einem anderen Konto zu?

Lesedauer: 5 Minute
0

Ich habe eine AWS Identity and Access Management (IAM)-Entität und einen Amazon Simple Storage Service (Amazon S3)-Bucket in verschiedenen AWS-Konten. Ich möchte der IAM-Entität über einen Amazon-S3-Zugangspunkt kontoübergreifenden Zugriff auf den Bucket gewähren. Der Zugangspunkt ist auf eine Amazon Virtual Private Cloud (Amazon VPC) beschränkt.

Kurzbeschreibung

Sie können einer IAM-Rolle oder einem Benutzer in einem AWS-Konto über einen S3-Zugangspunkt, der auf eine Amazon VPC beschränkt ist, Zugriff auf einen Amazon-S3-Bucket in einem anderen AWS-Konto gewähren.

Angenommen, die IAM-Entität befindet sich in Konto A und der S3-Bucket in Konto B. Um der IAM-Entität Zugriff auf den Bucket über einen S3-Zugriffspunkt zu gewähren, der auf eine Amazon VPC beschränkt ist, führen Sie die folgenden Schritte aus:

  1. Erstellen Sie einen Amazon-S3-Zugangspunkt und hängen Sie ihn an den Bucket in Konto B an.
  2. Erstellen Sie einen Amazon-S3-VPC-Gateway-Endpunkt in Konto A.
  3. Hängen Sie Richtlinien an den Zugangspunkt, den Bucket und die IAM-Entität an.

Hinweis: Die IAM-Identität in Konto A muss sich in derselben AWS-Region wie der S3-Bucket in Konto B befinden.

Behebung

Erstellen eines Amazon-S3-Zugangspunkts und Anhängen an den Bucket in Konto B

Gehen Sie wie folgt vor, um einen Amazon-S3-Zugangspunkt zu erstellen und an den Bucket in Konto B anzuhängen:

  1. Öffnen Sie dieAmazon-S3-Konsole.
  2. Wählen Sie im Navigationsbereich Zugangspunkte aus.
  3. Wählen Sie Zugangspunkt erstellen.
  4. Geben Sie unter Zugangspunktname den Namen für den Zugangspunkt ein. Weitere Informationen zur Benennung von Zugangspunkten finden Sie unter Regeln für die Benennung von Amazon-S3-Zugangspunkten.
  5. Wählen Sie für Bucket-Name die Option Einen Bucket in diesem Konto wählen aus, und geben Sie dann den Bucket-Namen ein, an den Sie den Zugangspunkt anhängen möchten.
  6. Wählen Sie für Netzwerkursprung die Option Virtual Private Cloud (VPC) aus.
  7. Geben Sie für die VPC-ID die VPC-ID des anderen AWS-Kontos (Konto A) ein.
  8. Wählen Sie unter Einstellungen im Blockieren des öffentlichen Zugriffs auf diesen Zugangspunkt die Einstellungen zum Blockieren des öffentlichen Zugriffs aus, die Sie auf den Zugangspunkt anwenden möchten.
    Hinweis: Nachdem Sie einen Zugangspunkt erstellt haben, können Sie seine Einstellungen zum Blockieren des öffentlichen Zugriffs nicht mehr ändern.
  9. Lassen Sie die Zugangspunkt-Richtlinie leer.
  10. Wählen Sie Zugangspunkt erstellen.

Erstellen eines Amazon-S3-VPC-Gateway-Endpunkts in Konto A

Gehen Sie wie folgt vor, um einen S3-VPC-Gateway-Endpunkt in Konto A zu erstellen, der Zugriff auf den Amazon-S3-Bucket in Konto B gewährt:

  1. Öffnen Sie die Amazon-VPC-Konsole.
  2. Wählen Sie im Navigationsbereich Endpunkte aus.
  3. Wählen Sie Endpunkt erstellen aus.   
  4. Wählen Sie als Servicekategorie die Option AWS-Services aus.
  5. Fügen Sie für Services den Filter Type = Gateway hinzu und wählen Sie com.amazonaws.<region>.s3 aus.
  6. Wählen Sie für VPC die VPC aus, mit der Sie den Zugangspunkt in Konto B erstellt haben.
  7. Wählen Sie für Routentabellen die Routing-Tabellen aus, die Ihr Endpunkt verwenden soll.
  8. Wählen Sie für Richtlinie die Option Vollzugriff aus, um alle Operationen nach allen Prinzipien auf allen Ressourcen über den VPC-Endpunkt zuzulassen. Oder wählen Sie Benutzerdefiniert und verwenden Sie Ihre eigene Richtlinie, die die erforderlichen S3-Aktionen zulässt.

Die folgende VPC-Endpunktrichtlinie erlaubt beispielsweise alle S3-Aktionen für alle Buckets:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:*"
    }
  ]
}

Hinweis: Gateway-Endpunkte erlauben keinen Zugriff aus anderen AWS-Regionen.

Richtlinien an den Zugangspunkt, den Bucket und die IAM-Entität anhängen

Um der IAM-Entität in Konto A über den Zugangspunkt Zugriff auf den Bucket in Konto B zu gewähren, müssen Sie Richtlinien an Folgendes anhängen:

  • Der Zugangspunkt
  • Der S3-Bucket
  • Die IAM-Entität

Zugangspunkt-Richtlinie

Um der IAM-Entität in Konto A die Berechtigung für den S3-Zugangspunkt in Konto B zu gewähren, fügen Sie Ihrem Zugangspunkt die folgende Richtlinie hinzu:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DelegateControlToAccessPoint",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::AccountA-ID:user/user1",
          "arn:aws:iam::AccountA-ID:role/role01"
        ]
      },
      "Action": [
        "s3:ListBucket",
        "s3:PutObject",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-acess-point/object/*",
        "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
      ]
    }
  ]
}

Bucket-Richtlinie

Um der IAM-Entität in Konto A über den Zugangspunkt die Berechtigung für den Bucket in Konto B zu gewähren, fügen Sie Ihrem Bucket die folgende Richtlinie hinzu:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCrossAccountAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::AccountA-ID:user/user1",
          "arn:aws:iam::AccountA-ID:role/role01"
        ]
      },
      "Action": [
        "s3:GetObject",
        "s3:ListBucket",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ],
      "Condition": {
        "StringEquals": {
          "s3:DataAccessPointArn": "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point"
        }
      }
    }
  ]
}

IAM-Richtlinie:

Um der IAM-Entität in Konto A die Berechtigung für den Bucket und den Zugangspunkt in Konto B zu gewähren, fügen Sie Ihrer IAM-Entität die folgende Richtlinie hinzu:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCrossAccountAccessToBucketAndAP",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:PutObject",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point",
        "arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point/object/*",
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ]
    }
  ]
}

AWS-CLI-Beispielbefehle zur Ausführung von S3-Vorgängen im Bucket über den Zugangspunkt

**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste Version der AWS CLI verwenden.

Um die Objekte über den Zugangspunkt aufzulisten, führen Sie den Befehl ls aus:

aws s3 ls arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

Um Dateien über den Zugangspunkt hochzuladen, führen Sie den Befehl cp aus:

aws s3 cp file.txt s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point

Sie können auch den Befehl cp verwenden, um Dateien über den Zugangspunkt herunterzuladen:

aws s3 cp s3://arn:aws:s3:us-east-2:AccountB-ID:accesspoint/my-access-point file.txt

Hinweis: Die Anfrage muss von einer Amazon Elastic Compute Cloud (Amazon EC2)-Instance stammen, die sich in derselben VPC und derselben Region wie der Bucket befindet.

AWS OFFICIALAktualisiert vor einem Jahr