你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍对 Azure Cosmos DB for Table 帐户禁用基于密钥的授权(或资源所有者密码凭据身份验证)的过程。
禁用基于密钥的授权可在没有比较安全的 Microsoft Entra 身份验证方法的情况下阻止使用帐户。 此过程是在安全工作负载中应对新帐户执行的步骤。 或者,对迁移到安全工作负载模式的现有帐户执行此过程。
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅开始使用 Azure Cloud Shell。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅 使用 Azure CLI 向 Azure 进行身份验证。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用和管理 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
- 如果选择在本地使用 Azure PowerShell:
- 安装最新版本的 Az PowerShell 模块。
- 使用 Connect-AzAccount cmdlet 连接到 Azure 帐户。
- 如果选择使用 Azure Cloud Shell:
- 有关详细信息,请参阅 Azure Cloud Shell 概述。
禁用基于密钥的身份验证
首先,对现有帐户禁用基于密钥的身份验证,以便要求应用程序使用 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 Cosmos DB for NoSQL 帐户,以便应用程序仅使用 Microsoft Entra 身份验证。
设置新的 Azure Cosmos DB for NoSQL 帐户时,导航到帐户创建过程 的安全 部分。
然后,为基于密钥的身份验证选项选择“禁用”。
重要
修改 Azure Cosmos DB 帐户需要一个至少具有 Microsoft.DocumentDb/databaseAccounts/*/write
权限的 Azure 角色。 有关详细信息,请参阅 Azure Cosmos DB 的权限。
验证是否已禁用身份验证
尝试使用 Azure SDK 通过资源所有者密码凭据 (ROPC) 连接到 Azure Cosmos DB for Table。 此尝试应会失败。 如有必要,此处提供了常见编程语言的代码示例。
using Azure.Data.Tables;
using Azure.Core;
string connectionString = "AccountEndpoint=<table-endpoint>;AccountKey=<key>;";
TableServiceClient client = new(connectionString);
重要
此代码示例使用 NuGet 中的 Azure.Data.Tables
和 Azure.Identity
库。