使用 Azure Key Vault 和受控識別,為您的 Azure Batch 帳戶設定客戶自控金鑰

根據預設,Azure Batch 會使用平台代控金鑰來加密 Azure Batch 服務中儲存的所有客戶資料,例如憑證、作業/工作中繼資料。 您可以選擇性地使用自己的金鑰,也就是客戶管理的金鑰,來加密儲存在Azure Batch中的資料。

您提供的金鑰必須在 Azure Key Vault 中產生,而且必須使用 Azure 資源的受控識別加以存取。

有兩種類型的受控識別:系統指派和使用者指派

您可以使用系統指派的受控識別來建立 Batch 帳戶,或建立可存取客戶管理金鑰的個別使用者指派受控識別。 檢閱比較表以了解差異,並考慮哪一個選項最適合您的解決方案。 例如,如果您想要使用相同的受控識別來存取多個 Azure 資源,則需要使用者指派的受控識別。 如果不是,與 Batch 帳戶相關聯的系統指派受控識別可能就已足夠。 使用使用者指派的受控識別也可讓您選擇在 Batch 帳戶建立時強制執行客戶管理的金鑰,如下所示。

使用系統指派的受控識別建立 Batch 帳戶

如果不需要個別使用者指派的受控識別,您可以在建立 Batch 帳戶時啟用系統指派的受控識別。

重要

針對客戶資料加密為 Batch 帳戶建立的系統指派受控識別,如本檔所述,無法作為 Batch 集區上的使用者指派受控識別。 如果您想要在 Batch 帳戶和 Batch 集區上使用相同的受控識別,請改用一般使用者指派的受控識別。

Azure 入口網站

Azure 入口網站中,當您建立 Batch 帳戶時,請在 [進階] 索引標籤下的身分識別類型中挑選 [系統指派]。

螢幕擷取畫面:新的 Batch 帳戶,具有系統指派的身分識別類型。

建立帳戶之後,您可以在 [屬性] 區段下的 [身分識別主體識別碼] 欄位中找到唯一的 GUID。 [身分識別類型] 將顯示 System assigned

在 [身分識別主體識別碼] 欄位中顯示唯一 GUID 的螢幕擷取畫面。

您需要此值,才能將此 Batch 帳戶的存取權授與金鑰保存庫。

Azure CLI

建立新的 Batch 帳戶時,請為 --identity 參數指定 SystemAssigned

resourceGroupName='myResourceGroup'
accountName='mybatchaccount'

az batch account create \
    --name $accountName \
    --resource-group $resourceGroupName \
    --locations regionName='West US 2' \
    --identity 'SystemAssigned'

建立帳戶之後,您可以驗證是否已在此帳戶上啟用系統指派的受控識別。 請務必記下 PrincipalId ,因為此值需要授與此 Batch 帳戶存取權給金鑰保存庫。

az batch account show \
    --name $accountName \
    --resource-group $resourceGroupName \
    --query identity

注意

在 Batch 帳戶中建立的系統指派受控識別,僅用於從 Key Vault 擷取客戶自控金鑰。 此身分識別不適用於 Batch 集區。 若要在集區中使用一個使用者指派的受控識別,請參閱在 Batch 集區中設定受控識別

建立使用者指派的受控識別

如果您想要,您可以 建立使用者指派的受控識別 ,以用來存取客戶管理的金鑰。

您需要此身分識別的用戶端識別碼值,才能存取金鑰保存庫。

設定您的 Azure Key Vault 執行個體

產生金鑰的 Azure 金鑰保存庫必須在與 Batch 帳戶相同的租使用者中建立。 它不需要位於相同的資源群組中,或甚至位於相同的訂用帳戶中。

建立 Azure Key Vault

使用客戶自控金鑰為 Azure Batch 建立 Azure Key Vault 執行個體,請確定同時已啟用 [虛刪除] 和 [清除保護]。

螢幕擷取畫面:Key Vault 建立畫面。

將存取原則新增至您的 Azure Key Vault 執行個體

在 Azure 入口網站中,於建立 Key Vault 之後,請在 [設定] 底下的 [存取原則] 中,使用受控識別新增 Batch 帳戶存取權。 在 [金鑰權限] 底下,選取 [取得]、[包裝金鑰] 和 [將金鑰解除包裝]。

顯示 [新增存取原則] 畫面的螢幕擷取畫面。

在 [主體] 下的 [選取] 欄位中,填入下列其中一項:

  • 若為系統指派的受控識別:輸入您先前擷取的 principalId 或 Batch 帳戶的名稱。
  • 若為使用者指派的受控識別:輸入您先前擷取的用戶端識別碼或使用者指派的受控識別名稱。

螢幕擷取畫面:主體畫面。

在 Azure Key Vault 中產生金鑰

在 Azure 入口網站中,移至 [金鑰] 區段中的 Key Vault 執行個體鑰,選取 [產生/匯入]。 將 [金鑰類型] 選為 RSA,並選取至少為 2048 位元的 [RSA 金鑰大小]。 目前不支援 EC 金鑰類型作為 Batch 帳戶上的客戶自控金鑰。

建立金鑰

建立金鑰之後,按一下新建立的金鑰和目前版本、複製 [屬性] 區段下的 [金鑰識別碼]。 請確定在 [允許的作業]底下,會同時檢查 [包裝金鑰 ] 和 [ 解除包裝金鑰 ]。

在 Batch 帳戶上啟用客戶自控金鑰

既然必要條件已就緒,您可以在 Batch 帳戶上啟用客戶管理的金鑰。

Azure 入口網站

Azure 入口網站中,移至 [Batch 帳戶] 頁面。 在 [加密] 區段底下,啟用 [客戶自控金鑰]。 您可以直接使用金鑰識別碼,也可以選取金鑰保存庫,然後按一下 [選取金鑰保存庫和金鑰]。

顯示 [加密] 區段和選項以啟用客戶自控金鑰的螢幕擷取畫面

Azure CLI

在使用系統指派的受控識別建立 Batch 帳戶,並授與 Key Vault 的存取權之後,請使用 keyVaultProperties 參數下的 {Key Identifier} URL 更新 Batch 帳戶。 也設定 --encryption-key-sourceMicrosoft.KeyVault

az batch account set \
    --name $accountName \
    --resource-group $resourceGroupName \
    --encryption-key-source Microsoft.KeyVault \
    --encryption-key-identifier {YourKeyIdentifier}

利用使用者指派的受控識別和客戶自控金鑰建立 Batch 帳戶

例如,使用 Batch 管理 .NET 用戶端,您可以建立具有使用者指派受控識別和客戶自控金鑰的 Batch 帳戶。

EncryptionProperties encryptionProperties = new EncryptionProperties()
{
    KeySource = KeySource.MicrosoftKeyVault,
    KeyVaultProperties = new KeyVaultProperties()
    {
        KeyIdentifier = "Your Key Azure Resource Manager Resource ID"
    }
};

BatchAccountIdentity identity = new BatchAccountIdentity()
{
    Type = ResourceIdentityType.UserAssigned,
    UserAssignedIdentities = new Dictionary<string, BatchAccountIdentityUserAssignedIdentitiesValue>
    {
            ["Your Identity Azure Resource Manager ResourceId"] = new BatchAccountIdentityUserAssignedIdentitiesValue()
    }
};
var parameters = new BatchAccountCreateParameters(TestConfiguration.ManagementRegion, encryption:encryptionProperties, identity: identity);

var account = await batchManagementClient.Account.CreateAsync("MyResourceGroup",
    "mynewaccount", parameters);

更新客戶自控金鑰版本

建立新版本的金鑰時,請更新 Batch 帳戶以使用新的版本。 請遵循下列步驟:

  1. 在 Azure 入口網站中瀏覽至您的 Batch 帳戶,並顯示 [加密] 設定。
  2. 輸入新金鑰版本的 URI。 或者,您可以再次選取 Key Vault 和金鑰,以更新版本。
  3. 儲存您的變更。

您也可以使用 Azure CLI 更新版本。

az batch account set \
    --name $accountName \
    --resource-group $resourceGroupName \
    --encryption-key-identifier {YourKeyIdentifierWithNewVersion}

提示

您可以在金鑰保存庫內建立金鑰輪替原則,讓金鑰自動輪替。 指定 Batch 帳戶的金鑰識別碼時,請使用無版本金鑰識別碼,以有效的輪替原則啟用自動輪替。 如需詳細資訊,請參閱如何在 金鑰保存庫中設定金鑰輪替

使用不同的金鑰進行 Batch 加密

若要變更用於 Batch 加密的金鑰,請遵循下列步驟:

  1. 瀏覽至您的 Batch 帳戶並顯示 [加密] 設定。
  2. 輸入新金鑰的 URI。 或者,您可以選取 Key Vault,然後選擇新的金鑰。
  3. 儲存您的變更。

您也可以使用 Azure CLI 來使用不同的金鑰。

az batch account set \
    --name $accountName \
    --resource-group $resourceGroupName \
    --encryption-key-identifier {YourNewKeyIdentifier}

常見問題集

  • 現有的 Batch 帳戶是否支援客戶自控金鑰? 不可以。 只有新的 Batch 帳戶才支援客戶自控金鑰。
  • 我是否可以選取大於 2048 位元的 RSA 金鑰大小? 是,也支援 30724096 位元的 RSA 金鑰大小。
  • 客戶管理的金鑰撤銷後,可以執行哪些作業? 如果 Batch 失去客戶自控金鑰的存取權,唯一允許的作業是刪除帳戶。
  • 如果我不小心刪除 Key Vault 金鑰,應該如何將存取權還原至 Batch 帳戶? 由於已啟用清除保護和虛刪除,因此您可以還原現有的金鑰。 如需詳細資訊,請參閱復原 Azure Key Vault
  • 可以停用客戶自控金鑰嗎? 您可以隨時將 Batch 帳戶的加密類型設回「Microsoft 受控金鑰」。 您之後可以刪除或變更金鑰。
  • 如何輪替我的金鑰? 除非金鑰在金鑰保存庫內設定適當的金鑰輪替原則,否則不會自動輪替客戶金鑰。 若要手動輪替金鑰,請更新帳戶相關聯的金鑰識別碼。
  • 還原存取權之後,Batch 帳戶需要多久時間才能再次運作? 一旦還原了存取權,帳戶最多可能需要 10 分鐘的時間才能再次存取。
  • 當 Batch 帳戶無法使用時,我的資源會發生什麼情況? 當 Batch 存取客戶管理的金鑰時,任何作用中的集區都會繼續執行。 不過,這些集區中的節點將會轉換成無法使用的狀態,而工作將會停止執行 (,並重新排入佇列) 。 還原存取之後,節點會再次可供使用,並重新啟動工作。
  • 此加密機制是否適用於 Batch 集區中的 VM 磁碟? 不可以。 針對雲端服務設定集區 (已取代),沒有加密適用於作業系統和暫存磁碟。 針對虛擬機器設定集區,OS 和任何指定的資料磁片預設會使用 Microsoft 平臺受控金鑰進行加密。 目前,您無法為這些磁片指定自己的金鑰。 若要使用 Microsoft 平台受控金鑰加密 Batch 集區的 VM 暫存磁碟,您必須在虛擬機器設定集區中啟用 diskEncryptionConfiguration 屬性。 對於高度敏感性環境,建議啟用暫存磁碟加密,並避免將敏感性資料儲存在作業系統和資料磁碟上。 如需詳細資訊,請參閱在啟用加密的情況下建立集區
  • Batch 帳戶上系統指派的受控識別是否可在計算節點上使用? 不可以。 系統指派的受控識別目前僅用於存取 Azure Key Vault,以取得客戶自控金鑰。 若要在計算節點上使用一個使用者指派的受控識別,請參閱在 Batch 集區中設定受控識別

後續步驟