阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

AWS KMS 之 EBS 和 S3 加密最佳实践

  • 2019-11-25
  • 本文字数:2412 字

    阅读完需:约 8 分钟

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 文件配置:


Json


{    "Id": "key-consolepolicy-3",    "Version": "2012-10-17",    "Statement": [        {            "Sid": "Enable IAM User Permissions",            "Effect": "Allow",            "Principal": {                "AWS": "arn:aws:iam::AccountID:root"            },            "Action": "kms:*",            "Resource": "*"        },        {            "Sid": "Allow access for Key Administrators",            "Effect": "Allow",            "Principal": {                "AWS": "arn:aws:iam:: AccountID:user/awsent"            },            "Action": [                "kms:Create*",                "kms:Describe*",                "kms:Enable*",                "kms:List*",                "kms:Put*",                "kms:Update*",                "kms:Revoke*",                "kms:Disable*",                "kms:Get*",                "kms:Delete*",                "kms:TagResource",                "kms:UntagResource",                "kms:ScheduleKeyDeletion",                "kms:CancelKeyDeletion"            ],            "Resource": "*"        },        {            "Sid": "Allow use of the key",            "Effect": "Allow",            "Principal": {                "AWS": "arn:aws:iam:: AccountID:user/awsent"            },            "Action": [                "kms:Encrypt",                "kms:Decrypt",                "kms:ReEncrypt*",                "kms:GenerateDataKey*",                "kms:DescribeKey"            ],            "Resource": "*"        },        {            "Sid": "Allow attachment of persistent resources",            "Effect": "Allow",            "Principal": {                "AWS": "arn:aws:iam:: AccountID:user/awsent"            },            "Action": [                "kms:CreateGrant",                "kms:ListGrants",                "kms:RevokeGrant"            ],            "Resource": "*",            "Condition": {                "Bool": {                    "kms:GrantIsForAWSResource": "true"                }            }        }    ]}
复制代码


启用密钥轮换功能

在创建 Master Key 后,需要开启密钥轮换功能,从 AWS 安全角度以及最佳实践角度,需要将其开启。





AWS EBS 与 KMS 集成示例

Amazon EBS 可通过 AWS KMS 提供卷加密功能。每个卷均使用 AES-256-XTS 进行加密。这需要两个 256 位密钥,您可以将它们视为一个 512 位密钥。数据密钥在您账户中的客户主密钥下加密。要使 Amazon EBS 为您加密卷,它必须能够访问 账户中的 CMK。您可以通过向 Amazon EBS 提供对 CMK 的授权来创建数据密钥 以及加密和解密这些数据密钥。



以下是加密/解密 EBS 卷数据的基本步骤:


  1. Amazon EBS 通过 AWS KMS 在 CMK 下获取加密数据密钥,并将加密密钥与卷 元数据一起存储。

  2. 托管 EC2 实例的服务器从存储中检索加密数据密钥。

  3. 通过 SSL 调用 AWS KMS 以解密加密的数据密钥。AWS KMS 识别 CMK,向队 列中的 HSA 发出内部请求以解密数据密钥,并通过 SSL 会话将密钥返回给客 户。

  4. 已解密数据密钥存储在内存中,用于加密和解密传入和传出附加的 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 相结合做到在整个实现的过程中起到审计与监控的作用。


作者介绍:


!



### [](https://amazonaws-china.com/cn/blogs/china/tag/%E7%BD%97%E4%BF%8A/)
亚马逊 AWS 专业服务团队云架构咨询顾问。负责企业客户的云架构设计、迁移、安全和优化,云上自动化运维,容器等相关咨询服务。对云原生技术、区块链等有深入的研究和热情。
复制代码


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/ebs-s3-encryption-best-practices-for-aws-kms/


2019-11-25 08:00832

评论

发布
暂无评论
发现更多内容

手把手教你学Dapr - 6. 发布订阅

MASA技术团队

C# .net 微软 微服务 dapr

手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序

MASA技术团队

C# .net 微软 微服务 dapr

盘点 2021 征文大赛获奖名单公布!

InfoQ写作社区官方

盘点2021 热门活动

手把手教你学Dapr - 8. 绑定

MASA技术团队

C# .net 微软 微服务 dapr

如何提高你的写作技巧

坚果

1月月更

从 ClickHouse 到 ByteHouse:实时数据分析场景下的优化实践

字节跳动数据平台

数据库 字节跳动 Clickhouse 实时数据分析 bytehouse

淘宝小部件 Canvas 渲染流程与原理全解析

阿里巴巴终端技术

小程序 淘宝 渲染

详细图解Netty Reactor启动全流程

bin的技术小屋

微服务 网络编程 中间件 Java IO netty

阿里云弹性计算年度关键词:强劲、突破、开放

阿里云弹性计算

阿里云 弹性计算 计算巢 神龙架构 无影

SpringBoot:如何优雅地进行参数传递、响应数据封装、异常处理?

CRMEB

中国AIOps们,你们究竟是在骗谁?

Geek_f56666

云计算 AIOPS 云服务

深入解析 Apache Pulsar 系列(一):客户端消息确认

Apache Pulsar

开源 架构 云原生 Apache Pulsar 消息中间件

『内存中的操作系统』内存虚拟化又是什么

soolaugust

操作系统 内存

JavaScript 使用 Markdown 制作 PPT

devpoint

markdown 1月月更 slidev

中国AIOps们,你们究竟是在骗谁?

观测观测

AIOPS

全国社保基金理事会副理事长陈文辉一行莅临青藤调研

青藤云安全

【渗透技术】一个渗透测试工具人是怎样操作的

H

网络安全 渗透测试

技术分享| 探索视频感知编码

anyRTC开发者

音视频 WebRTC 视频编码 视频压缩 视频感知编码

MS Office 冷门却实用的技巧及软件安装包分享(文末有福利)

淋雨

Office office365

手把手教你学Dapr - 9. 可观测性

MASA技术团队

C# .net 微软 微服务 dapr

🏆【Alibaba中间件技术系列】「RocketMQ技术专题」Broker服务端自动创建topic的原理分析和问题要点指南

洛神灬殇

RocketMQ 消息队列 Alibaba技术 Apache RocketMQ 1月日更

C#8.0 可空引用类型

MASA技术团队

C# .net 微软 微服务 项目

中国AIOps们,你们究竟是在骗谁?

Geek_2749b8

云计算 AIOPS 云服务

如何定位并修复 HttpCore5 中的 HTTP2 流量控制问题

阿里巴巴云原生

阿里云 云原生 性能测试 PTS

手把手教你学Dapr - 7. Actors

MASA技术团队

C# .net 微软 微服务 dapr

项目动态|Apache Pulsar 2.7.4 版本发布

Apache Pulsar

开源 架构 云原生 中间件 Apache Pulsar

使用轻量应用服务器部署Docsify在线文档平台

阿里云弹性计算

阿里云 轻量应用 征文投稿

Blazor是春天还是寒风里的挣扎

MASA技术团队

C# .net 微软 微服务 blazor

普通开发者,如何成为Apache项目的commiter ?| 人物专访

云智慧AIOps社区

开源 程序员 算法 运维 时序数据

Markdown-it 原理解析

冴羽

前端 markdown vuepress 博客开发 markdown-it

黑客实现ARP欺骗

喀拉峻

黑客 网络安全 WEB安全

AWS KMS 之 EBS 和 S3 加密最佳实践_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章