其他 AWS 帳戶將物件上傳到我的 Amazon S3 儲存貯體時,我如何要求他們授予我物件的完全控制權限?

1 分的閱讀內容
0

我想允許其他 AWS 帳戶的使用者將物件上傳到我的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。但我希望使用者授予我完全控制這些物件的權限。

解決方法

新增儲存貯體政策,要求使用者將物件上傳至您的儲存貯體時,加上 bucket-owner-full-control 存取控制清單 (ACL)。

例如,此儲存貯體政策會指定 ExampleUser 必須將物件的 ACL 設為 bucket-owner-full-control,才能上傳物件到 DOC-EXAMPLE-BUCKET

{
  "Id": "Policy1541018284691",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1541018283275",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control"
        }
      },
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/ExampleUser"
        ]
      }
    }
  ]
}

您新增此儲存貯體政策後,使用者上傳要求中包含必要的 ACL,如以下範例所示:

aws s3 cp example.jpg s3://DOC-EXAMPLE-BUCKET --acl bucket-owner-full-control

如果使用者無法符合上傳請求中的 ACL 要求,則會收到下列錯誤訊息:

「呼叫 PutObject 作業時發生錯誤 (AccessDenied): 存取遭拒」

對於其他帳戶擁有的儲存貯體中的物件,物件所有者可以執行 put-object-acl 命令,以授予您物件的控制權限:

aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key example.jpg --acl bucket-owner-full-control

bucket-owner-full-control ACL 授予儲存貯體所有者其他帳戶上傳物件的完整存取權限。但是,單單此 ACL 不會授予物件的所有權。若要自動取得使用 bucket-owner-full-control ACL 上傳的物件之所有權,請將 S3 物件所有權設為偏好的儲存貯體所有者。更新 S3 物件所有權後,儲存貯體所有者會自動擁有使用 bucket-owner-full-control 上傳的任何新物件。

相關資訊

為什麼我無法存取其他 AWS 帳戶上傳至 Amazon S3 儲存貯體的物件?

使用容器式 ACL 管理儲存貯體

IAM 教學課程: 使用 IAM 角色將存取權限委派給不同 AWS 帳戶

ACL 權限與存取政策權限的對應

AWS 官方
AWS 官方已更新 6 個月前