2006年,Amazon Simple Storage Service (以下简称Amazon S3)作为AWS发布的第一款公有云服务面世,如今,成千上万的AWS客户在利用S3创造各类激动人心的应用。从企业数据湖、机器学习存储,到HPC、渲染场景中的高性能共享存储,再到广泛的web应用中存储静态资源、日志、文件,Amazon S3以其高扩展性、高持久性、低成本的特性,在云原生架构中发挥了至关重要的作用。
大量的企业的数字资产存储在Amazon S3上,随之而来的问题是我们如何做好S3数据的安全保护?
Amazon S3本身提供了丰富的安全功能,作为企业的安全团队及IT研发、运维团队,应在自上而下的安全策略、基线、操作制定(Due Care)的基础上,积极并持续地评估Amazon S3以及其他AWS服务所提供的各项安全功能,进行自下而上的安全防护措施的设计和落地。
本篇博客将为读者总结Amazon S3相关的访问控制功能,给出通用最佳实践供读者参考,并尝试在S3访问控制的几项主要机制做深入的探讨。
1.Amazon S3的访问控制功能一览
Amazon S3提供了大量访问控制相关的功能,包括但不限于,
- Bucket ACL/Object ACL
- Bucket policy
- IAM policy (principle policy)
- Access Points
- Block Public Access
- Access Analyzer for S3
持续的安全功能发布有时会让客户感到疑惑,这么多的访问控制功能,是否属于过度设计,从易用性上是否打了折扣?
Amazon所践行的十四条领导力准则提到了‘客户至尚’和‘创新简化’,同时Amazon的产品开发方法论也提倡‘Working Backwards’。遵照这些理念,AWS始终站在客户的角度开发客户所需要的服务和功能,也保证了新发布的每个功能都对应着一套原本难以解决的客户挑战。在我们的现实世界中有大量的业务场景,对S3对象存储的访问控制提出了多角度要求,比如如何确保访问者和资源拥有者都能分别从自身需求角度管理访问权限,如何管理多账号甚至跨供应商的S3访问,如何在一个复杂组织中方便而精准地部署细粒度访问控制,如何在强制实施安全策略的同时给到业务、研发部门最大化的灵活度… 正是由于现实世界的需求驱动,才有了当前丰富的访问控制功能,同时每种新功能的发布都会确保对尚未探索该功能的客户的兼容和不受影响。
以下表格尝试将与S3访问控制相关的AWS功能映射到CIA安全模型:
Confidentiality |
Integrity |
Availability |
IAM Policy |
IAM Policy |
3AZ Availability (99.99%) |
Bucket Policy |
Bucket Policy |
11 9’s Durability (99.999999999%) |
ACL |
ACL |
MFA Delete |
Block Public Access |