【问题标题】:What does these settings mean for Block Public Access settings in S3?这些设置对 S3 中的阻止公共访问设置意味着什么?
【发布时间】:2021-01-25 22:42:48
【问题描述】:

我正在为理解 AWS 文档的这一部分而苦恼,能否帮助用更简单的术语解释这些内容?

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

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

BlockPublicAclsIgnorePublicAcls 的工作方式有何不同?

BlockPublicPolicyRestrictPublicBuckets 的工作方式有何不同?

下面的段落...设置将传递或应用于存储桶?

接入点没有与之关联的 ACL。如果你应用这个 设置为接入点,它充当底层的直通 桶。如果接入点启用了此设置,则发出的请求 通过访问点的行为就好像底层存储桶具有 启用此设置,无论存储桶是否实际具有 此设置已启用。

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!这更容易理解!
    • 没问题,祝你有美好的一天:)
    【解决方案2】:

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

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

    Block Public Access 关闭时,调用

    aws s3api put-object --bucket some-bucket --acl public-read --key test.file
    

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

    现在,如果您启用:

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

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

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

    {
       "Statement": [
          {
             "Effect": "Allow",
             "Principal": "*",
             "Action": "s3:GetObject",
             "Resource": "arn:aws:s3:::MyBucket/*"
          }
       ]
    }
    

    aws s3api put-bucket-policy --bucket MyBucket --policy file://policy.json 
    

    现在,如果您启用:

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

    • RestrictPublicBuckets上面的API会成功,并且会应用bucket策略。但是,该政策将被忽略,并且对象将是私有的。禁用 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
    

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

    【讨论】:

    • 谢谢!这有很大帮助!我现在对设置有了更好的了解!
    猜你喜欢
    • 2020-01-30
    • 2017-03-31
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2011-01-17
    相关资源
    最近更新 更多