适用对象: 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的 shell 变量。- # 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检索系统分配的托管标识的元数据,使用 query 参数进行筛选以仅返回- principalId属性,并将结果存储在名为- principal的 shell 变量中。- 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 中创建访问策略,该策略向 Azure Cosmos DB 托管标识授予访问 Key Vault 的权限。 具体而言,该策略将使用 key-permissions 参数向- get、- list和- import密钥授予权限。- az keyvault set-policy \ --name $keyVaultName \ --object-id $principal \ --key-permissions get list import