使用儲存在 Azure Key Vault 受控 HSM 中的客戶自控金鑰來設定加密

Azure 儲存體會加密待用儲存體帳戶中的所有資料。 根據預設,資料是以使用 Microsoft 管理的金鑰加密。 若要進一步控制加密金鑰,您可以管理自己的金鑰。 客戶自控金鑰必須儲存在 Azure Key Vault 或 Key Vault 受控硬體安全性模組 (HSM)。 Azure Key Vault 受控 HSM 是經過 FIPS 140-2 層級 3 驗證的 HSM。

本文說明如何使用 Azure CLI,透過儲存在受控 HSM 中的客戶自控金鑰來設定加密。 若要了解如何使用儲存在金鑰保存庫的客戶自控金鑰來設定加密,請參閱使用儲存在 Azure Key Vault 中的客戶自控金鑰來設定加密

注意

Azure Key Vault 和 Azure Key Vault 受控 HSM 支援使用相同的 API 和管理介面進行設定。

將身分識別指派給儲存體帳戶

首先,將系統指派的受控識別指派給儲存體帳戶。 您將使用此受控識別來授與儲存體帳戶權限,以存取受控 HSM。 如需系統指派的受控識別相關詳細資訊,請參閱什麼是適用於 Azure 資源的受控識別?

若要使用 Azure CLI 指派受控識別,請呼叫 az storage account update。 請記得使用您自己的值來取代括弧中的預留位置值:

az storage account update \
    --name <storage-account> \
    --resource-group <resource_group> \
    --assign-identity

將角色指派給儲存體帳戶,以存取受控 HSM

接下來,將受控 HSM 加密服務加密使用者角色指派給儲存體帳戶的受控識別,讓儲存體帳戶具有受控 HSM 的使用權限。 Microsoft 建議您將角色指派的範圍設為個別金鑰層級,以便盡可能將最少的權限授與受控識別。

若要建立儲存體帳戶的角色指派,請呼叫 az key vault role assignment create。 請記得將括弧中的預留位置值取代為您自己的值。

storage_account_principal = $(az storage account show \
    --name <storage-account> \
    --resource-group <resource-group> \
    --query identity.principalId \
    --output tsv)

az keyvault role assignment create \
    --hsm-name <hsm-name> \
    --role "Managed HSM Crypto Service Encryption User" \
    --assignee $storage_account_principal \
    --scope /keys/<key-name>

使用受控 HSM 中的金鑰設定加密

最後,使用客戶自控金鑰來設定 Azure 儲存體加密,以使用儲存在受控 HSM 中的金鑰。 支援的金鑰類型包括 RSA-HSM 金鑰,大小為 2048、3072 和 4096。 若要了解如何在受控 HSM 中建立金鑰,請參閱建立 HSM 金鑰

安裝 Azure CLI 2.12.0 或更新版本,將加密設定為使用受控 HSM 中的客戶自控金鑰。 如需詳細資訊,請參閱 安裝 Azure CLI

若要自動更新客戶自控金鑰的金鑰版本,請在您設定加密使用儲存體帳戶的客戶自控金鑰時,省略金鑰版本。 如需設定自動金鑰輪替加密的詳細資訊,請參閱更新金鑰版本

接下來,呼叫 az storage account update 以更新儲存體帳戶的加密設定,如下列範例所示。 納入 --encryption-key-source parameter 並設為 Microsoft.Keyvault 以啟用帳戶的客戶自控金鑰。 請記得將括弧中的預留位置值取代為您自己的值。

hsmurl = $(az keyvault show \
    --hsm-name <hsm-name> \
    --query properties.hsmUri \
    --output tsv)

az storage account update \
    --name <storage-account> \
    --resource-group <resource_group> \
    --encryption-key-name <key> \
    --encryption-key-source Microsoft.Keyvault \
    --encryption-key-vault $hsmurl

若要手動更新客戶自控金鑰的版本,請在設定儲存體帳戶的加密時包含金鑰版本:

az storage account update
    --name <storage-account> \
    --resource-group <resource_group> \
    --encryption-key-name <key> \
    --encryption-key-version $key_version \
    --encryption-key-source Microsoft.Keyvault \
    --encryption-key-vault $hsmurl

在手動更新金鑰版本時,您必須將儲存體帳戶的加密設定更新為使用新的版本。 首先,呼叫 az keyvault show 以查詢金鑰保存庫 URI,然後呼叫 az keyvault key list-versions 以查詢金鑰版本。 接著呼叫 az storage account update,更新儲存體帳戶的加密設定以使用新版本的金鑰,如先前範例所示。

後續步驟