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

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

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

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

S3 物件擁有權是一項 Amazon S3 儲存貯體層級設定,可讓您停用存取控制清單 (ACL) 並取得儲存貯體中每個物件的擁有權,簡化存放在 Amazon S3 中資料的存取管理。根據預設,新儲存貯體的 S3 物件擁有權會設定為儲存貯體擁有者強制執行設定,而且會停用 ACL。停用 ACL 後,儲存貯體擁有者會擁有儲存貯體中的每個物件,並使用存取管理政策專門管理對資料的存取。建議您將 ACL 保時停用狀態,除非在異常情況下必須個別控制每個物件的存取。

「物件擁有權」有三項設定,可讓您用來控制對上傳至儲存貯體之物件的擁有權,以及停用或啟用 ACL:

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

已啟用 ACL
  • 儲存貯體擁有者偏好 – 儲存貯體擁有者擁有並完全控制其他帳戶使用 bucket-owner-full-control 標準 ACL 寫入儲存貯體的新物件。

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

先決條件:在套用「儲存貯體擁有者強制執行」設定以停用 ACL 之前,您必須將儲存貯體 ACL 許可遷移至儲存貯體政策,並將儲存貯體 ACL 重設為預設的私有 ACL。也建議您將物件 ACL 許可遷移至儲存貯體政策,並編輯需要 ACL (儲存貯體擁有者完全控制 ACL 除外) 的儲存貯體政策。如需詳細資訊,請參閱 停用 ACL 的先決條件

許可:若要使用這項操作,您必須擁有 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. Object Ownership (物件擁有權) 下,若要停用或啟用 ACL 並控制上傳在儲存貯體中物件的擁有權,請選擇下列其中一個設定:

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

      若要求在使用 IAM 或 AWS Organizations 政策停用 ACL 的情況下建立所有新值區,請參閱停用所有新儲存貯體的 ACL (儲存貯體擁有者強制執行)

    已啟用 ACL
    • 儲存貯體擁有者偏好 – 儲存貯體擁有者擁有並完全控制其他帳戶使用 bucket-owner-full-control 標準 ACL 寫入儲存貯體的新物件。

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

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

  6. 選擇儲存

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

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

aws s3api put-bucket-ownership-controls --bucket DOC-EXAMPLE-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中的〈〉。

若要使用 REST API 將「物件擁有權」設定套用至現有的 S3 儲存貯體,請使用 PutBucketOwnershipControls。如需詳細資訊,請參閱《Amazon Simple Storage Service API 參考》中的 PutBucketOwnershipControls

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