Поделиться через


Отключение проверки подлинности на основе ключей с помощью Azure Cosmos DB для таблицы (предварительная версия)

В этой статье описывается процесс отключения авторизации на основе ключей (или проверки подлинности учетных данных владельца ресурса) для учетной записи Azure Cosmos DB для таблицы.

Отключение авторизации на основе ключей предотвращает использование учетной записи без более безопасного метода проверки подлинности Microsoft Entra. Эта процедура — это шаг, который должен выполняться для новых учетных записей в безопасных рабочих нагрузках. Кроме того, выполните эту процедуру в существующих учетных записях, перенесенных в шаблон безопасной рабочей нагрузки.

Предварительные условия

Отключение проверки подлинности на основе ключей

Во-первых, отключите проверку подлинности на основе ключей для существующей учетной записи, чтобы приложения использовали проверку подлинности 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.

  1. Создайте файл 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
      }
    }
    
  2. Используется 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 для NoSQL с отключенной проверкой подлинности на основе ключей, чтобы приложения были обязаны использовать только аутентификацию Microsoft Entra.

  1. При настройке новой учетной записи Azure Cosmos DB для NoSQL перейдите в раздел "Безопасность " процесса создания учетной записи.

  2. Затем выберите "Отключить " для параметра проверки подлинности на основе ключей .

    Снимок экрана: параметр отключения проверки подлинности на основе ключей при создании учетной записи на портале Azure.

Убедитесь, что проверка подлинности отключена.

Попробуйте использовать Azure SDK для подключения к Azure Cosmos DB для работы с таблицами, используя учетные данные пароля владельца ресурса (ROPC). Эта попытка должна завершиться ошибкой. При необходимости примеры кода для распространенных языков программирования предоставляются здесь.

using Azure.Data.Tables;
using Azure.Core;

string connectionString = "AccountEndpoint=<table-endpoint>;AccountKey=<key>;";

TableServiceClient client = new(connectionString);

Внимание

В этом примере кода используются Azure.Data.Tables и Azure.Identity библиотеки из NuGet.

Следующий шаг