Condividi tramite


Disabilitare l'autenticazione basata su chiave con Azure Cosmos DB per NoSQL

Questo articolo illustra il processo di disabilitazione dell'autorizzazione basata su chiave (o autenticazione delle credenziali della password del proprietario della risorsa) per un account Azure Cosmos DB per NoSQL.

La disabilitazione dell'autorizzazione basata su chiave impedisce l'uso dell'account senza il metodo di autenticazione Microsoft Entra più sicuro. Questa procedura è un passaggio che deve essere eseguito sui nuovi account nei carichi di lavoro sicuri. In alternativa, eseguire questa procedura sugli account esistenti di cui viene eseguita la migrazione a un modello di carico di lavoro sicuro.

Prerequisiti

Disabilitare l'autenticazione basata su chiave

Prima di tutto, disabilitare l'autenticazione basata su chiave per l'account esistente affinché le applicazioni debbano utilizzare l'autenticazione di Microsoft Entra. Usare az resource update per modificare properties.disableLocalAuth l'account esistente.

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

Innanzitutto, crea un nuovo account con l'autenticazione basata su chiavi disabilitata in modo che le applicazioni vengano obbligate a utilizzare l'autenticazione Microsoft Entra.

  1. Creare un nuovo file Bicep per distribuire il nuovo account con l'autenticazione basata su chiave disabilitata. Assegnare al file il nome 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. Usare az deployment group create per distribuire il file Bicep con il nuovo account.

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

Prima di tutto, disabilitare l'autenticazione basata su chiave per l'account esistente affinché le applicazioni debbano utilizzare l'autenticazione di Microsoft Entra. Usare Get-AzResource e Set-AzResource per leggere e aggiornare rispettivamente l'account esistente.

$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

Usare questi passaggi per creare un nuovo account Azure Cosmos DB per NoSQL con l'autenticazione basata su chiave disabilitata, in modo che le applicazioni utilizzino solo l'autenticazione tramite Microsoft Entra.

  1. Quando si configura un nuovo account Azure Cosmos DB per NoSQL, passare alla sezione Sicurezza del processo di creazione dell'account.

  2. Quindi, selezionare Disabilita per l'opzione di autenticazione basata su chiave.

    Screenshot dell'opzione per disabilitare l'autenticazione basata su chiave durante la creazione di un nuovo account nel portale di Azure.

Verificare che l'autenticazione sia disabilitata

Tentare di utilizzare Azure SDK per connettersi ad Azure Cosmos DB per NoSQL, utilizzando le credenziali ROPC (Resource Owner Password Credential). Questo tentativo dovrebbe non riuscire. Se necessario, qui sono disponibili esempi di codice per i linguaggi di programmazione comuni.

using Microsoft.Azure.Cosmos;

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

CosmosClient client = new(connectionString);

Importante

Questo esempio di codice usa la Microsoft.Azure.Cosmos libreria di NuGet.