在组织层面集中控制 S3 Block Public Access(简易西班牙语)

发布: (2025年12月22日 GMT+8 02:00)
5 min read
原文: Dev.to

Source: Dev.to

大家好!👋

我想和大家分享 AWS 的一项新安全功能,我觉得很有趣,但在网络上几乎很少被提及:通过 AWS Organizations 对 S3 存储桶进行公共访问阻止
如果你想阅读此功能的官方公告,可以在这里查看:

为什么这件事引起了我的注意?

主要原因很简单:从组织的管理员账户进行集中控制

老方案

以前(对许多人来说仍然是现在)我们基本上有两种选项来确保存储桶中的对象不会公开暴露:

选项 1:账户级别的阻止

你必须在组织内逐个账户,手动(或使用脚本)在每个账户上启用 Block Public Access。这意味着:

  • 在多个账户中重复配置
  • 人为错误的可能性更大
  • 需要单独监控每个账户
  • 扩展时的复杂性

选项 2:存储桶级别的阻止

更糟糕。这意味着为每个存储桶单独配置已启用的 Block Public Access

  • 费力的手动工作
  • 在大型组织中无法扩展
  • 容易忘记新建的存储桶
  • 对审计来说是噩梦

两种选项都需要持续监控,并且容易出错。

新解决方案

组织层面的政策。

这在实践中意味着什么?

在组织的管理账户中启用预防性控制后,您将获得:

  • 集中控制:所有操作从一个地方管理
  • 自动应用:适用于组织内的所有账户
  • 减少监控:不再需要监控每个账户或每个存储桶

它优雅、简单且高效。

如何实现

  1. 启用 S3 策略类型

    aws organizations enable-policy-type \
        --root-id r-1234 \
        --policy-type S3_POLICY
  2. 验证策略已启用

    {
      "PolicyTypes": [
        {
          "Type": "S3_POLICY",
          "Status": "ENABLED"
        }
      ]
    }
  3. 在控制台创建策略

    控制台中已启用的 S3 策略

    这意味着你已经可以创建策略,但并不表示公共阻止已经生效。

  4. 验证行为

    • 我在 S3 上创建了一个托管网站。
    • 我在存储桶级别和账户级别取消了公共阻止。
    • 我在存储桶中配置了一个非常宽松的资源策略,以便能够从互联网访问该网站。

    未阻止的公共网站

  5. 使用基础设施即代码部署策略

    用于 S3 策略的 CloudFormation 模板

  6. 检查公共阻止是否已激活

    在为整个组织激活策略后,网站显示错误,确认公共阻止已启用。

    公共访问被阻止的错误

演示

我刚刚在我的 GitHub 上发布了使用 CloudFormation 的 S3 策略部署模板:

结束语

此实现是完美的,如果:

  • 在组织中管理多个 AWS 账户
  • 希望在不增加运维负担的情况下加强安全
  • 寻求可扩展地遵循安全策略
  • 更倾向于预防而非检测

附加建议: 如果您已经启用了公共阻止

在账户层面,保持它,这样您将拥有额外的一层安全防护(深度防御)。

有问题吗?有建议吗?欢迎在评论区留言!💬

Tags: #aws #cloudformation #security #devops #s3 #organizations

Back to Blog

相关文章

阅读更多 »