amazon-ec2 - AWS CMK vs Data Key 澄清问题
问题描述
我是 AWS 的新手,我希望有人可以为我澄清一些关于加密的事情。
我正在阅读有关 Amazon EBS 加密的 AWS 文档,在文档中,在“ EBS 加密的工作原理”部分下,我注意到其中一个步骤是“ Amazon EBS 向 AWS KMS 发送 GenerateDataKeyWithoutPlaintext 请求,指定用于加密的 CMK音量“
CMK 不应该加密然后用于加密卷的数据密钥吗?这是因为 CMK 无法加密大小超过 4KB 的数据。
我理解的方式是,CMK(位于 KMS 中)将加密没有 CMK 大小限制的数据密钥,然后数据密钥将加密 EC2 实例的卷并坐在同一个加密卷,因为数据密钥本身也是加密的。
我没有正确理解这一步吗?
文档链接:https ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html?icmpid=docs_ec2_console
解决方案
是的,您是正确的,数据密钥将用于加密卷[并且 CMK 本身不会直接使用]。我相信你引用的声明:
Amazon EBS 向 AWS KMS 发送 GenerateDataKeyWithoutPlaintext 请求,指定您为卷加密选择的 CMK。
可以理解为:EBS调用GenerateDataKeyWithoutPlaintext API,从KMS获取数据密钥,EBS需要指定CMK。KeyId 是GenerateDataKeyWithoutPlaintext API 的必需参数。我相信文档中的下一步(如下所述)确实说明了这一点并消除了混淆。
AWS KMS 生成一个新的数据密钥,使用您为卷加密选择的 CMK 对其进行加密,并将加密的数据密钥发送到 Amazon EBS 以与卷元数据一起存储。
如果您想知道为什么调用 GenerateDataKeyWithoutPlaintext 而不是 GenerateDataKey,这篇AWS 论坛帖子非常有趣。
推荐阅读
- python - 如何根据范围生成列值
- android - Android ConstraintLayout TextView 不包装在 chain_style 包装的水平
- powershell - 无法在 PowerShell 5.1 中使用客户端证书身份验证
- swift - 枚举中的静态属性
- node.js - 将 Node js 与对话框流集成的问题
- oracle - 试图在 UNIX 变量中存储 PL/SQL 块的值
- html - 为什么 AdBlock 会在 symfony 中阻止我的 Header?
- javascript - 我们如何从赛普拉斯的一个文件夹中读取多个文件?
- swiftui - 相对于另一个居中视图定位视图
- node.js - Node.js API 服务器 - 无法构建