如何对已加密的 EBS 卷进行解密?
上次更新时间:2020 年 8 月 20 日
我想对使用默认的 AWS Key Management Service (KMS) 客户主密钥 (CMK) 或自定义 CMK 加密的 Amazon Elastic Block Store (Amazon EBS) 卷进行解密。该如何操作?
简短描述
您可以使用临时的 Amazon Elastic Compute Cloud (Amazon EC2) 实例将加密卷复制到未加密的新卷中。然后可以将未加密的卷附加到您的原始实例。
解决方法
注意:以下解决方法将根卷用作示例。您也可以在辅助卷上执行以下步骤。
1. 创建加密根卷的快照或使用加密卷创建实例的 AMI。使用快照和 AMI 在执行任何重大任务前为您的资源提供备份。
2. 打开 Amazon EC2 控制台。
3. 停止具有加密根卷的实例。
4. 在 Description(描述)选项卡中的 Root device(根设备)下,选择根卷,然后选择 EBS ID。记下根设备的名称。
注意:根设备因 AMI 而异。例如,Amazon Linux 1 和 2 使用 /dev/xvda。其他发行版(如 Ubuntu 14、16、18、CentOS7 和 RHEL 7.5)使用 /dev/sda1。
5. 依次选择操作、断开卷,然后选择是,请分离。记下可用区。
6. 使用类似的 OS 在与原始实例相同的可用区中启动救援实例。
7. 启动救援实例后,从导航窗格中选择卷,然后选择已分离且已加密的根卷。
8. 依次选择操作、附加卷。
9. 选择救援实例 ID (id-xxxx),并将已加密的卷附加到 /dev/xvdf 或 /dev/sdf。
10. 在与原始的加密卷相同的可用区中创建未加密的新卷。
重要提示 :为避免数据丢失,请确认您的新卷大小大于加密卷的大小。
11. 将未加密的新卷作为 /dev/xvdg 或 /dev/sdg 附加到救援实例。
12. 连接救援实例,并使用 lsblk 命令确认根设备和两个附加的卷存在。
$lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 8G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 8G 0 disk
└─xvdf1 202:81 0 8G 0 part
xvdg 202:96 0 8G 0 disk
13. 将 dd 命令用作 sudoer/root,以将原始的已加密卷(输入文件为 /dev/xvdf)移动到未加密的新卷(输出文件为 /dev/xvdg)中。
#dd if=/dev/xvdf of=/dev/xvdg bs=4096 status=progress
注意:数据传输时间根据卷和实例的大小和类型而不同。
14. 将新的未加密卷 (/dev/xvdg) 与救援实例分离,然后将其作为 /dev/xvda 或 /dev/sda1 挂载到原始实例。
15. 连接原始实例,以确认实例读取了未加密(复制)的新根卷。
16. 为确保根卷现在没有加密,请在 Amazon EC2 控制台中选择原始实例,然后查看卷的属性。
注意:您可能需要重启或停止并启动实例来分区更改注册到内核中。
17. 对原始实例上的任何其他加密卷重复该过程,以创建未加密的“克隆”卷。
18. 在确认未加密的新卷运行正常后,关闭救援实例。