建立已加密的自訂映像檔
當您擁有符合 IBM Cloud® Virtual Private Cloud 基礎架構要求的 qcow2 自訂映像時,即可對其進行加密。 下列程序說明如何使用 QEMU 及您自己的唯一通行詞組,使用 LUKS 加密來加密自訂映像檔。 加密映像檔之後,您可以使用客戶根金鑰 (CRK) 來包裝通行詞組。 當您將影像匯入 IBM Cloud VPC 時,其封裝(或加密)的資料加密金鑰會與影像元數據一同儲存。
建立已加密自訂映像檔的快速方式是使用磁區中的映像檔。 您可以使用此特性,從實例的開機磁區建立自訂映像檔,並指定客戶管理的加密。 如需相關資訊,請參閱 關於從磁區建立映像檔。
您無法在專用型錄或裸機伺服器上使用已加密的自訂映像檔。
如需相關資訊,請參閱 開始使用 SSH 金鑰。
已加密自訂映像檔的運作方式
使用您自己的通行詞組加密自訂映像檔之後,您可以將它上傳至 IBM Cloud Object Storage。 將加密映像檔匯入至 IBM Cloud VPC之前,您需要設定金鑰管理服務 (KMS) 並建立客戶根金鑰 (CRK)。 然後,使用 CRK 來保護您用來加密映像檔的通行詞組。 透過使用 CRK 包裝密鑰通行詞組,您可以建立 KMS 稱為已包裝資料加密金鑰 (WDEK) 的內容。 覆蓋通行詞組資料會加密並保護它,因此您永遠不需要以純文字共用通行詞組。
當您匯入映像檔時,必須為儲存在 KMS 中的客戶根金鑰 (CRK) 指定雲端資源名稱 (CRN)。 您也必須指定已包裝資料加密金鑰 (WDEK) 的密文。 通行詞組一律以加密方式儲存在 WDEK 中。 只有在啟動使用已加密映像檔的虛擬伺服器時,才會解除包裝。
當您準備好佈建具有已加密映像檔的虛擬伺服器時,不需要加密資訊。 CRK 的 WDEK 和 CRN 會隨映像檔一起儲存為 meta 資料。 如需相關資訊,請參閱 關於已加密的自訂映像檔。
加密映像檔處理程序概觀
下列步驟彙總您需要完成才能順利建立及匯入已加密映像檔的高階處理程序。 後續各節提供如何完成步驟的詳細資料。
- 使用 QEMU 及您選擇的通行詞組來建立加密映像檔,以使用 LUKS 加密來加密 qcow2 檔案。
- 將已加密的影像檔上傳至 IBM Cloud Object Storage。
- 佈建金鑰管理服務,建立客戶根金鑰 (CRK),然後使用 CRK 包裝通行詞組,以產生包裝的資料加密金鑰 (WDEK)。
- 請確保您已取得所需的 IBM 授權( Cloud Identity and Access Management ),以便能從 IBM Cloud Object Storage 匯入映像檔,並使您的WDEK可用於資料加密。
- 將映像檔匯入至 IBM Cloud VPC。 您必須指定 IBM Cloud Object Storage 位置、儲存在 KMS 中的 CRK,以及 WDEK 密文。
加密映像檔
在此步驟中,您使用 QEMU 來指定您自己的通行詞組,並使用 LUKS 加密來加密自訂映像檔。
您計劃加密的自訂映像檔必須符合 IBM Cloud VPC 基礎架構的自訂映像檔需求。 確認您已完成下列主題中的映像檔準備需求:
若要完成加密作業,您必須已安裝 QEMU 2.12 版或更新版本。
您必須使用 Linux 或 Windows 作業系統才能完成 QEMU 加密操作指南。 不支援 Mac 作業系統。
使用 QEMU 來建立自訂映像檔的第二個加密 qcow2 檔案,以完成下列步驟。
-
決定您自己用來加密映像檔的通行詞組。 此作業中的範例指令使用通行詞組
abc123。 請保持通行詞組可用。 稍後,您需要包裝通行詞組,以建立已包裝的資料加密金鑰 (WDEK)。 當您將映像檔匯入至 IBM Cloud VPC時,需要 WDEK。 -
使用下列指令來驗證現行 qcow2 自訂映像檔:
qemu-img info my_100G_custom_image.qcow2針對此範例,您將看到類似下列輸出的回應:
image: my_100G_custom_image.qcow2 file format: qcow2 virtual size: 100 GiB (107374182400 bytes) disk size: 1.28 GiB cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false -
建立完全相同大小的新空 qcow2 檔案,並使用 LUKS 加密進行加密。 使用您選擇的通行詞組 (例如,
abc123) 來加密檔案:qemu-img create --object secret,id=sec0,data=abc123 -f qcow2 -o encrypt.format=luks,encrypt.key-secret=sec0 my_100G_custom_image-encrypted.qcow2 100G -
將 qcow2 映像檔
my_100G_custom_image.qcow2轉換為已加密映像檔my_100G_custom_image-encrypted.qcow2。qemu-img convert --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,file.filename=my_100G_custom_image.qcow2 --target-image-opts driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2 -n -p -
比較這兩個檔案,以驗證它們是否相同。
qemu-img compare --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,file.filename=my_100G_custom_image.qcow2 driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2 -p -
檢查檔案是否有錯誤。
qemu-img check --object secret,id=sec0,data=abc123 --image-opts driver=qcow2,encrypt.key-secret=sec0,file.filename=my_100G_custom_image-encrypted.qcow2針對此範例,您將看到類似下列輸出的回應:
No errors were found on the image. 16343/1638400 = 1.00% allocated, 0.00% fragmented, 0.00% compressed clusters Image end offset: 1074790400 -
在新的加密檔案上執行
info,以驗證它是您預期的大小及加密層次。qemu-img info my_100G_custom_image-encrypted.qcow2針對此範例,您將看到類似下列輸出的回應:
image: my_100G_custom_image-encrypted.qcow2 file format: qcow2 virtual size: 100 GiB (107374182400 bytes) disk size: 1.27 GiB cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false
將加密映像檔上傳至 IBM Cloud Object Storage
使用 LUKS 加密及唯一通行詞組來加密映像檔時,您可以完成下列步驟,將它上傳至 IBM Cloud Object Storage:
- 確保自訂的映像檔具有敘述性名稱,以便日後可以輕鬆識別該檔案。
- 在 IBM Cloud Object Storage 儲存區的物件頁面上,按一下上傳。 您可以使用 Aspera 高速傳送外掛程式,來上傳大於 200 MB 的映像檔。
設定金鑰管理服務及金鑰
要將加密的自訂映像檔匯入 IBM Cloud VPC,您需要使用金鑰管理服務。 您也需要客戶根金鑰 (CRK) 和包裝的資料加密金鑰 (WDEK)。 WDEK 是您用來加密影像的密碼短語,該影像已用您的 CRK 進行封裝,因此您的密碼短語僅為您所知。 當啟動使用已加密映像檔的虛擬伺服器實例時,會使用 WDEK 來存取已加密映像檔。
[已棄]用的{: tag-deprecated} Hyper Protect Crypto Services 已棄用。 客戶可在 2027 年 3 月 20 日前使用現有的實體。 如需詳細資訊,請參閱 停用 IBM Cloud Hyper Protect Crypto Services。 為了持續提供保護,請考慮將現有的加密金鑰遷移到專用 Key Protect 實例。 如需詳細資訊,請參閱 遷移指南。
下列清單是金鑰管理必要條件的摘要:
- 佈建支援的金鑰管理服務: Key Protect 或 Hyper Protect Crypto Services。
- 將客戶根金鑰 (CRK) 匯入至金鑰管理服務,或在金鑰管理服務中建立一個金鑰管理服務。
- 使用客戶根金鑰來包裝 (保護) 用來加密映像檔的通行詞組,以建立已包裝的資料加密金鑰 (WDEK)。
下列範例步驟是 Key Protect 的特定步驟,但一般流程也適用於 Hyper Protect Crypto Services。 如果您是使用 Hyper Protect Crypto Services,請參閱 Hyper Protect Crypto Services 資訊,以取得對應的指示。
-
佈建 Key Protect 服務。
配置 Key Protect 服務實例可確保其包含客戶端管理加密所需的最新更新。
-
在 IBM Key Protect中 建立 或 匯入 客戶根金鑰 (CRK)。
藉由檢閱建立及加密金鑰資料的選項,來提前規劃匯入金鑰。 為了增加安全性,您可以啟用安全匯入金鑰資料,方法是在將金鑰資料帶到雲端之前,使用 匯入標記 加密金鑰資料。
-
使用客戶根金鑰 (CRK) 來包裝或保護您使用 LUKS 加密來加密映像檔的唯一通行詞組。 在映像檔加密範例中,我們使用了通行詞組
abc123。-
請確定已安裝 Key Protect CLI 外掛程式,以便您可以產生 WDEK。 如需相關資訊,請參閱安裝 Key Protect CLI 外掛程式。
-
使用 Base64 編碼對通行詞組進行編碼,以準備使用 CRK 進行覆蓋。 執行下列指令,將您的通行詞組替換為
abc123。 需要 -n 參數,以便您不編碼換行字元,這會導致包裝的通行詞組無法運作。echo -n "abc123"|base64針對此範例,您將看到類似下列輸出的回應:
YWJjMTIz -
執行
ibmcloud kp key wrap指令,以 CRK 包裝已編碼的通行詞組。 雖然用來產生加密映像檔的通行詞組在技術上不是資料加密金鑰,但它是 Key Protect 用於包裝和解除包裝資料的術語。 從 Key Protect 傳回的資料稱為 WDEK。 如需相關資訊,請參閱 kp key wrap。ibmcloud kp key wrap KEY_ID -i INSTANCE_ID -p PLAINTEXT其中 KEY_ID 是您要用於包裝的根金鑰 ID,INSTANCE_ID 是識別 Key Protect 服務實例的實例 ID,而 PLAINTEXT 是您編碼的通行詞組。 例如,YWJjMTIz。
針對此範例,您將看到類似下列輸出的回應:
Wrapping key... SUCCESS Ciphertext eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0= -
儲存 WDEK 的密文,或持續保存至儲存體。 當您將加密的影像匯入 IBM Cloud VPC 時,您必須指定 WDEK 密文。
-
IAM 授權必要條件
請確定您已在 IBM Cloud Identity and Access Management中建立必要授權。
- 從 IBM Cloud Identity and Access Management (IAM)、建立授權 Cloud Block Storage (來源服務) 和 您的鑰匙管理服務 (目標服務) 之間。 授權會允許 IBM Cloud 背板服務使用您的 WDEK 進行資料加密。
- 請確定您已在 VPC 的映像檔服務 與 IBM Cloud Object Storage 之間建立 IAM 授權。 指定 基礎架構服務 作為來源服務。 指定 Image Service for VPC 作為資源類型。 指定 IBM Cloud Object Storage 作為目標服務。 授權是讓 VPC 的「映像檔服務」可以存取 IBM Cloud Object Storage中的映像檔。 如需相關資訊,請參閱 授與存取權 IBM Cloud Object Storage 以匯入映像檔。
下一步
順利加密映像檔之後,即會設定 KMS,並建立必要的金鑰,您可以將映像檔 匯入 至 IBM Cloud VPC。 當映像檔在 IBM Cloud VPC中可用時,您可以使用它來佈建實例。 確保您已 授與 IBM Cloud Object Storage 以匯入映像檔。
當您準備好佈建具有已加密映像檔的新虛擬伺服器實例時,不需要任何加密資訊。 包裝的資料加密金鑰 (WDEK) 和客戶根金鑰 (CRK) 的 CRN 會隨映像檔一起儲存為 meta 資料。