停用所有新儲存貯體的 ACL 並強制執行「物件擁有權」 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

停用所有新儲存貯體的 ACL 並強制執行「物件擁有權」

建議您停用 Amazon S3 儲存貯體上的 ACL。您可以套用 S3 物件擁有權的「儲存貯體擁有者強制執行」設定來執行此操作。當您套用此設定時,會停用 ACL,而且您會自動擁有並完全控制儲存貯體中的所有物件。若要求在停用 ACL 的情況下建立所有新值區,請使用 AWS Identity and Access Management (IAM) 政策或 AWS Organizations 服務控制政策 (SCP),如下一節所述。

若要在不停用 ACL 的情況下強制執行新物件的「物件擁有權」,您可以套用儲存貯體擁有者偏好設定。套用此設定時,強烈建議您更新儲存貯體政策以要求對您儲存貯體的所有 PUT 請求使用 bucket-owner-full-control 固定 ACL。用戶端也應該更新,以從其他帳戶傳送 bucket-owner-full-control 固定 ACL 到您的儲存貯體。

停用所有新儲存貯體的 ACL (儲存貯體擁有者強制執行)

下列範例 IAM 政策會拒絕特定 IAM 使用者或角色的 s3:CreateBucket 許可,除非為物件擁有權套用「儲存貯體擁有者強制執行」設定。Condition 區塊中的鍵值對會指定 s3:x-amz-object-ownership 作為其鍵,並指定 BucketOwnerEnforced 設定作為其值。換句話說,只有在 IAM 使用者為物件擁有權設定「儲存貯體擁有者強制執行」設定並停用 ACL 時,IAM 使用者才能建立儲存貯體。您也可以使用此原則做為 AWS 組織的界限 SCP。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireBucketOwnerFullControl", "Action": "s3:CreateBucket", "Effect": "Deny", "Resource": "*", "Condition": { "StringNotEquals": { "s3:x-amz-object-ownership": "BucketOwnerEnforced" } } } ] }

Amazon S3 PUT 操作需要 bucket-owner-full-control固定 ACL (建議使用儲存貯體擁有者)

使用「物件擁有權」的儲存貯體擁有者偏好設定,身為儲存貯體擁有者,您可以擁有並完全控制其他帳戶寫入您具有 bucket-owner-full-control 固定 ACL 之儲存貯體的物件。但是,如果其他帳戶將物件寫入沒有 bucket-owner-full-control 標準 ACL 的儲存貯體時,物件寫入者會維持完整的控制存取權。身為儲存貯體擁有者,您可以實作只有在其指定 bucket-owner-full-control 標準 ACL 時才允許寫入的儲存貯體政策。

注意

如果使用「儲存貯體擁有者強制執行」設定停用了 ACL,則您身為儲存貯體擁有者會自動擁有並完全控制儲存貯體中的所有物件。您不需要使用此區段來更新儲存貯體政策,以強制執行儲存貯體擁有者的物件擁有權。

下列儲存貯體政策指定只有在物件的 ACL 設定為 111122223333 時,帳戶 DOC-EXAMPLE-BUCKET 才能將物件上傳至 bucket-owner-full-control。請務必使用您的帳戶取代 111122223333,以及使用您儲存貯體的名稱取代 DOC-EXAMPLE-BUCKET

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

以下是範例複製操作,其中包含使用 AWS Command Line Interface (AWS CLI) 的 bucket-owner-full-control 固定 ACL。

aws s3 cp file.txt s3://DOC-EXAMPLE-BUCKET --acl bucket-owner-full-control

儲存貯體政策生效後,如果用戶端不包含 bucket-owner-full-control 固定 ACL,則操作會失敗,且上傳程式會收到下列錯誤:

調用 PutObject 操作時發生錯誤(AccessDenied):訪問被拒絕

注意

如果用戶端在上傳後需要存取物件,您必須授予上傳帳戶的額外許可。如需有關授予帳戶對資源的存取權的資訊,請參閱 使用政策管理 Amazon S3 資源存取權的逐步解說