S3安全和加密选项
S3的安全性
- 默认情况下,所有新创建的S3存储桶都是私有的,只有存储桶的创建者/拥有者才能访问
- 你可以通过桶策略(Bucket Policy)和访问控制列表(Access Control Lists)两个方法来控制S3存储桶的安全性
- S3存储桶的访问日志可以存到另一个S3存储桶里面,方便对日志进行查看
S3加密选项
传输过程中的加密(In Transit)
使用SSL/TLS加密,即使用HTTPS而不是HTTP来传输从S3到客户端之间的数据。
处于静态下的加密(At Rest)
- 使用服务器端加密保护数据(Server Side Encryption,SSE)
- 即在Amazon S3将你的数据写入物理磁盘的时候加密这些数据,并在你需要访问这些数据的时候再对其进行解密
- Amazon S3 托管密钥的服务器端加密 (SSE-S3) – 使用256位AES-256加密标准进行加密,并且主密钥会定期轮换
- AWS KMS 托管密钥的服务器端加密 (SSE-KMS) – 使用AWS提供的密钥管理系统,有更多的密钥管理能力
- 服务器端加密与客户提供的密钥一起使用 (SSE-C) – 你来提供和管理加密密钥,S3负责加密和解密
- 使用客户端加密保护数据(Client Side Encryption)
- 在数据发送到Amazon S3之前使用客户端来对数据进行加密
更多参考资料详见在 Amazon S3 中保护数据
S3传输加速
一般来说,我们在上传文件到S3存储桶的时候,是直接通过Internet将数据传输到位于某一个区域的S3存储桶。但如果我们的存储桶位于一个离用户比较远的区域(比如说S3存储桶位于东京区域,而我们的用户位于中国),那么基于Internet的传输速度就会非常慢。
这个时候使用S3传输加速 (Amazon S3 Transfer Acceleration),可以利用AWS CloudFront CDN网络的边缘节点(Edge Locations)加速传输的过程。我们可以将数据上传到离我们最近的边缘节点(比如说香港),然后再通过AWS内部网络(更高速,更稳定)传输到东京区域的S3存储桶。
在以下情形下你可能就需要考虑使用S3传输加速:
- 您位于全球各地的客户需要上传到集中式存储桶
- 您定期跨大洲传输数 GB 至数 TB 数据
- 您在上传到 Amazon S3 时未充分利用 Internet 上的可用带宽
使用S3托管一个静态网站
您可以在 Amazon Simple Storage Service (Amazon S3) 上托管静态网站。这个静态网站可以包含HTML,图片和视频等静态文件,也可以包含客户端脚本。
但是这个静态网站不支持服务端处理的脚本,比如PHP、JSP或者ASP.NET。
假设S3存储桶的名字是aws-cloudbin-com,那么访问其中的index.html文件的路径是
- 普通的S3 URL:https://s3.ap-northeast-2.amazonaws.com/itilv4.cn/index.html
- S3托管的静态网站URL:http://itilv4.cn.s3-website-ap-northeast-2.amazonaws.com
请留意其中的区别,这个内容在SAA考试中经常会涉及。