阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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:00830

评论

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

看完这篇推特视频怎么下载到手机相册的教程,我又可以了!

frank

twitter

说一个大家都知道的 Spring Boot 小细节!

江南一点雨

Java springboot

阿里大佬纯手写Angular和Spring Boot全栈技能修炼手册

做梦都在改BUG

Java Spring Boot angular 全栈

叹服!华为高工手写344页高性能Java架构核心原理实战大神手册

做梦都在改BUG

Java 架构 高并发

手把手教你成为 TiDB 的 Contributor

TiDB 社区干货传送门

实践案例 故障排查/诊断 TiDB 源码解读

中移链控制台对接4A平台功能验证介绍

BSN研习社

IntelliJ IDEA太重量级了?不妨尝试一下新的IDE工具

Java你猿哥

Java emacs ssm IDEA IntelliJ IDEA

我用Bitmap实现亿级数据统计

Java你猿哥

Java redis 架构 ssm BitMap

聊聊智能语音交互系统

轻口味

AI 三周年连更

太阳能是否能助力LED显示屏节能?

Dylan

节能 LED显示屏 太阳能

Java面试很难?啃完阿里老哥这套Java架构速成笔记,我都能拿30K

Java你猿哥

Java 架构 面试 分布式 java基础

【4.21-4.28】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

一文理清 TiDB 与 MySQL 中的常用字符集及排序规则

TiDB 社区干货传送门

新版本/特性解读 6.x 实践

政务智能办体验升级、乳腺癌创新药加速研发,飞桨和文心大模型驱动应用智能涌现

飞桨PaddlePaddle

百度飞桨

软硬件负载均衡 IP 地址透传

TiDB 社区干货传送门

数据库架构设计 数据库连接

Spring Boot扩展:深入分析 IoC 容器

Java你猿哥

Java spring ssm 架构师 spring ioc

你真的理解 Golang 切片吗?全切片表达式及切片使用技巧

宇宙之一粟

Go 切片 三周年连更

boot-admin整合Quartz实现动态管理定时任务

Java你猿哥

Java 架构 ssm vue admin springboot整合quartz

Alibaba内部首发“M8级”500页微服务架构手册,GitHub上杀疯了

Java你猿哥

Java 架构 微服务 ssm 架构师

汽车电阻:新能源时代来临,车用电阻市场机遇正在显现

华秋电子

IM开发干货分享:IM客户端不同版本兼容运行的技术思路和实践总结

JackJiang

网络编程 即时通讯 即时通讯IM

TiDB x Flink x Iceberg 实时 ODS 实践

TiDB 社区干货传送门

深度学习模型可视化-keras版

AIWeker

Python 深度学习 可视化 keras 三周年连更

eBPF的发展演进---从石器时代到成为神(五)

统信软件

操作系统 Linux Kenel

华秋干货铺 | PCB阻抗计算的可制造性设计

华秋电子

赋能产业新发展,华秋电子携多高层板积极参与成都工博会

华秋电子

TiDB x Flink 数据集成实践

TiDB 社区干货传送门

TiSpark v3.0.3 & v3.1.3 发布

TiDB 社区干货传送门

新版本/特性解读

牛皮!GitHub上标星90.6K的Java面试指南+笔记

Java你猿哥

Java 程序员 面试 ssm java核心知识点

人类 vs AI:玩梗大作战,看看谁是最后的赢家?

LigaAI

测评 ChatGPT 文心一言 GPT-4 企业号 4 月 PK 榜

大白话讲解synchronized锁升级套路

做梦都在改BUG

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