我想要解密 Linux 中使用預設 AWS Key Management Service (KMS) 金鑰或自訂 KMS 金鑰加密的 Amazon Elastic Block Store (Amazon EBS) 磁碟區。
解決方法
注意: 以下解決方案使用根磁碟區作為例。您也可以在次要磁碟區上執行以下步驟。
若要解密 Amazon EBS 磁碟區,請完成以下步驟:
- 建立加密根磁碟區的快照,或使用加密磁碟區建立執行個體的 Amazon Machine Image (AMI)。
注意: 在執行任何主要任務之前,最佳做法是使用快照和 AMI 來備份資源。
- 開啟 Amazon Elastic Compute Cloud (Amazon EC2) 主控台。
- 停止使用加密根磁碟區的執行個體。
- 在 Storage (儲存空間) 索引標籤上,記下根裝置的名稱,然後選擇 Volume ID (磁碟區 ID)。
注意: 根裝置因 AMI 而異。例如,Amazon Linux 1 和 2 使用 /dev/xvda。其他發行版本,例如 Ubuntu 14、16、18、CentOS7 和 RHEL 7.5,會使用 /dev/sda1。
- 依序選擇 Actions (動作) 和 Detach volume (分離磁碟區)。
- 選擇 Yes, Detach (是,分離),然後記下「可用區域」。
- 在與原始執行個體相同的可用性區域中啟動救援執行個體。
**注意:**使用與用來啟動原始執行個體時類似的作業系統 (OS)。
- 在導覽窗格中,選擇 Volumes (磁碟區),然後選取加密根磁碟區。
- 依序選擇 Actions (動作) 和 Attach volume (連接磁碟區)。
- 在 Instance (執行個體) 中,選擇救援執行個體 ID。
- 在 Device name (裝置名稱) 中,選擇 /dev/xvdf 或 /dev/sdf。
- 在與原始加密磁碟區相同的可用區域中建立新的未加密磁碟區。
重要: 為避免資料遺失,請確認新磁碟區大小大於加密磁碟區的大小。
- 將新的未加密磁碟區以 /dev/xvdg 或 /dev/sdg 的形式附加到救援執行個體。
- 連線至救援執行個體,然後執行 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
- 若要將資料從原始加密磁碟區移至新的未加密磁碟區,請以 sudo 或根使用者身分執行 dd 命令:
dd if=/dev/xvdf of=/dev/xvdg bs=4096 status=progress
注意: 在上面的指令中,輸入檔是 /dev/xvdf,輸出檔是 /dev/xvdg。資料傳輸時間會根據磁碟區和執行個體的大小和類型而有所不同。
從救援執行個體中分離新的未加密 /dev/xvdg 磁碟區,然後將其以 /dev/xvda 或 /dev/sda1 的形式附加到原始執行個體。
連線至原始執行個體以確認執行個體是否可讀取新的未加密根磁碟區。
在 Amazon EC2 主控台上,選取原始執行個體,然後檢視磁碟區的屬性,以確認根磁碟區現在已未加密。
注意: 您可能需要重新啟動或停止並啟動執行個體,才能將分區變更註冊到核心。
針對原始執行個體上的其他加密磁碟區重複此程序,以建立未加密的複製磁碟區。
終止救援執行個體。