为啥即使禁用了 KMS 密钥,我仍然能够在 EC2 中读取加密的 EBS 卷数据?

Posted

技术标签:

【中文标题】为啥即使禁用了 KMS 密钥,我仍然能够在 EC2 中读取加密的 EBS 卷数据?【英文标题】:Why am I still able to read encrypted EBS volume data in EC2 even after disabling the KMS key?为什么即使禁用了 KMS 密钥,我仍然能够在 EC2 中读取加密的 EBS 卷数据? 【发布时间】:2021-07-15 19:08:51 【问题描述】:

我正在尝试验证 AWS 中 EBS 卷的数据加密。我已使用 KMS 密钥加密了一个 EBS 卷并将其安装在 EC2 实例上。我在这个卷中有一些文件,我希望如果我禁用 KMS 密钥,我将无法读取 EBS 卷中的文件,但这并没有发生。我猜可能是在将 EBS 卷附加到 EC2 实例时,我们需要密钥。之后,即使我们禁用密钥,我们仍然可以读取数据。我的理解正确吗?

【问题讨论】:

当您将卷附加到 EC2 实例时,EBS 会调用 AWS KMS 来解密数据密钥。 EBS 还将加密的数据密钥与卷一起存储。如果您分离卷然后尝试重新附加它会发生什么? 如果 KMS 密钥被禁用,它将不会附加。 很好,这就是我对其设计工作方式的理解。感谢您的确认。 【参考方案1】:

来自docs:

对于每个卷,Amazon EBS 会要求 AWS KMS 生成一个使用您指定的 CMK 加密的唯一数据密钥。 Amazon EBS 将加密的数据密钥与卷一起存储。然后,当您将卷附加到 Amazon EC2 实例时,Amazon EBS 会调用 AWS KMS 来解密数据密钥。 Amazon EBS 使用管理程序内存中的明文数据密钥来加密卷的所有磁盘 I/O。

实例实际上只在启动时调用一次 KMS 并附加卷以解密数据密钥。之后它将其保存在内存中,因为每次调用 KMS 都需要很长时间。因此,只要实例正在运行,您对密钥的操作就无关紧要了。

我的假设是,当您停止并启动实例或将卷附加到另一个实例时,某些事情会失败,因为它会尝试从 KMS 获取密钥。

有关更多详细信息,我建议您查看complete documentation on EBS encryption。

【讨论】:

以上是关于为啥即使禁用了 KMS 密钥,我仍然能够在 EC2 中读取加密的 EBS 卷数据?的主要内容,如果未能解决你的问题,请参考以下文章

错误地禁用了 ec2-user ssh 访问

如何在没有 PEM 密钥的情况下通过 ssh 进入 EC2 实例?

为啥我的 WPF 应用程序禁用了拖放(即使 AllowDrop 为真)?

为啥我不能禁用 ARC(每个单个文件)?

即使在端口转发和禁用防火墙之后,端口 80 仍然被阻止

KMS 加密 - 本地开发