Desabilitar a autenticação baseada em chave com o Azure Cosmos DB for NoSQL

APLICA-SE A: NoSQL

Diagrama do local atual (

Diagrama da sequência do guia de implantação, incluindo estes locais, em ordem: Visão geral, Conceitos, Preparação, Controle de acesso baseado em função, Rede e Referência. O local "Preparar" está realçado no momento.

Este artigo aborda o processo de desabilitar a autorização baseada em chave (ou autenticação de credencial de senha do proprietário do recurso) para uma conta do Azure Cosmos DB for NoSQL.

Desabilitar a autorização baseada em chave impede que sua conta seja usada sem o método de autenticação mais seguro do Microsoft Entra. Esse procedimento é uma etapa que deve ser executada em novas contas em cargas de trabalho seguras. Como alternativa, execute esse procedimento nas contas existentes que estão sendo migradas para um padrão de carga de trabalho seguro.

Pré-requisitos

Desabilitar a autenticação baseada em chave

Primeiro, desabilite a autenticação baseada em chave na sua conta existente para que os aplicativos sejam obrigados a usar a autenticação do Microsoft Entra. Use az resource update para modificar properties.disableLocalAuth da conta existente.

az resource update \
    --resource-group "<name-of-existing-resource-group>" \
    --name "<name-of-existing-account>" \
    --resource-type "Microsoft.DocumentDB/databaseAccounts" \
    --set properties.disableLocalAuth=true

Primeiro, crie uma nova conta com a autenticação baseada em chave desabilitada para que os aplicativos sejam obrigados a usar a autenticação do Microsoft Entra.

  1. Crie um novo arquivo Bicep para implantar sua nova conta com a autenticação baseada em chave desabilitada. Nomeie o arquivo 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. Use az deployment group create para implantar o arquivo Bicep com a nova conta.

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --template-file deploy-new-account.bicep
    

Primeiro, desabilite a autenticação baseada em chave na sua conta existente para que os aplicativos sejam obrigados a usar a autenticação do Microsoft Entra. Use Get-AzResource e Set-AzResource, respectivamente, leia e atualize a conta existente.

$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

Validar se a autenticação está desabilitada

Tente usar o SDK do Azure para se conectar ao Azure Cosmos DB for NoSQL usando uma credencial de senha do proprietário do recurso (ROPC). Esta tentativa deve falhar. Se necessário, exemplos de código para linguagens de programação comuns são fornecidos aqui.

using Microsoft.Azure.Cosmos;

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

CosmosClient client = new(connectionString);

Importante

Este exemplo de código usa a biblioteca Microsoft.Azure.Cosmos do NuGet.

Próxima etapa