阻止公开访问并设置存储桶策略
防止 S3 对象意外公开。
阻止公开访问并设置存储桶策略 是 CoddyKit 上的免费 AWS Security Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Security Academy 课程共包含 4 节课。
最常见的泄露事件
配置错误的S3(简单存储服务)存储桶导致数据泄露,是最常见的云安全事件之一。一个错误的设置,就可能让整个互联网访问数百万个对象。
S3 默认是私有的,但多层权限可能会意外将其公开。理解这些权限层级是必备的安全知识。
S3 访问层级
可以通过多种机制授予对 S3 对象的访问权限:
- 用户和角色上的IAM 策略。
- 附加到存储桶的存储桶策略。
- 存储桶和对象上的ACL(访问控制列表)。
- 可以覆盖其他设置的阻止公开访问设置。
公开暴露通常是由于存储桶策略或 ACL 配置错误造成的。
阻止公开访问
S3 阻止公开访问(BPA)是总安全开关。启用后,无论存储桶策略或 ACL 中写了什么,只要会授予公开访问,BPA 就会将其覆盖。
AWS 现在默认会为新存储桶启用 BPA。请在账户级别保持启用,这样单个配置错误的策略就无法将数据公开泄露。
BPA 的工作方式
BPA 包含四项独立设置,分别用于阻止公开 ACL、忽略现有公开 ACL、阻止公开存储桶策略,以及限制通过任何访问点进行的公开访问。
这些设置共同构成一道硬性上限:即使有人编写了授予公开读取权限的策略,BPA 也会拒绝该访问。它是防止意外暴露的最强防线。
存储桶策略
存储桶策略是附加到存储桶的基于资源的 JSON 策略。它定义主体可以对哪些对象执行哪些操作,以及需要满足哪些条件。
存储桶策略适用于跨账户访问和精细控制,但粗心地使用 Principal "*" 会向全世界授予访问权限。请仔细检查这些策略。
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}危险的通配符
您刚才看到的代码片段正是数据泄露的表现:Principal "*" 配合 s3:GetObject,会授予所有匿名用户读取所有对象的权限。
除非您确实打算托管公开内容,否则这就是配置错误。阻止公开访问会覆盖该设置,这正是 BPA 安全网的作用。
通过策略强制加密
存储桶策略不仅可以授予访问权限,还可以要求满足安全条件。一种常见模式是拒绝未加密的上传,或拒绝未通过 TLS 传输的上传。
通过在 aws:SecureTransport 或 s3:x-amz-server-side-encryption 上设置条件并使用 Deny,可以强制每次写入都遵循安全的数据处理方式。
按条件限制
条件可以根据上下文收紧策略:仅允许来自特定 VPC 端点、已知 IP 范围或包含 aws:PrincipalOrgID 的组织进行访问。
这些条件键可以让您只授予工作负载所需的确切权限,而不授予更广泛的权限,从而在凭证被滥用时缩小影响范围。
审查您的暴露面
工具可以帮助您在攻击者发现风险之前找到它。IAM Access Analyzer会标记共享给账户外部的存储桶,S3 控制台则会为每个存储桶显示“公开/非公开”指示器。
AWS Config 规则和 Security Hub 可以持续检查每个存储桶是否始终启用了 Block Public Access。
账户级强制实施
在账户级别应用 Block Public Access,而不只是针对单个存储桶,这样它就会自动覆盖所有现有和未来的存储桶。
账户范围的强制实施可以堵住新建存储桶可能被遗漏的漏洞。使用 AWS Config 和 SCP,确保任何人都无法关闭此设置,从架构上杜绝公开暴露。
纵深防御
单一控制措施是不够的。请结合账户级 Block Public Access、最小权限存储桶策略、默认加密和持续审计。
如果某一层配置错误,其他层仍会保护您的数据。分层防护可以将 S3 从常见的数据泄露来源变成可靠的私有存储。
快速检查
找出最强的防护措施。
回顾
S3 配置错误是数据泄露的主要原因之一。访问控制分布在 IAM、存储桶策略、ACL 和总开关 Block Public Access 中;该开关会覆盖任何公开授权,并且应在整个账户范围内保持开启。主体为 "*" 的策略会泄露数据;请改用条件来强制执行 TLS、加密和限定范围的访问。请使用 Access Analyzer、Config 和 Security Hub 持续审计,并依靠纵深防御,避免单个错误暴露您的对象。
常见问题解答
「阻止公开访问并设置存储桶策略」课时是免费的吗?
是的 — 「阻止公开访问并设置存储桶策略」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 AWS Security Academy 课程共包含 4 节课。
「阻止公开访问并设置存储桶策略」这节课中我会学到什么?
防止 S3 对象意外公开。 你通过在浏览器中直接运行的动手代码来练习 AWS Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AWS Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AWS Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「阻止公开访问并设置存储桶策略」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AWS Security Academy 课中编写并运行代码吗?
能。每节 AWS Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 阻止公开访问并设置存储桶策略
- 访问点与对象所有权
- 使用 Amazon Macie 发现敏感数据
- 数据生命周期与安全删除