这些设置对于 S3 中的阻止公共访问设置意味着什么?

Cup*_*fee 3 amazon-s3 amazon-web-services

我正在努力理解 AWS 文档的这一部分,好心人可以帮助用更简单的术语解释这些吗?

这是文档页面 https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html

阻止公共访问的四个设置: BlockPublicAclsIgnorePublicAclsBlockPublicPolicyRestrictPublicBuckets

如何BlockPublicAclsIgnorePublicAcls工作的不同?

如何BlockPublicPolicyRestrictPublicBuckets工作的不同?

而下面的段落......该设置将通过还是应用于存储桶?

接入点没有关联的 ACL。如果您将此设置应用于访问点,它将充当到底层存储桶的直通。如果访问点启用了此设置,则通过访问点发出的请求就像底层存储桶启用了此设置一样,无论存储桶是否实际启用了此设置。

Chr*_*ams 6

我可以看到这可能会令人困惑,但是下面的内容应该有助于说明这些的用法。

  • BlockPublicAcls- 这可以防止创建任何新的ACL 或修改现有的ACL,从而实现对对象的公共访问。仅凭这一点,现有的 ACL 就不会受到影响。
  • IgnorePublicAcls - 任何具有公共访问权限的 ACL 操作都将被忽略,这不会阻止它们被创建,但会阻止它们的影响。
  • BlockPublicPolicy - 这可以防止在 S3 存储桶上创建或修改包含公共操作的存储桶策略,存储桶本身仍将允许现有策略。
  • RestrictPublicBuckets - 这将阻止非 AWS 服务或授权用户(例如 IAM 用户或角色)能够公开访问存储桶中的对象。


Mar*_*cin 5

BlockPublicAcls 和 IgnorePublicAcls 的工作方式有何不同?

例如,AWS S3 api 有一个调用,例如put-object have option --acl。有了这个,您不仅可以上传对象,还可以将其公开。

Block Public Access关闭时,呼叫

aws s3api put-object --bucket some-bucket --acl public-read --key test.file
Run Code Online (Sandbox Code Playgroud)

成功,test.file不仅会上传,还会公开。

现在,如果您启用:

  • BlockPublicAcls: 上述API 将失败。任何允许的 API--acl public-read都会被拒绝。所以test.file不会上传。
  • IgnorePublicAcls: API 调用成功。文件已上传,但选项--acl public-read忽略并且文件是私有的。

BlockPublicPolicy 和 RestrictPublicBuckets 的工作方式有何不同?

同样,您可以使用put-bucket-policy来应用公共存储桶策略,例如:

{
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": "*",
         "Action": "s3:GetObject",
         "Resource": "arn:aws:s3:::MyBucket/*"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

aws s3api put-bucket-policy --bucket MyBucket --policy file://policy.json 
Run Code Online (Sandbox Code Playgroud)

现在,如果您启用:

  • BlockPublicPolicy上述API 将失败,因为该策略允许使用公共 API。

  • RestrictPublicBuckets上述API 将成功,并且将应用存储桶策略。但是,该策略将被忽略,并且对象将是私有的。禁用RestrictPublicBuckets将使策略起作用,并且对象将公开可用。

S3 接入点

有一些新方法可以控制对对象的访问。您可以创建自己的端点并使用它,而不是像上面的示例中那样使用 AWS 默认的 S3 端点。例如:

aws s3api put-object --bucket some-bucket --acl public-read --key test.file --endpoint-url https://<endpoint-name>-<account-id>.s3-accesspoint.<region>.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

单个存储桶可以有多个访问点及其端点,用于不同的目的。此外,每个接入点都有自己的 Block Public Access设置和接入点策略(类似于存储桶策略)。Block Public Access访问点中的选项与存储桶的工作方式类似,但您引用的文档中提到了例外情况。