使用適用於資料表的 Azure Cosmos DB 停用金鑰型驗證 (預覽)
本文涵蓋針對數據表帳戶停用 Azure Cosmos DB 金鑰型授權(或資源擁有者密碼認證驗證)的程式。
停用密鑰型授權可防止您的帳戶使用,而不需要更安全的 Microsoft Entra 驗證方法。 此程式是應在安全工作負載的新帳戶上執行的步驟。 或者,在移轉至安全工作負載模式的現有帳戶上執行此程式。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱 Azure Cloud Shell 中的 Bash 快速入門。
若要在本地執行 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 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 SDK,使用資源擁有者密碼認證 (ROPC) 連線到適用於數據表的 Azure Cosmos DB。 此嘗試應該會失敗。 如有必要,這裡會提供常見程序設計語言的程式代碼範例。
using Azure.Data.Tables;
using Azure.Core;
string connectionString = "AccountEndpoint=<table-endpoint>;AccountKey=<key>;";
TableServiceClient client = new(connectionString);
重要
此程式代碼範例會使用 NuGet 中的 Azure.Data.Tables
和 Azure.Identity
連結庫。