在创建存储桶时设置 Object Ownership
创建存储桶时,您可以配置 S3 Object Ownership。要为现有存储桶设置 Object Ownership,请参阅 为现有存储桶设置对象所有权。
S3 对象所有权是 Amazon S3 Bucket 级设置,您可以使用它禁用 access control lists (ACLs)(访问控制列表 ACL),并获取存储桶中每个对象的所有权,从而简化了对存储在 Amazon S3 中的数据的访问管理。我们建议您禁用 ACL,除非您需要在单个对象级别控制访问权限。
对象所有权有三个设置,您可以使用它来控制上载到存储桶的对象的所有权,并禁用或启用 ACL:
已禁用 ACL
-
强制存储桶拥有者(推荐)— ACL 被禁用,存储桶拥有者自动拥有并完全控制存储桶中的每个对象。ACL 不再影响 S3 Bucket 中对数据的权限。存储桶使用策略来定义访问控制。
已启用 ACL
-
Bucket owner preferred(首选存储桶拥有者)— 存储桶拥有者拥有并完全控制其他账户使用
bucket-owner-full-control
标准 ACL 写入存储桶的新对象。 -
对象写入器(原定设置)— 该 Amazon Web Services 账户 上载对象拥有该对象,对其拥有完全控制权,并且可以通过 ACL 授予其他用户访问该对象的权限。
Permissions(权限):要创建存储桶并为 Object Ownership 选择设置,您必须同时拥有 s3:CreateBucket
和 s3:PutBucketOwnershipControls
权限。有关 Amazon S3 权限的更多信息,请参阅 Amazon S3 的操作、资源和条件键。
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
请选择 Create bucket (创建存储桶)。
此时将打开 Create bucket (创建存储桶) 向导。
-
在 Bucket name (存储桶名称) 中,输入符合 DNS 标准的存储桶名称。
存储桶名称必须满足以下要求:
-
在所有 Amazon S3 中是唯一的。
-
长度必须介于 3 到 63 个字符之间。
-
不包含大写字符。
-
以小写字母或数字开头。
创建存储桶后,便无法再更改其名称。有关如何命名存储桶的信息,请参阅 存储桶命名规则。
重要 避免在存储桶名称中包含敏感信息,如账号。存储桶名称会显示在指向存储桶中的对象的 URL 中。
-
-
对于 Region (区域),请选择要放置存储桶的 Amazon Web Services 区域。
请选择一个靠近您的区域可最大程度地减少延迟和成本以及满足法规要求。在某一地区存储的对象将一直留在该地区,除非您特意将其转移到其他地区。有关 Amazon S3 Amazon Web Services 区域 的列表,请参阅《Amazon Web Services 一般参考》中的 Amazon 服务终端节点。
-
在 Object Ownership(对象所有权)下方,要禁用或启用 ACL,并控制上载到存储桶中的对象的所有权,请选择以下设置之一:
已禁用 ACL
-
Bucket owner enforced(强制存储桶所有者)— ACL 被禁用,存储桶拥有者自动拥有并完全控制存储桶中的每个对象。ACL 不再影响 S3 Bucket 中对数据的权限。存储桶使用策略来定义访问控制。
要通过使用 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 授予其他用户访问该对象的权限。
注意 若要应用 Bucket owner enforced(存储桶所有者强制)设置或 Bucket owner preferred(存储桶所有者首选)设置,必须有以下权限:
s3:CreateBucket
和s3:PutBucketOwnershipControls
。 -
-
在 Bucket settings for Block Public Access (阻止公有访问的存储桶设置) 中,请选择要应用于存储桶的 Block Public Access (阻止公有访问) 设置。
我们建议您将所有设置保持为启用状态,除非您知道您需要为您的使用案例关闭其中一个或多个设置,例如托管公共网站。您为存储桶启用的阻止公有访问设置也将为您在存储桶上创建的所有访问点启用。有关阻止公有访问的更多信息,请参阅 阻止对您的 Amazon S3 存储的公有访问。
-
(可选)如果要启用 S3 对象锁定,请执行以下操作:
-
请选择 Advanced settings (高级设置),然后阅读显示的消息。
重要 您只能在创建存储桶时为其启用 S3 对象锁定。如果您为存储桶启用了对象锁定,则以后无法禁用它。启用对象锁定还会启用存储桶的版本控制。为存储桶启用对象锁定后,必须配置对象锁定原定设置保留和法律保留设置,以保护新对象不被删除或覆盖。有关更多信息,请参阅使用控制台配置 S3 对象锁定。
-
如果要启用对象锁定,请在文本框中输入
enable
并选择 Confirm(确认)。
有关 S3 对象锁定功能的更多信息,请参阅 使用 S3 对象锁定。
注意 要创建启用对象锁定的存储桶,您必须具有以下权限:s3:CreateBucket、s3:PutBucketVersioning 和 S3:PutBucketObjectLockConfiguration。
-
-
请选择创建存储桶。
要在创建新存储桶时设置 Object Ownership,请使用带有 --object-ownership
参数的 create-bucket
Amazon CLI 命令。
下面的例子使用 Amazon CLI 为新存储桶应用了存储桶拥有者的强制设置:
aws s3api create-bucket --bucket
DOC-EXAMPLE-BUCKET
--regionus-east-1
--object-ownership BucketOwnerEnforced
下面的例子使用 Amazon SDK for Java 为新存储桶设置了存储桶拥有者的强制设置:
// Build the ObjectOwnership for CreateBucket CreateBucketRequest createBucketRequest = CreateBucketRequest.builder() .bucket(bucketName) .objectOwnership(ObjectOwnership.BucketOwnerEnforced) .build() // Send the request to S3 s3client.createBucket(createBucketRequest);
要在创建新存储桶时使用 AWS::S3::Bucket
Amazon CloudFormation 资源,以设置 Object Ownership,请参阅 Amazon CloudFormation 用户指南中的 OwnershipControls within AWS::S3::Bucket。
要为 S3 Object Ownership 应用存储桶拥有者强制设置,请使用带有设置为 BucketOwnerEnforced
的 x-amz-object-ownership
请求标头的 CreateBucket
API 操作。有关信息和示例,请参阅 Amazon Simple Storage Service API Reference 中的 CreateBucket。
Next steps(后续步骤):对 Object Ownership 应用强制的存储桶拥有者或存储桶拥有者首选设置后,您可以进一步执行以下步骤:
-
Bucket owner enforced(存储桶拥有者强制)—通过使用 IAM 或企业策略借助禁用的 ACL 要求创建所有新的存储桶。
-
Bucket owner preferred(存储桶拥有者首选)—添加 S3 Bucket 策略,要求将所有对象上载到存储桶中都需要
bucket-owner-full-control
预定义 ACL。