如何向另一个 AWS 账户中的用户授予将对象上传到我的 Amazon S3 存储桶的权限?

1 分钟阅读
0

我想授予另一个账户中的某个 AWS Identity and Access Management (IAM) 用户访问我的 Amazon Simple Storage Service (Amazon S3) 存储桶的权限。另外,我还想授予跨账户访问权限,让该用户可以将对象上传到我的 Amazon S3 存储桶。

解决方法

要向账户 A 中的 IAM 用户授予向账户 B 中的 S3 存储桶上传对象的访问权限,请执行以下步骤:

  1. 在账户 A 中,向 IAM 用户附加策略。此策略必须允许用户对账户 B 中的桶运行 s3:PutObjects3: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)时,会出现访问被拒绝错误。

  2. 从账户 A 获取 IAM 用户的 Amazon 资源名称 (ARN)

  3. 从账户 B 附加桶策略,向账户 A 中的 IAM 用户授予运行 s3:PutObjects3: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: 桶拥有者授予跨账户桶权限

AWS 官方
AWS 官方已更新 5 个月前