Udostępnij za pośrednictwem


Wyłączanie uwierzytelniania opartego na kluczach za pomocą usługi Azure Cosmos DB for NoSQL

DOTYCZY: NoSQL

Diagram bieżącej lokalizacji ('Prepare') w sekwencji przewodnika wdrażania.

Diagram sekwencji przewodnika wdrażania, w tym tych lokalizacji, w kolejności: Przegląd, Pojęcia, Przygotowanie, Kontrola dostępu oparta na rolach, Sieć i Dokumentacja. Lokalizacja "Przygotuj" jest obecnie wyróżniona.

W tym artykule opisano proces wyłączania autoryzacji opartej na kluczach (lub uwierzytelniania poświadczeń hasła właściciela zasobu) dla konta usługi Azure Cosmos DB for NoSQL.

Wyłączenie autoryzacji opartej na kluczach uniemożliwia korzystanie z konta bez bezpieczniejszej metody uwierzytelniania Firmy Microsoft Entra. Ta procedura to krok, który należy wykonać na nowych kontach w bezpiecznych obciążeniach. Alternatywnie wykonaj tę procedurę na istniejących kontach migrowanych do bezpiecznego wzorca obciążenia.

Wymagania wstępne

Wyłączanie uwierzytelniania opartego na kluczach

Najpierw wyłącz uwierzytelnianie oparte na kluczach na istniejącym koncie, aby aplikacje musiały korzystać z uwierzytelniania firmy Microsoft Entra. Użyj az resource update polecenia , aby zmodyfikować properties.disableLocalAuth istniejące konto.

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

Najpierw utwórz nowe konto z wyłączonym uwierzytelnianiem opartym na kluczach, aby aplikacje musiały korzystać z uwierzytelniania firmy Microsoft Entra.

  1. Utwórz nowy plik Bicep, aby wdrożyć nowe konto z wyłączonym uwierzytelnianiem opartym na kluczach. Nadaj plikowi nazwę 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,
        disableKeyBasedMetadataWriteAccess: true
      }
    }
    
  2. Użyj az deployment group create polecenia , aby wdrożyć plik Bicep przy użyciu nowego konta.

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

Najpierw wyłącz uwierzytelnianie oparte na kluczach na istniejącym koncie, aby aplikacje musiały korzystać z uwierzytelniania firmy Microsoft Entra. Użyj Get-AzResource poleceń i Set-AzResource , aby odpowiednio odczytać i zaktualizować istniejące konto.

$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.Properties.DisableKeyBasedMetadataWriteAccess = $true

$resource | Set-AzResource -Force

Sprawdzanie, czy uwierzytelnianie jest wyłączone

Spróbuj użyć zestawu Azure SDK do nawiązania połączenia z usługą Azure Cosmos DB for NoSQL przy użyciu poświadczeń hasła właściciela zasobu (ROPC). Ta próba powinna zakończyć się niepowodzeniem. W razie potrzeby podano tutaj przykłady kodu dla typowych języków programowania.

using Microsoft.Azure.Cosmos;

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

CosmosClient client = new(connectionString);

Ważne

Ten przykładowy kod używa Microsoft.Azure.Cosmos biblioteki z narzędzia NuGet.

Następny krok