在组织层面集中控制 S3 Block Public Access(简易西班牙语)
Source: Dev.to
大家好!👋
我想和大家分享 AWS 的一项新安全功能,我觉得很有趣,但在网络上几乎很少被提及:通过 AWS Organizations 对 S3 存储桶进行公共访问阻止。
如果你想阅读此功能的官方公告,可以在这里查看:
为什么这件事引起了我的注意?
主要原因很简单:从组织的管理员账户进行集中控制。
老方案
以前(对许多人来说仍然是现在)我们基本上有两种选项来确保存储桶中的对象不会公开暴露:
选项 1:账户级别的阻止
你必须在组织内逐个账户,手动(或使用脚本)在每个账户上启用 Block Public Access。这意味着:
- 在多个账户中重复配置
- 人为错误的可能性更大
- 需要单独监控每个账户
- 扩展时的复杂性
选项 2:存储桶级别的阻止
更糟糕。这意味着为每个存储桶单独配置已启用的 Block Public Access:
- 费力的手动工作
- 在大型组织中无法扩展
- 容易忘记新建的存储桶
- 对审计来说是噩梦
两种选项都需要持续监控,并且容易出错。
新解决方案
组织层面的政策。
这在实践中意味着什么?
在组织的管理账户中启用预防性控制后,您将获得:
- ✅ 集中控制:所有操作从一个地方管理
- ✅ 自动应用:适用于组织内的所有账户
- ✅ 减少监控:不再需要监控每个账户或每个存储桶
它优雅、简单且高效。
如何实现
-
启用 S3 策略类型
aws organizations enable-policy-type \ --root-id r-1234 \ --policy-type S3_POLICY -
验证策略已启用
{ "PolicyTypes": [ { "Type": "S3_POLICY", "Status": "ENABLED" } ] } -
在控制台创建策略

这意味着你已经可以创建策略,但并不表示公共阻止已经生效。
-
验证行为
- 我在 S3 上创建了一个托管网站。
- 我在存储桶级别和账户级别取消了公共阻止。
- 我在存储桶中配置了一个非常宽松的资源策略,以便能够从互联网访问该网站。

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

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

演示
我刚刚在我的 GitHub 上发布了使用 CloudFormation 的 S3 策略部署模板:
结束语
此实现是完美的,如果:
- 在组织中管理多个 AWS 账户
- 希望在不增加运维负担的情况下加强安全
- 寻求可扩展地遵循安全策略
- 更倾向于预防而非检测
附加建议: 如果您已经启用了公共阻止
在账户层面,保持它,这样您将拥有额外的一层安全防护(深度防御)。
有问题吗?有建议吗?欢迎在评论区留言!💬
Tags: #aws #cloudformation #security #devops #s3 #organizations