【编者按】近日,AWS官方博客发布博文表示AWS云服务提供了全新的S3加密方法和密钥管理服务。除了原先的客户端加密密钥和服务器端加密密钥外,现在还提供了用户自定义的加密密钥的加密方式。使用起来非常简单,您只需简单的提供你的加密密钥作为PUT的一部分,剩下将由S3为您完成。
订阅“AWS中文技术社区”微信公众号,实时掌握AWS技术及产品消息!
AWS中文技术社区为广大开发者提供了一个Amazon Web Service技术交流平台,推送AWS最新资讯、技术视频、技术文档、精彩技术博文等相关精彩内容,更有AWS社区专家与您直接沟通交流!快加入AWS中文技术社区,更快更好的了解AWS云计算技术。
以下为译文:
在Amazon S3中存储了数以亿计的数据,每秒的访问量达到了百万次。
随着S3用户量的增长,我们需要额外的方法来保护动态(发送或接受给S3的数据)或静态(存储在S3上的数据)的数据请求。但是,我们需要这个方法能够满足SSL的使用要求,因为S3从一开始就对SSL提供了支持。对于静态数据的保护,我们有如下几个选择。第一,在客户端环境下,使用客户端加密密钥来加密数据。这个方法仅针对在Ruby和Java上使用AWS SDKs的用户。第二个选项是所有用户都可以使用的,即使用服务器端加密密钥。
现在,我们又提供第三个选项,用户自定义加密密钥来加密数据。用户可以使用现存的服务器端加密密钥模型并且让AWS来管理用户的密码,也可以自行管理密码并从服务器端的加密密钥服务中获得帮助。
现在,您可以使用您自己管理的密钥在S3上存储数据,而无需像许多用户曾经做过的一样,需要构建,维护和扩展自己的客户端加密的队列。
使用自己的密钥
我们可以通过S3 API来使用这个新的方法。这个方法使用起来非常简单,您只需简单的提供你的加密密钥作为PUT的一部分,剩下将由S3为您完成。它会使用您的密钥和AES-256来加密您的数据,并计算出单向散列(校验),然后迅速从内存中删除您的密钥数据。最后,它会返回一个校验和作为响应,并把校验和与该对象存储在一起。具体流程如下:
当您需要数据时,您只需提供相同的密钥作为GET的一部分。S3将会对数据进行解码(在验证了存储的校验和和提供的匹配后)并返回解码后的对象。然后,迅速从内存中删除与密钥有关的数据。
密钥的管理
现在您也可以管理您自己的密钥了,但是请确定您清楚您的每一个密钥是属于哪一个数据的。您可以将您的密钥存放在本地,也可以使用AWS Cloud HSM来存放密钥。AWS Cloud HSM使用专用硬件来帮助您满足对企业,合同和遵从法规所需要的对数据安全的要求。
如果您启用了S3的版本控制功能并存储了多版本的数据,请始终确定这些数据、数据版本和密钥之间的关系,以便在您需要对特定版本的数据解密时能够使用正确的密钥。同样的,如果您使用S3生命周期的规则将数据转移到Glacier上,那么您首先必须将对象恢复到S3,然后使用加密密钥来恢复对象。
如果你需要更改数据的密钥,你可以使用S3的复制操作,并将新的密钥作为参数。当然,你也可以在你的密钥管理系统中记录这一变化。
准备加密吧
这个功能现在已经可以使用了。这个加密方法不需要额外付费,而且对于PUT和GET的性能没有明显的影响。更多详细信息,请查看 Server Side Encryption With Customer Keys.
原文链接: Use Your own Encryption Keys with S3's Server-Side Encryption
如您需要了解AWS最新资讯或是技术文档可访问AWS中文技术社区;如您有更多的疑问请在AWS技术论坛提出,稍后会有专家进行答疑。
(译者/陈晓晓责编/王玉平)