我想对 Linux 中使用默认的 AWS Key Management Service(AWS KMS)密钥或自定义 KMS 密钥加密的 Amazon Elastic Block Store(Amazon EBS)卷进行解密。应如何操作?
简短描述
您可以使用临时的 Amazon Elastic Compute Cloud(Amazon EC2)Linux 实例将加密卷复制到未加密的新卷中。然后可以将未加密的卷附加到您的原始实例。
解决方法
**注意:**以下解决方法将根卷用作示例。您也可以在辅助卷上执行以下步骤。
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. 救援实例启动后,从导航窗格中选择 Volumes(卷)。然后,选择已分离的加密根卷。
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. 在确认未加密的新卷运行正常后,关闭救援实例。