我想授予另一个账户中的某个 AWS Identity and Access Management (IAM) 用户访问我的 Amazon Simple Storage Service (Amazon S3) 存储桶的权限。另外,我还想授予跨账户访问权限,让该用户可以将对象上传到我的 Amazon S3 存储桶。
要向账户 A 中的 IAM 用户授予向账户 B 中的 S3 存储桶上传对象的访问权限,请执行以下步骤:
在账户 A 中,向 IAM 用户附加策略。此策略必须允许用户对账户 B 中的桶运行 s3:PutObject 和 s3:PutObjectAcl 操作:
{ "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/*" ] } ] }
注意: 在为上传指定对象访问控制列表 (ACL) 之前,您必须具有 s3:PutObjectAcl 权限。否则,当您上传带有 ACL 的对象(如 bucket-owner-full 控件 ACL)时,会出现访问被拒绝错误。
从账户 A 获取 IAM 用户的 Amazon 资源名称 (ARN)。
从账户 B 附加桶策略,向账户 A 中的 IAM 用户授予运行 s3:PutObject 和 s3:PutObjectAcl 操作的权限:
{ "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/*" ] } ] }
重要信息: 对于主体值,确保在账户 A 中输入 IAM 用户的 ARN。
该 IAM 用户现在可以将对象上传到 Amazon S3 了。
示例 2: 桶拥有者授予跨账户桶权限