我想要在 Linux 中對使用預設 AWS Key Management Service (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. 選擇 Actions (動作)、Detach Volume (分離磁碟區),然後選擇 Yes, Detach (是,分離)。請注意可用區域。
6. 啟動具有類似作業系統且位於與原始執行個體相同可用區域的救援執行個體。
7. 救援執行個體啟動後,從導覽窗格中選擇 Volumes (磁碟區)。然後,選擇分離的加密根磁碟區。
8. 選擇 Actions (動作)、Attach Volume (連接磁碟區)。
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. 作為 sudoer/root,使用 dd 命令將資料從原始、加密磁碟區 (輸入檔案為 /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. 確認新的、未加密磁碟區正常運作之後,關閉救援執行個體。