Amazon EBS 加密的工作原理
您可以加密 EC2 实例的引导卷和数据卷。
在创建加密的 EBS 卷并将其附加到支持的实例类型后,将对以下类型的数据进行加密:
-
卷中的静态数据
-
在卷和实例之间移动的所有数据
-
从卷创建的所有快照
-
从这些快照创建的所有卷
Amazon EBS 通过数据密钥使用行业标准的 AES-256 数据加密来加密卷。数据密钥由 Amazon KMS 生成,然后由 Amazon KMS 使用 Amazon KMS 密钥加密,然后再与您的卷信息一起存储。Amazon EBS 会自动在您创建 Amazon EBS 资源的每个区域中创建唯一 Amazon 托管式密钥。KMS 密钥的别名是 aws/ebs。默认情况下,Amazon EBS 使用此 KMS 密钥 进行加密。或者,您可以使用自己创建的对称客户管理加密密钥。使用您自己的 KMS 密钥 可以提高灵活性,包括提供创建、轮换和禁用 KMS 密钥 的能力。
根据用于创建加密卷的快照是加密还是未加密,Amazon EC2 和 Amazon KMS 结合使用以稍有不同的方式对 EBS 卷进行加密和解密。
快照加密时 EBS 加密的工作原理
当您从自己拥有的加密快照创建加密卷时,Amazon EC2 和 Amazon KMS 结合使用对 EBS 卷进行加密和解密,如下所示:
-
Amazon EC2 将 GenerateDataKeyWithoutPlaintext 请求发送到 Amazon KMS,并指定您为卷加密选择的 KMS 密钥。
-
如果使用与快照相同的 KMS 密钥加密卷,Amazon KMS 将使用与快照相同的数据密钥,并在同一 KMS 密钥下对其进行加密。如果使用不同的 KMS 密钥加密卷,Amazon KMS 会生成一个新的数据密钥,并在您指定的 KMS 密钥下对其进行加密。加密的数据密钥会发送到 Amazon EBS,并与卷元数据存储在一起。
-
当您将加密卷附加到实例时,Amazon EC2 将 CreateGrant 请求发送到 Amazon KMS,以便它可以解密数据密钥。
-
Amazon KMS 解密加密的数据密钥,然后将解密的数据密钥发送到 Amazon EC2。
-
Amazon EC2 使用 Nitro 硬件中的明文数据密钥来加密卷的磁盘 I/O。只要卷附加到实例,纯文本数据密钥就会保留在内存中。
快照未加密时 EBS 加密的工作原理
当您从未加密的快照创建加密卷时,Amazon EC2 和 Amazon KMS 结合使用对 EBS 卷进行加密和解密,如下所示:
-
Amazon EC2 将 CreateGrant 请求发送到 Amazon KMS,以便它可以对从快照创建的卷进行加密。
-
Amazon EC2 将 GenerateDataKeyWithoutPlaintext 请求发送到 Amazon KMS,并指定您为卷加密选择的 KMS 密钥。
-
Amazon KMS 会生成一个新的数据密钥,在您为卷加密选择的 KMS 密钥下加密该密钥,然后将加密后的数据密钥发送到 Amazon EBS 以便与卷元数据一起存储。
-
Amazon EC2 向 Amazon KMS 发送解密请求以解密加密的数据密钥,然后使用该密钥加密卷数据。
-
当您将加密卷附加到实例时,Amazon EC2 将 CreateGrant 请求发送到 Amazon KMS,以便它可以解密数据密钥。
-
当您将加密卷附加到实例时,Amazon EC2 将 Decrypt 请求发送到 Amazon KMS,同时指定加密的数据密钥。
-
Amazon KMS 解密加密的数据密钥,然后将解密的数据密钥发送到 Amazon EC2。
-
Amazon EC2 使用 Nitro 硬件中的明文数据密钥来加密卷的磁盘 I/O。只要卷附加到实例,纯文本数据密钥就会保留在内存中。
有关更多信息,请参阅 Amazon Key Management Service 开发人员指南中的 Amazon Elastic Block Store(Amazon EBS)如何使用 Amazon KMS 和 Amazon EC2 示例 2。
不可用的 KMS 密钥如何影响数据密钥
当 KMS 密钥不可用时,您可以立即发现(取决于最终一致性)。KMS 密钥的密钥状态会出现变更,以反映其新情况,并且加密操作中使用 KMS 密钥的所有请求都将失败。
当执行让 KMS 密钥不可用的操作时,不会立即对 EC2 实例或连接的 EBS 卷产生影响。卷附加到实例时,Amazon EC2 使用数据密钥(而不是 KMS 密钥),对所有磁盘 I/O 进行加密。
但是,当加密的 EBS 卷从 EC2 实例分离时,Amazon EBS 将从 Nitro 硬件中删除该数据密钥。下次将加密的 EBS 卷附加到 EC2 实例时,附加会失败,因为 Amazon EBS 无法使用 KMS 密钥来解密卷的加密数据密钥。要再次使用 EBS 卷,您必须使该 KMS 密钥可重新使用。
提示
如果不再希望对存储在 EBS 卷中的数据进行访问,该数据使用由 KMS 密钥生成的数据密钥进行加密,但您打算让其无法使用,我们建议您在让 KMS 密钥不可用之前将 EBS 卷与 EC2 实例分离。
有关更多信息,请参见《Amazon Key Management Service 开发人员指南》中的不可用的 KMS 密钥如何影响数据密钥。