Compartir a través de


Deshabilitación de la autenticación basada en claves con Azure Cosmos DB para NoSQL

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 para 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.

Prerrequisitos

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 nuevo archivo de Bicep para desplegar su cuenta reciente, asegurándose de que la autenticación basada en claves esté deshabilitada. Asigne al archivo el nombre 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 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

Siga estos pasos para crear una nueva cuenta de Azure Cosmos DB para NoSQL con autenticación basada en claves deshabilitada para que las aplicaciones solo usen la autenticación de Microsoft Entra.

  1. Al configurar una nueva cuenta de Azure Cosmos DB para NoSQL, vaya a la sección Seguridad del proceso de creación de la cuenta.

  2. A continuación, seleccione Deshabilitar para la opción autenticación basada en claves .

    Captura de pantalla de la opción para deshabilitar la autenticación basada en claves al crear una nueva cuenta en Azure Portal.

Validar que la autenticación está deshabilitada

Intente usar el SDK de Azure para conectarse a Azure Cosmos DB para NoSQL mediante una credencial de contraseña de propietario de recursos (ROPC). Este intento debería fallar. 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 Microsoft.Azure.Cosmos biblioteca de NuGet.