設定現有儲存貯體的「物件擁有權」 - 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 寫入儲存貯體的新物件。

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

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

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

如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可

  1. 登入 AWS 管理主控台,並開啟位於 https://console.aws.amazon.com/s3/ 的 Amazon 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 的物件上傳。

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

  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

此範例會使用 適用於 Java 的 AWS SDK 為現有儲存貯體套用「物件擁有權」的 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);

若要使用 CloudFormation 針對現有儲存貯體套用物件擁有權設定,請參閱《AWS CloudFormation 使用者指南》中的 AWS::S3::Bucket OwnershipControls

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

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