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


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

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

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

Предпосылки

  • Если вы решили использовать Azure PowerShell локально:
    • Установите последнюю версию модуля Az PowerShell.
    • Подключитесь к учетной записи Azure с помощью командлета Connect-AzAccount.
  • Если вы решили использовать 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.

  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 Cosmos DB требуется роль Azure по крайней мере с разрешением Microsoft.DocumentDb/databaseAccounts/*/write . Дополнительные сведения см. в разделе "Разрешения для Azure Cosmos DB".

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

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

using Microsoft.Azure.Cosmos;

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

CosmosClient client = new(connectionString);

Это важно

В этом примере кода используется Microsoft.Azure.Cosmos библиотека из NuGet.