本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定現有儲存貯體的「物件擁有權」
您可以在現有 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 的動作、資源和條件金鑰。
如需 S3 資源類型對 S3 API操作的許可的詳細資訊,請參閱 Amazon S3 API操作的必要許可。
-
登入 AWS Management Console 並在 開啟 Amazon S3 主控台https://console.aws.amazon.com/s3/
。 -
在 Buckets (儲存貯體) 清單中,選擇您要將 S3 「物件擁有權」設定套用至其中的儲存貯體名稱。
-
選擇許可索引標籤標籤。
-
在 Object Ownership (物件擁有權) 下,選擇 Edit (編輯)。
-
在物件擁有權 下,若要停用或啟用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。
-
-
選擇 Save (儲存)。
若要針對現有儲存貯體套用「物件擁有權」設定,請使用具有 --ownership-controls
參數的 put-bucket-ownership-controls
命令。擁有權的有效值為 BucketOwnerEnforced
、BucketOwnerPreferred
或 ObjectWriter
。
此範例會使用 AWS CLI為現有儲存貯體套用「儲存貯體擁有者強制執行」設定:
aws s3api put-bucket-ownership-controls --bucket
amzn-s3-demo-bucket
--ownership-controls="Rules=[{ObjectOwnership=BucketOwnerEnforced}]"
如需 put-bucket-ownership-controls
的相關資訊,請參閱。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::S3::Bucket OwnershipControls (在 AWS CloudFormation 使用者指南中)
若要使用 RESTAPI將物件擁有權設定套用至現有的 S3 儲存貯體,請使用 PutBucketOwnershipControls
。如需詳細資訊,請參閱 PutBucketOwnershipControls 在 Amazon Simple Storage Service API參考 中。
後續步驟:套用「物件擁有權」的儲存貯體擁有者強制執行設定或儲存貯體擁有者偏好設定之後,您可以進一步採取下列步驟:
-
已強制執行儲存貯體擁有者 – 需要使用 IAM或 Organizations 政策,以ACLs停用的方式建立所有新儲存貯體。
-
儲存貯體擁有者優先 – 新增 S3 儲存貯體政策,以要求所有物件上傳到儲存貯體ACL的
bucket-owner-full-control
固定。