使用受控識別從 Azure Cosmos DB 存取 Azure Key Vault

適用於:NoSQL MongoDB Cassandra Gremlin Table

Azure Cosmos DB 可能需要從 Azure Key Vault 讀取祕密/金鑰資料。 例如,您的 Azure Cosmos DB 可能需要儲存在 Azure Key Vault 的客戶自控金鑰。 若要執行這項操作,您應使用受控識別設定 Azure Cosmos DB,然後 Azure Key Vault 存取原則應授與受控識別存取權。

必要條件

先決條件檢查

  1. 在終端機或命令視窗中,將 Azure Key Vault 資源的名稱、Azure Cosmos DB 帳戶和資源群組儲存為名為 keyVaultNamecosmosNameresourceGroupName 的殼層變數。

    # Variable for function app name
    keyVaultName="msdocs-keyvault"
    
    # Variable for Azure Cosmos DB account name
    cosmosName="msdocs-cosmos-app"
    
    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-keyvault-identity"
    

    注意

    在後續步驟中會重複使用這些變數。 此範例假設您的 Azure Cosmos DB 帳戶名稱為 msdocs-cosmos-app,金鑰保存庫名稱為 msdocs-keyvault,而資源群組名為 msdocs-cosmos-keyvault-identity

在 Azure Cosmos DB 中建立系統指派的受控識別

首先,為現有的 Azure Cosmos DB 帳戶建立系統指派的受控識別。

重要

本操作指南假設您使用的是系統指派的受控識別。 使用使用者指派的受控識別時,大部分的步驟都相似。

  1. 執行 az cosmosdb identity assign 以建立系統指派的受控識別。

    az cosmosdb identity assign \
        --resource-group $resourceGroupName \
        --name $cosmosName 
    
  2. 使用 az cosmosdb identity show 擷取系統指派受控識別的中繼資料,篩選使用 [查詢] 的參數以回傳 principalId 的屬性,並將結果儲存在名為 principal 的殼層變數中。

    principal=$(
        az cosmosdb identity show \
            --resource-group $resourceGroupName \
            --name $cosmosName \
            --query principalId \
            --output tsv
    )
    
    echo $principal
    

    注意

    在後續步驟中會重複使用這個變數。

建立 Azure Key Vault 存取原則

在這個步驟中,使用先前的受控識別,在 Azure Key Vault 中建立存取原則。

  1. 使用 az keyvault set-policy 命令在 Azure Key Vault 中建立存取原則,此原則會將受控識別存取 Key Vault 的許可權授與給 Azure Cosmos DB。 具體而言,這個原則會使用金鑰存取權限參數,將許可權授與給 getlistimport 金鑰。

    az keyvault set-policy \
        --name $keyVaultName \
        --object-id $principal \
        --key-permissions get list import
    

下一步

  • 若要利用您的 Azure Cosmos DB 帳戶在 Azure Key Vault 中使用客戶自控金鑰,請參閱設定客戶自控金鑰
  • 若要使用 Azure Key Vault 管理密碼,請參閱安全認證