使用 Microsoft Entra ID 为 Azure Cosmos DB 帐户配置托管标识
适用对象: NoSQL MongoDB Cassandra Gremlin 表
Azure 资源的托管标识在 Microsoft Entra ID 中为 Azure 服务提供了一个自动托管标识。 本文介绍如何为 Azure Cosmos DB 帐户创建托管标识。
先决条件
- 如果你不熟悉 Azure 资源托管标识,请参阅什么是 Azure 资源托管标识?。 若要了解托管标识类型,请参阅托管标识类型。
- 若要设置托管标识,你的帐户需有 DocumentDB 帐户参与者角色。
添加系统分配的标识
使用 Azure 门户
若要对现有 Azure Cosmos DB 帐户启用系统分配的托管标识,请导航到 Azure 门户中的帐户,然后从左侧菜单中选择“标识”。
在“系统分配”部分下,将“状态”切换为“启用”并选择“保存”。 系统会要求你确认是否创建了系统分配的托管标识。
创建并分配标识后,可以检索其对象(主体)ID。
使用 Azure 资源管理器 (ARM) 模板
重要
使用托管标识时,请确保使用 2021-03-15
或更高的 apiVersion
。
若要在新的或现有的 Azure Cosmos DB 帐户中启用系统分配的标识,请在资源定义中包含以下属性:
"identity": {
"type": "SystemAssigned"
}
然后,ARM 模板的 resources
节应如下所示:
"resources": [
{
"type": " Microsoft.DocumentDB/databaseAccounts",
"identity": {
"type": "SystemAssigned"
},
// ...
},
// ...
]
创建或更新 Azure Cosmos DB 帐户后,它将显示以下属性:
"identity": {
"type": "SystemAssigned",
"tenantId": "<azure-ad-tenant-id>",
"principalId": "<azure-ad-principal-id>"
}
使用 Azure CLI
若要在新建 Azure Cosmos DB 帐户时启用系统分配的标识,请添加 --assign-identity
选项:
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
az cosmosdb create \
-n $accountName \
-g $resourceGroupName \
--locations regionName='China North 2' failoverPriority=0 isZoneRedundant=False \
--assign-identity
你还可使用 az cosmosdb identity assign
命令在现有帐户上添加系统分配的标识:
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
az cosmosdb identity assign \
-n $accountName \
-g $resourceGroupName
创建或更新 Azure Cosmos DB 帐户后,可提取使用 az cosmosdb identity show
命令分配的标识:
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
az cosmosdb identity show \
-n $accountName \
-g $resourceGroupName
{
"type": "SystemAssigned",
"tenantId": "<azure-ad-tenant-id>",
"principalId": "<azure-ad-principal-id>"
}
添加用户分配的标识
使用 Azure 门户
若要对现有 Azure Cosmos DB 帐户启用用户分配的托管标识,请导航到 Azure 门户中的帐户,然后从左侧菜单中选择“标识”。
在“用户分配”部分下,选择“+ 添加”。
找到并选择要分配给 Azure Cosmos DB 帐户的所有标识,然后选择“添加”。
使用 Azure 资源管理器 (ARM) 模板
重要
使用托管标识时,请确保使用 2021-03-15
或更高的 apiVersion
。
若要在新的或现有的 Azure Cosmos DB 帐户中启用用户分配的标识,请在资源定义中包含以下属性:
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<identity-resource-id>": {}
}
}
然后,ARM 模板的 resources
节应如下所示:
"resources": [
{
"type": " Microsoft.DocumentDB/databaseAccounts",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<identity-resource-id>": {}
}
},
// ...
},
// ...
]
创建或更新 Azure Cosmos DB 帐户后,它将显示以下属性:
"identity": {
"type": "UserAssigned",
"tenantId": "<azure-ad-tenant-id>",
"principalId": "<azure-ad-principal-id>"
}
使用 Azure CLI
若要在创建新的 Azure Cosmos DB 帐户时启用用户分配的标识,请添加 --assign-identity
选项并传递要分配的标识的资源 ID:
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
az cosmosdb create \
-n $accountName \
-g $resourceGroupName \
--locations regionName='China North 2' failoverPriority=0 isZoneRedundant=False \
--assign-identity <identity-resource-id>
还可使用 az cosmosdb identity assign
命令在现有帐户上添加用户分配的标识:
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
az cosmosdb identity assign \
-n $accountName \
-g $resourceGroupName
--identities <identity-resource-id>
创建或更新 Azure Cosmos DB 帐户后,可提取使用 az cosmosdb identity show
命令分配的标识:
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
az cosmosdb identity show \
-n $accountName \
-g $resourceGroupName
{
"type": "UserAssigned",
"tenantId": "<azure-ad-tenant-id>",
"principalId": "<azure-ad-principal-id>"
}
删除系统分配的标识或用户分配的标识
使用 Azure 资源管理器 (ARM) 模板
重要
使用托管标识时,请确保使用 2021-03-15
或更高的 apiVersion
。
若要从 Azure Cosmos DB 帐户中删除系统分配的标识,请将 identity
属性的 type
设置为 None
:
"identity": {
"type": "None"
}
使用 Azure CLI
若要从 Azure Cosmos DB 帐户中删除所有托管的标识,请使用 az cosmosdb identity remove
命令:
resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
az cosmosdb identity remove \
-n $accountName \
-g $resourceGroupName
后续步骤
- 详细了解 Azure 资源的托管标识
- 详细了解 Azure Cosmos DB 上的客户管理的密钥