亚马逊AWS官方博客
AWS KMS 之 EBS 和 S3 加密最佳实践
本篇主要从AWS安全视角中的数据保护层面对S3和EBS进行加密管理,并结合CloudTrail 和 CloudWatch相结合做到数据加密中的可追溯性,并阐述EBS加密与解密的过程。另外通过本篇你将掌握利用AWS Key Management Service (KMS) 去创建和管理密钥,并管理AWS 服务和应用程序中加密的使用方式,这里主要围绕生产场景常用的AWS服务EBS和S3的最佳实践方法供其参考。
首先我们在此先启用CloudTrail,让其提供给密钥加密管理有对应的记录,方便密钥的监管的合规性要求。
启用与配置CloudTrail 日志功能
登陆AWS管理控制台,点击服务并选中CloudTrail
指定跟踪名称,选择跟踪到所有的区域;并输入对应跟踪器名称:kms-trail,指定对应S3存储桶,如下图
配置CloudWatch与IAM策略
CloudTrail 与S3存储配置好后;在CloudTrail界面,配置其CloudWatch日志,以及IAM策略。
创建KMS Master key
在控制台的服务选项中,选择KMS服务,创建一个Master key,
定义管理权限
指定哪个账户具有管理密钥的权限
定义密钥使用权限
指定哪个账户具有使用密钥的权限
如果这里想通过脚本的方式进行,也可参考下面的json文件配置:
启用密钥轮换功能
在创建Master Key后,需要开启密钥轮换功能,从AWS安全角度以及最佳实践角度,需要将其开启。
AWS EBS 与KMS 集成示例
Amazon EBS 可通过AWS KMS 提供卷加密功能。每个卷均使用 AES-256-XTS 进行加密。这需要两个256位密钥,您可以将它们视为一个512 位密钥。数据密钥在您账户中的客户主密钥下加密。要使Amazon EBS为您加密卷,它必须能够访问 账户中的CMK。您可以通过向Amazon EBS 提供对 CMK 的授权来创建数据密钥 以及加密和解密这些数据密钥。
以下是加密/解密EBS 卷数据的基本步骤:
- Amazon EBS 通过AWS KMS 在 CMK 下获取加密数据密钥,并将加密密钥与卷 元数据一起存储。
- 托管 EC2 实例的服务器从存储中检索加密数据密钥。
- 通过 SSL 调用AWS KMS 以解密加密的数据密钥。AWS KMS 识别 CMK,向队 列中的HSA 发出内部请求以解密数据密钥,并通过 SSL 会话将密钥返回给客 户。
- 已解密数据密钥存储在内存中,用于加密和解密传入和传出附加的 EBS 卷的 所有数据。Amazon EBS 保留加密数据密钥以供以后使用,以防内存中的数据 密钥不再可用。
加密EBS卷资源
创建Volumes
EBS加密成功从volume 页面可以看到对应的加密字段,如下所示
加密EC2 启动卷
刚才我通过KMS 主密钥将其EBS卷进行了加密,接下来我们来看下如何通过KMS将其EC2启动卷进行加密。在对EC2启动卷加密前需要将其停机。
可以看到EC2的启动卷也成功加密了。
S3数据加密
创建存储桶,并上传测试文件,并通过KMS主密钥进行加密:
验证加密
访问对象URL
禁用KMS 主密钥
CloudWatch 监控验证
总结
通过本篇你将掌握KMS对密钥的管理方式,也可以获取如何通过KMS去EC2启动卷、EBS卷、S3存储的加密管理的实践方法,同时也明白在对数据加密的过程中将CloudTrail 和CloudWatch相结合做到在整个实现的过程中起到审计与监控的作用。