为现有桶设置对象所有权
您可以在现有 S3 桶上配置 S3 Object Ownership。要在创建桶时应用对象所有权,请参阅 在创建桶时设置 Object Ownership。
S3 对象所有权是 Amazon S3 桶级设置,您可以使用它禁用 access control lists (ACLs)(访问控制列表 ACL),并获取桶中每个对象的所有权,从而简化了对存储在 Amazon S3 中的数据的访问管理。原定设置情况下,S3 对象所有权设为强制桶拥有者设置,并且对于新桶禁用 ACL。禁用 ACL 后,桶拥有者拥有桶中的每个对象,并使用访问管理策略来专门管理对数据的访问权限。我们建议您将 ACL 保持为禁用状态,除非有必须单独控制每个对象的访问权限的特殊情况。
对象所有权有三个设置,您可以使用它来控制上载到桶的对象的所有权,并禁用或启用 ACL:
已禁用 ACL
-
强制桶拥有者(原定设置)– ACL 已禁用,桶拥有者自动拥有并完全控制桶中的每个对象。ACL 不再影响 S3 桶中对数据的权限。桶使用策略来定义访问控制。
已启用 ACL
-
Bucket owner preferred(首选桶拥有者)— 桶拥有者拥有并完全控制其他账户使用
bucket-owner-full-control
标准 ACL 写入桶的新对象。 -
对象写入器— 该 Amazon Web Services 账户 上载对象拥有该对象,对其拥有完全控制权,并且可以通过 ACL 授予其他用户访问该对象的权限。
先决条件:在应用强制桶拥有者设置以禁用 ACL 之前,您必须将桶 ACL 权限迁移到桶策略并将桶 ACL 重置为原定设置私有 ACL。我们还建议您将对象 ACL 权限迁移到桶策略,并编辑需要桶拥有者完全控制 ACL 以外的 ACL 的桶策略。有关更多信息,请参阅禁用 ACL 的先决条件。
Permissions(权限):要使用此操作,您必须拥有 s3:PutBucketOwnershipControls
权限。有关 Amazon S3 权限的更多信息,请参阅 Amazon S3 的操作、资源和条件键。
-
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在 Buckets(桶)列表中,请选择要将 S3 对象所有权设置应用到的桶的名称。
-
选择 Permissions 选项卡。
-
在 Object Ownership(对象所有权)下方,请选择 Edit(编辑)。
-
在 Object Ownership(对象所有权)下方,要禁用或启用 ACL,并控制上载到桶中的对象的所有权,请选择以下设置之一:
已禁用 ACL
-
Bucket owner enforced(强制桶所有者)— ACL 被禁用,桶拥有者自动拥有并完全控制桶中的每个对象。ACL 不再影响 S3 桶中对数据的权限。桶使用策略来定义访问控制。
要通过使用 IAM 或 Amazon Organizations 策略借助禁用的 ACL 要求创建所有新的桶,请参阅 禁用所有新桶的 ACL(强制执行桶拥有者)。
已启用 ACL
-
Bucket owner preferred(首选桶拥有者)— 桶拥有者拥有并完全控制其他账户使用
bucket-owner-full-control
标准 ACL 写入桶的新对象。如果应用桶所有者首选设置,以要求所有的 Amazon S3 上载都包含
bucket-owner-full-control
存储的 ACL,可以 add a bucket policy(添加桶策略),该策略只允许对象使用此 ACL 上载。 -
对象写入器— 该 Amazon Web Services 账户 上载对象拥有该对象,对其拥有完全控制权,并且可以通过 ACL 授予其他用户访问该对象的权限。
-
-
请选择保存。
要为现有桶应用 Object Ownership 设置,请使用带有 --ownership-controls
参数的 put-bucket-ownership-controls
命令。所有权的有效值为 BucketOwnerEnforced
、BucketOwnerPreferred
或 ObjectWriter
。
下面的例子使用 Amazon CLI 为现有的桶应用“强制桶拥有者”设置:
aws s3api put-bucket-ownership-controls --bucket
DOC-EXAMPLE-BUCKET
--ownership-controls="Rules=[{ObjectOwnership=BucketOwnerEnforced}]"
有关 put-bucket-ownership-controls
的信息,请参阅《Amazon Command Line Interface 用户指南》中的 put-bucket-ownership-controls
此示例使用 Amazon 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);
要使用 Amazon CloudFormation 以便为现有桶应用对象所有权设置,请参阅《Amazon CloudFormation 用户指南》中的 AWS::S3::Bucket OwnershipControls。
要使用 REST API 将 Object Ownership 设置应用于现有 S3 桶,请使用 PutBucketOwnershipControls
。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 PutBucketOwnershipControls。
Next steps(后续步骤):对 Object Ownership 应用强制的桶拥有者或桶拥有者首选设置后,您可以进一步执行以下步骤:
-
Bucket owner enforced(桶拥有者强制)—通过使用 IAM 或企业策略借助禁用的 ACL 要求创建所有新的桶。
-
Bucket owner preferred(桶拥有者首选)—添加 S3 桶策略,要求将所有对象上载到桶中都需要
bucket-owner-full-control
预定义 ACL。