將受 HSM 保護的金鑰匯入受控 HSM (BYOK)
Azure Key Vault 受控 HSM 支援匯入在內部部署硬體安全模組 (HSM) 中產生的金鑰;金鑰永遠不會離開 HSM 保護界限。 此案例通常稱為「攜帶您自己的金鑰」(BYOK)。 受控 HSM 會使用 Marvell LiquidSecurity HSM 介面卡 (已通過 FIPS 140-2 層級 3 驗證) 來保護您的金鑰。
使用本文中的資訊,協助您規劃、產生並傳輸受 HSM 保護的金鑰,以搭配受控 HSM 使用。
注意
此功能不適用於由 21Vianet 營運的 Microsoft Azure。 此匯入方法僅適用於支援的 HSM。
如需詳細資訊,以及開始使用受控 HSM 的教學課程,請參閱什麼是受控 HSM?。
概觀
以下是流程概觀。 本文稍後會說明要完成的特定步驟。
- 在受控 HSM 中產生金鑰 (稱為「金鑰交換金鑰」(KEK))。 KEK 必須是只能進行
import
金鑰作業的 RSA HSM 金鑰。 - 將 KEK 金鑰下載為 .pem 檔案。
- 將 KEK 公開金鑰傳送至連線到內部部署 HSM 的離線電腦。
- 在離線電腦中,使用 HSM 廠商提供的 BYOK 工具來建立 BYOK 檔案。
- 此目標金鑰利用 KEK 加密,且加密狀態會維持到金鑰傳輸至受控 HSM 為止。 只有加密版本的金鑰可以離開內部部署 HSM。
- 在受控 HSM 內產生的 KEK 無法匯出。 HSM 會強制執行規則,指出除了受控 HSM 以外沒有任何明確的 KEK 版本存在。
- KEK 必須位於要匯入目標金鑰的相同受控 HSM 中。
- 將 BYOK 檔案上傳至受控 HSM 時,受控 HSM 會使用 KEK 的私密金鑰來解密目標金鑰內容,並匯入為 HSM 金鑰。 此作業完全在 HSM 內執行。 目標金鑰一律會保留在 HSM 保護界限內。
必要條件
若要使用本文中的 Azure CLI 命名,您必須具有下列項目:
- 訂閱 Microsoft Azure。 如果您沒有帳戶,您可以註冊免費試用。
- Azure CLI 2.12.0 版或更新版本。 執行
az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI 模組。 - 訂用帳戶之支援 HSM 清單中的受控 HSM。 請參閱快速入門:使用 Azure CLI 佈建並啟動受控 HSM,以佈建並啟動受控 HSM。
Azure Cloud Shell
Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。
要啟動 Azure Cloud Shell:
選項 | 範例/連結 |
---|---|
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 | |
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 | |
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 |
若要使用 Azure Cloud Shell:
啟動 Cloud Shell。
選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。
透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。
選取 Enter 鍵執行程式碼或命令。
若要使用 CLI 登入 Azure,請輸入:
az login
若要進一步了解透過 CLI 的登入選項,請參閱使用 Azure CLI 進行登入
支援的 HSM
廠商名稱 | 廠商類型 | 支援的 HSM 模型 | 其他相關資訊 |
---|---|---|---|
Cryptomathic | ISV (企業金鑰管理系統) | 多個 HSM 品牌和型號,包括
|
|
Entrust | 製造商, HSM 即服務 |
|
nCipher 新的 BYOK 工具和文件 |
Fortanix | 製造商, HSM 即服務 |
|
將 SDKMS 金鑰匯出至 BYOK 的雲端提供者 - Azure Key Vault |
IBM | 製造商 | IBM 476x、CryptoExpress | IBM 企業金鑰管理基礎 (英文) |
Marvell | 製造商 | 所有 LiquidSecurity HSM,具有
|
Marvell BYOK 工具和文件 |
Securosys SA | 製造商,HSM 即服務 | Primus HSM 系列,Securosys Clouds HSM | Primus BYOK 工具和文件 |
StorMagic | ISV (企業金鑰管理系統) | 多個 HSM 品牌和型號,包括
|
SvKMS 和 Azure Key Vault BYOK |
Thales | 製造商 |
|
Luna BYOK 工具和文件 |
Utimaco | 製造商, HSM 即服務 |
u.trust Anchor、CryptoServer | Utimaco BYOK 工具與整合指南 |
受支援的金鑰類型
索引鍵名稱 | 金鑰類型 | 金鑰大小/曲線 | 原始來源 | 描述 |
---|---|---|---|---|
金鑰交換金鑰 (KEK) | RSA-HSM | 2048 位元 3072 位元 4096 位元 |
受控 HSM | 在受控 HSM 中產生之受 HSM 支援的 RSA 金鑰組 |
目標金鑰 | ||||
RSA-HSM | 2048 位元 3072 位元 4096 位元 |
廠商 HSM | 要傳輸至受控 HSM 的金鑰 | |
EC-HSM | P-256 P-384 P-521 |
廠商 HSM | 要傳輸至受控 HSM 的金鑰 | |
對稱金鑰 (oct-hsm) | 128 位元 192 位元 256 位元 |
廠商 HSM | 要傳輸至受控 HSM 的金鑰 | |
產生金鑰並傳輸至受控 HSM
步驟 1:產生 KEK
KEK 是在受控 HSM 中產生的 RSA 金鑰。 KEK 用來加密您要匯入的金鑰 (「目標」金鑰)。
KEK 必須是:
- RSA-HSM 金鑰 (2048 位元;3072 位元或 4096 位元)
- 在您要匯入目標金鑰的相同受控 HSM 中產生
- 建立時允許的金鑰作業設定為
import
注意
「匯入」必須是 KEK 唯一允許的金鑰作業。 「匯入」與所有其他金鑰作業互斥。
使用 az keyvault key create 命令,建立將金鑰作業設定為 import
的 KEK。 記錄從下列命令傳回的金鑰識別碼 (kid
)。 (您將使用步驟 3 中的 kid
值。)
az keyvault key create --kty RSA-HSM --size 4096 --name KEKforBYOK --ops import --hsm-name ContosoKeyVaultHSM
步驟 2:下載 KEK 公開金鑰
使用 az keyvault key download 將 KEK 公開金鑰下載至 .pem 檔案。 您匯入的目標金鑰會使用 KEK 公開金鑰加密。
az keyvault key download --name KEKforBYOK --hsm-name ContosoKeyVaultHSM --file KEKforBYOK.publickey.pem
將 KEKforBYOK.publickey.pem 檔案傳送到您的離線電腦。 您會在下一個步驟中使用此檔案。
步驟 3:產生並準備您的金鑰以進行傳輸
請參閱 HSM 廠商的文件,以下載並安裝 BYOK 工具。 遵循 HSM 廠商提供的指示來產生目標金鑰,然後建立金鑰傳輸套件 (BYOK 檔案)。 BYOK 工具會使用步驟 1 的 kid
以及步驟 2 中下載的 KEKforBYOK.publickey.pem 檔案,在 BYOK 檔案中產生加密的目標金鑰。
將 BYOK 檔案傳送到已連線的電腦。
注意
不支援匯入 RSA 1024 位元金鑰。 支援匯入 EC-HSM P256K 金鑰。
已知問題:只有韌體 7.4.0 或更新版本才支援從 Luna HSM 匯入 RSA 4K 目標金鑰。
步驟 4:將金鑰傳輸至受控 HSM
若要完成金鑰匯入,請將金鑰傳輸套件 (BYOK 檔案) 從已中斷連線的電腦傳輸到連線網際網路的電腦。 使用 az keyvault key import 命令,將 BYOK 檔案上傳至受控 HSM。
az keyvault key import --hsm-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file KeyTransferPackage-ContosoFirstHSMkey.byok
如果上傳成功,Azure CLI 會顯示匯入金鑰的屬性。
下一步
您現在可以在受控 HSM 中使用這個受 HSM 保護的金鑰。 如需詳細資訊,請參閱本價格和功能比較。