使用 Azure Cosmos DB for NoSQL 禁用基于密钥的身份验证
适用范围: NoSQL
部署指南序列图,包括以下位置,顺序为:概述、概念、准备、基于角色的访问控制、网络和参考。 目前突出显示了“准备”位置。
本文介绍对 Azure Cosmos DB for NoSQL 帐户禁用基于密钥的授权(或资源所有者密码凭据身份验证)的过程。
禁用基于密钥的授权可在没有比较安全的 Microsoft Entra 身份验证方法的情况下阻止使用帐户。 此过程是在安全工作负载中应对新帐户执行的步骤。 或者,对迁移到安全工作负载模式的现有帐户执行此过程。
先决条件
- 具有活动订阅的 Azure 帐户。 创建帐户。
可以使用本地 Azure CLI。
如果需要,请安装 Azure CLI 来运行 CLI 参考命令。
本地 Azure CLI,请了解如何安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
通过使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
- 如果选择在本地使用 Azure PowerShell:
- 安装最新版本的 Az PowerShell 模块。
- 使用 Connect-AzAccount -Environment AzureChinaCloud cmdlet 连接到 Azure 帐户。
禁用基于密钥的身份验证
首先,对现有帐户禁用基于密钥的身份验证,以便要求应用程序使用 Microsoft Entra 身份验证。 使用 az resource update
修改现有帐户的 properties.disableLocalAuth
。
az resource update \
--resource-group "<name-of-existing-resource-group>" \
--name "<name-of-existing-account>" \
--resource-type "Microsoft.DocumentDB/databaseAccounts" \
--set properties.disableLocalAuth=true
首先,创建一个新帐户并禁用基于密钥的身份验证,以便要求应用程序使用 Microsoft Entra 身份验证。
创建一个新的 Bicep 文件,以部署新帐户并禁用基于密钥的身份验证。 将文件命名为 deploy-new-account.bicep。
metadata description = 'Deploys a new Azure Cosmos DB account with key-based auth disabled.' @description('Name of the Azure Cosmos DB account.') param name string = 'csms-${uniqueString(resourceGroup().id)}' @description('Primary location for the Azure Cosmos DB account.') param location string = resourceGroup().location resource account 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = { name: name location: location kind: 'GlobalDocumentDB' properties: { databaseAccountOfferType: 'Standard' locations: [ { locationName: location } ] disableLocalAuth: true } }
使用
az deployment group create
为该 Bicep 文件部署新帐户。az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --template-file deploy-new-account.bicep
首先,对现有帐户禁用基于密钥的身份验证,以便要求应用程序使用 Microsoft Entra 身份验证。 使用 Get-AzResource
和 Set-AzResource
分别读取和更新现有帐户。
$parameters = @{
ResourceGroupName = "<name-of-existing-resource-group>"
ResourceName = "<name-of-existing-account>"
ResourceType = "Microsoft.DocumentDB/databaseAccounts"
}
$resource = Get-AzResource @parameters
$resource.Properties.DisableLocalAuth = $true
$resource | Set-AzResource -Force
验证是否已禁用身份验证
尝试使用 Azure SDK 通过资源所有者密码凭据 (ROPC) 连接到 Azure Cosmos DB for NoSQL。 此尝试应会失败。 如有必要,此处提供了常见编程语言的代码示例。
using Microsoft.Azure.Cosmos;
string connectionString = "AccountEndpoint=<nosql-endpoint>;AccountKey=<key>;";
CosmosClient client = new(connectionString);
重要
此代码示例使用 NuGet 中的 Microsoft.Azure.Cosmos
库。