設定現有儲存貯體的「物件擁有權」 - Amazon Simple Storage Service

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

設定現有儲存貯體的「物件擁有權」

您可以在現有 S3 儲存貯體上設定 S3 物件擁有權。若要在建立儲存貯體時套用「物件擁有權」,請參閱 在建立儲存貯體時設定「物件擁有權」

S3 物件擁有權是 Amazon S3 儲存貯體層級設定,可用來停用存取控制清單 (ACLs) 和取得儲存貯體中每個物件的所有權,簡化 Amazon S3 中存放資料的存取管理。根據預設,S3 物件擁有權會設定為「儲存貯體擁有者強制執行」設定,並ACLs針對新儲存貯體停用。ACLs停用時,值區擁有者會擁有值區中的每個物件,並使用存取管理原則專門管理資料的存取權。建議您保持ACLs停用狀態,除非在特殊情況下,您必須個別控制每個物件的存取權限。

「物件擁有權」有三種設定,可用來控制上載至值區之物件的擁有權,以及停用或啟用ACLs:

ACLs 停用
  • 強制執行值區擁ACLs有者 (預設值) — 已停用,值區擁有者會自動擁有並完全控制值區中的每個物件。ACLs不再影響 S3 儲存貯體中資料的許可。儲存貯體使用政策來定義存取控制。

ACLs啟用
  • 偏好的值區擁有者 — 值區擁有者擁有並可完全控制其他帳號以bucket-owner-full-control固定方式寫入值區的新物件ACL。

  • 物件寫入器 — 上傳物件 AWS 帳戶 的物件擁有物件、擁有物件的完全控制權,並且可以透過授與其他使用者存取該物件ACLs。

先決條件:在套用值區擁有者強制執行設定以停用之前ACLs,您必須將值區ACL權限移轉至值區政策,並將值區重設ACLs為預設的私人值區ACL。我們也建議您將物件ACL權限移轉至值區政策,並編輯需要值區擁有者完全控制權以ACLs外的值區政策ACLs。如需詳細資訊,請參閱 停用的先決條件 ACLs

許可:若要使用這項操作,您必須擁有 s3:PutBucketOwnershipControls 許可。如需 Amazon S3 許可的詳細資訊,請參閱服務授權參考適用於 Amazon S3 的動作、資源和條件金鑰

  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,位於https://console.aws.amazon.com/s3/

  2. Buckets (儲存貯體) 清單中,選擇您要將 S3 「物件擁有權」設定套用至其中的儲存貯體名稱。

  3. 選擇許可索引標籤標籤。

  4. Object Ownership (物件擁有權) 下,選擇 Edit (編輯)。

  5. 在「物件擁有權」下,若要停用或啟用ACLs及控制值區中上傳物件的擁有權,請選擇下列其中一項設定:

    ACLs 停用
    • 強制執行值區擁ACLs有者 — 已停用,值區擁有者會自動擁有並完全控制值區中的每個物件。ACLs不再影響 S3 儲存貯體中資料的許可。儲存貯體使用政策來定義存取控制。

      若要求使用IAM或 AWS Organizations 政策建立所有新值區,請參閱停ACLs用所有新值區 (值區擁有者強制執行)。ACLs

    ACLs啟用
    • 偏好的值區擁有者 — 值區擁有者擁有並可完全控制其他帳號以bucket-owner-full-control固定方式寫入值區的新物件ACL。

      如果您套用儲存貯體擁有者偏好設定,若要要求所有 Amazon S3 上傳都包含bucket-owner-full-control罐裝ACL,您可以新增儲存貯體政策,該政策只允許使用此功能的物件上傳ACL。

    • 物件寫入器 — 上傳物件 AWS 帳戶 的物件擁有物件、擁有物件的完全控制權,並且可以透過授與其他使用者存取該物件ACLs。

  6. 選擇儲存

若要針對現有儲存貯體套用「物件擁有權」設定,請使用具有 --ownership-controls 參數的 put-bucket-ownership-controls 命令。擁有權的有效值為 BucketOwnerEnforcedBucketOwnerPreferredObjectWriter

此範例會使用 AWS CLI為現有儲存貯體套用「儲存貯體擁有者強制執行」設定:

aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerEnforced}]"

如需 put-bucket-ownership-controls 的詳細資訊,請參閱《AWS Command Line Interface 使用者指南》中的 put-bucket-ownership-controls

此範例會使用 AWS SDK for Java為現有儲存貯體套用「物件擁有權」的 BucketOwnerEnforced 設定:

// Build the ObjectOwnership for BucketOwnerEnforced OwnershipControlsRule rule = OwnershipControlsRule.builder() .objectOwnership(ObjectOwnership.BucketOwnerEnforced) .build(); OwnershipControls ownershipControls = OwnershipControls.builder() .rules(rule) .build() // Build the PutBucketOwnershipControlsRequest PutBucketOwnershipControlsRequest putBucketOwnershipControlsRequest = PutBucketOwnershipControlsRequest.builder() .bucket(BUCKET_NAME) .ownershipControls(ownershipControls) .build(); // Send the request to Amazon S3 s3client.putBucketOwnershipControls(putBucketOwnershipControlsRequest);

若 AWS CloudFormation 要用於對現有值區套用「物件擁有權」設定,請參閱《使AWS CloudFormation 用指南》AWS::S3::Bucket OwnershipControls中的〈〉。

若要使用RESTAPI將物件擁有權設定套用至現有 S3 儲存貯體,請使用PutBucketOwnershipControls。如需詳細資訊,請參閱 Amazon 簡易儲存服務API參考PutBucketOwnershipControls中的。

後續步驟:套用「物件擁有權」的儲存貯體擁有者強制執行設定或儲存貯體擁有者偏好設定之後,您可以進一步採取下列步驟:

  • 強制執行值區擁有者 — 要求所有新值區都必須使用IAM或 Organizations 政策建立而ACLs停用。

  • 偏好的儲存貯體擁有者 — 新增 S3 儲存貯體政策,以要求將所有物件上傳至儲存貯體的bucket-owner-full-control固ACL定項目。