Compartir vía


Deshabilitación de la autenticación basada en certificados con Azure Cosmos DB for NoSQL

SE APLICA A: NoSQL

Diagrama de la ubicación actual (

Diagrama de la secuencia de la guía de implementación, incluidas estas ubicaciones, en orden: Información general, Conceptos, Preparación, Control de acceso basado en rol, Red y Referencia. La ubicación "Preparación" está resaltada actualmente.

En este artículo se describe el proceso de deshabilitación de la autorización basada en claves (o autenticación de credenciales de contraseña de propietario de recursos) para una cuenta de Azure Cosmos DB for NoSQL.

Deshabilitar la autorización basada en claves impide que la cuenta se use sin el método de autenticación de Microsoft Entra más seguro. Este procedimiento es un paso que se debe realizar en nuevas cuentas en cargas de trabajo seguras. Como alternativa, realice este procedimiento en las cuentas existentes que se migran a un patrón de carga de trabajo seguro.

Requisitos previos

Deshabilitación de la autenticación basada en claves

En primer lugar, deshabilite la autenticación basada en claves en la cuenta existente para que las aplicaciones deban usar la autenticación de Microsoft Entra. Use az resource update para modificar properties.disableLocalAuth en la cuenta 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

En primer lugar, cree una cuenta con la autenticación basada en claves deshabilitada para que las aplicaciones deban usar la autenticación de Microsoft Entra.

  1. Cree un archivo de Bicep para implementar la nueva cuenta con la autenticación basada en claves deshabilitada. Asigne el nombre deploy-new-account.bicep al archivo.

    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 implementar el archivo de Bicep con la nueva cuenta.

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

En primer lugar, deshabilite la autenticación basada en claves en la cuenta existente para que las aplicaciones deban usar la autenticación de Microsoft Entra. Use Get-AzResource y Set-AzResource para leer y actualizar la cuenta existente respectivamente.

$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 que la autenticación está deshabilitada

Intente usar el SDK de Azure para conectarse a Azure Cosmos DB for NoSQL mediante una credencial de contraseña de propietario de recursos (ROPC). Este intento debe producir un error. Si es necesario, aquí se proporcionan ejemplos de código para lenguajes de programación comunes.

using Microsoft.Azure.Cosmos;

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

CosmosClient client = new(connectionString);

Importante

En este ejemplo de código se usa la biblioteca Microsoft.Azure.Cosmos de NuGet.

Paso siguiente