使用受控識別從 Azure Cosmos DB 存取 Azure Key Vault
適用於:NoSQL MongoDB Cassandra Gremlin 桌子
Azure Cosmos DB 可能需要從 Azure Key Vault 讀取祕密/金鑰資料。 例如,您的 Azure Cosmos DB 可能需要儲存在 Azure Key Vault 的客戶自控金鑰。 若要執行這項操作,您應使用受控識別設定 Azure Cosmos DB,然後 Azure Key Vault 存取原則應授與受控識別存取權。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- 現有的 Azure Cosmos DB API for NoSQL 帳戶。 建立 Azure Cosmos DB API for NoSQL 帳戶
- 現有的 Azure Key Vault 資源。 使用 Azure CLI 來建立金鑰保存庫
- 若要執行本文中的步驟,請安裝 Azure CLI,並登入 Azure。
先決條件檢查
在終端機或命令視窗中,將 Azure Key Vault 資源的名稱、Azure Cosmos DB 帳戶和資源群組儲存為名為
keyVaultName
、cosmosName
和resourceGroupName
的殼層變數。# 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 帳戶建立系統指派的受控識別。
重要
本操作指南假設您使用的是系統指派的受控識別。 使用使用者指派的受控識別時,大部分的步驟都相似。
執行
az cosmosdb identity assign
以建立系統指派的受控識別。az cosmosdb identity assign \ --resource-group $resourceGroupName \ --name $cosmosName
使用
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 中建立存取原則。
使用
az keyvault set-policy
命令在 Azure Key Vault 中建立存取原則,此原則會將受控識別存取 Key Vault 的許可權授與給 Azure Cosmos DB。 具體而言,這個原則會使用金鑰存取權限參數,將許可權授與給get
、list
和import
金鑰。az keyvault set-policy \ --name $keyVaultName \ --object-id $principal \ --key-permissions get list import