Ich möchte einem Benutzer von AWS Identity and Access Management (IAM) in einem anderen Konto Zugriff auf meinen Amazon Simple Storage Service (Amazon S3)-Bucket gewähren. Außerdem möchte ich kontoübergreifenden Zugriff gewähren, damit der Benutzer Objekte in meinen Amazon-S3-Bucket hochladen kann.
Lösung
Gehe wie folgt vor, um einem IAM-Benutzer von Konto A aus Zugriff zum Hochladen von Objekten in einen S3-Bucket in Konto B zu gewähren:
-
Hänge von Konto A aus eine Richtlinie an den IAM-Benutzer an. Die Richtlinie muss es dem Benutzer ermöglichen, die Aktionen s3:PutObject und s3:PutObjectAcl auszuführen:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
]
}
]
}
Hinweis: Bevor du eine Objekt-Zugriffssteuerungsliste (ACL) für den Upload angibst, musst du über die s3:PutObjectAcl-Berechtigung verfügen. Andernfalls erhältst du den Fehler Access Denied, wenn du ein Objekt mit einer ACL hochlädst, z. B. mit der bucket-owner-full control-ACL.
-
Rufe von Konto A den Amazon-Ressourcennamen (ARN) des IAM-Benutzers ab.
-
Hänge von Konto B aus eine Bucket-Richtlinie an, die dem IAM-Benutzer in Konto A die Berechtigung erteilt, die Aktionen s3:PutObject und s3:PutObjectAcl auszuführen:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DelegateS3Access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::999999999999:user/UploadData"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
]
}
]
}
Wichtig: Gib für den Wert Principal unbedingt den ARN des IAM-Benutzers in Konto A ein.
Der IAM-Benutzer kann jetzt Objekte auf Amazon S3 hochladen.
Ähnliche Informationen
Beispiel 2: Bucket-Besitzer gewährt kontoübergreifende Bucket-Berechtigungen