Wie kann ich über einen S3-Zugriffspunkt, der auf eine VPC beschränkt ist, auf einen Bucket in einem anderen Konto zugreifen?

Lesedauer: 4 Minute
0

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

Behebung

Gehen Sie wie folgt vor, um einer IAM-Rolle oder einem IAM-Benutzer in einem AWS-Konto (Konto A) Zugriff auf einen Amazon-S3-Bucket in einem anderen AWS-Konto (Konto B) über einen S3-Zugriffspunkt zu gewähren, welcher auf eine Amazon VPC beschränkt ist:

  1. Erstellen Sie einen Amazon-S3-Zugriffspunkt und hängen Sie ihn an den Bucket in Konto B an.
  2. Erstellen Sie einen VPC-Gateway-Endpunkt von Amazon S3 in Konto A.
  3. Fügen Sie die Zugriffspunkt-, Bucket- und IAM-Richtlinien hinzu.

Erstellen Sie einen Amazon-S3-Zugriffspunkt und hängen Sie ihn an den Bucket in Konto B

  1. Öffnen Sie die Amazon-S3-Konsole.
  2. Wählen Sie Zugriffspunkte im Navigationsbereich aus.
  3. Wählen SieZugriffspunkt erstellen aus.
  4. Geben Sie unter Zugriffspunktname einen Namen für den Zugriffspunkt ein. Weitere Informationen finden Sie unter Regeln für die Benennung von Amazon-S3-Zugriffspunkten.
  5. Geben Sie unter Bucket-Name den Namen des Buckets aus Konto B ein, dem Sie den Zugriffspunkt zuordnen möchten.
  6. Wählen Sie Virtual Private Cloud (VPC) als Network Origin aus.
  7. Geben Sie für die VPC-ID die VPC-ID des ersten AWS-Kontos (Konto A) ein.
  8. Wählen Sie unter Einstellungen für öffentlichen Zugriff für diesen Zugriffspunkt sperren die Einstellungen zum Blockieren des öffentlichen Zugriffs aus, die Sie auf den Zugriffspunkt anwenden möchten. 
    Hinweis: Amazon S3 unterstützt derzeit nicht das Ändern der Einstellungen zum Blockieren des öffentlichen Zugriffs eines Zugriffspunkts, nachdem der Zugriffspunkt erstellt wurde.
  9. Lassen Sie die Zugriffspunktrichtlinie leer.
  10. Wählen SieZugriffspunkt erstellen aus.

Erstellen Sie einen VPC-Gateway-Endpunkt von Amazon S3 in Konto A

Erstellen Sie einen S3-Gateway-VPC-Endpunkt im ersten AWS-Konto (Konto A) in derselben Region wie der Bucket, auf den Sie kontoübergreifenden Zugriff gewähren.

  1. Öffnen Sie die Amazon-VPC-Konsole.
  2. Wählen Sie Endpunkte im Navigationsbereich aus.
  3. Wählen Sie Endpunkt erstellen aus.
  4. Wählen Sie für die Service-Kategorie die Option AWS-Services aus.
  5. Fügen Sie für Services den Filter Typ: Gateway hinzu und wählen Sie dieselbe Region aus, die zum Erstellen des Zugriffspunkts verwendet wurde.
  6. Wählen Sie für VPC dieselbe VPC aus, die zum Erstellen des Zugriffspunkts verwendet wurde.
  7. Wählen Sie für Routing-Tabellen die Routing-Tabellen, die vom Endpunkt verwendet werden sollen.
  8. Wählen Sie die Zugriffsrichtlinie vollen Zugriff aus. Oder wählen Sie Benutzerdefiniert und stellen Sie sicher, dass die Richtlinie die erforderlichen S3-Aktionen zulässt.

Hinweis: Gateway-Endpunkte erlauben keinen Zugriff aus anderen AWS-Regionen. Im Folgenden finden Sie ein Beispiel für eine VPC-Endpunkt-Richtlinie, die alle S3-Aktionen für alle Buckets zulässt:

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

Zugriffspunkt-, Bucket- und IAM-Richtlinien anhängen

Um den kontoübergreifenden Zugriff der IAM-Entität des ursprünglichen AWS-Kontos (Konto A) auf den Bucket des anderen AWS-Kontos (Konto B) über den Zugriffspunkt zu ermöglichen, müssen Sie Berechtigungen aus dem Zugriffspunkt, Bucket und den IAM-Richtlinien erteilen. Im Folgenden finden Sie Richtlinien, die jeweils die erforderlichen Berechtigungen gewähren.

Zugriffspunktrichtlinie:

{
 "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"
  ]
 }]
}

Hinweis: Diese Richtlinie gewährt dem IAM-Benutzer oder der IAM-Rolle vom ursprünglichen AWS-Kontos (Konto A) die Berechtigung für den Zugriffspunkt im AWS-Zielkonto (Konto B).

Bucket-Richtlinie:

{
 "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"
   }
  }
 }]
}

Hinweis: Diese Richtlinie gewährt dem ursprünglichen AWS-Konto (Konto A) die IAM-Benutzerberechtigung für den Bucket (Konto B) mithilfe des Zugriffspunkts.

IAM-Richtlinie

{
 "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/*"
  ]
 }]
}

Hinweis: Diese IAM-Richtlinie, die der IAM-Rolle oder dem Benutzer des ursprünglichen AWS-Kontos (Konto A) zugeordnet ist, gewährt Berechtigungen für den Bucket und den Zugriffspunkt des AWS-Zielkontos (Konto B).

Beispiele für AWS-CLI-Befehle zum Ausführen von S3-Vorgängen für den Bucket mithilfe des Zugriffspunkts:

Hinweis: Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS CLI verwenden.

Liste:

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

Hochladen:

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

Herunterladen:

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

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


AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr