Cumplimiento mínimo de la versión de TLS de autoservicio en Azure Cosmos DB

SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table

En este artículo se describe cómo aplicar una versión mínima del protocolo de TLS para la cuenta de Cosmos DB mediante una API de autoservicio.

Funcionamiento de la aplicación de versiones mínimas de TLS en Azure Cosmos DB

Debido a la naturaleza multiinquilino de Cosmos DB, se requiere el servicio para satisfacer las necesidades de acceso y seguridad de todos los usuarios. Para ello, Cosmos DB aplica los protocolos TLS mínimos en la capa de la aplicación y no en las capas inferiores de la pila de red donde opera TLS. Esta aplicación se produce en cualquier solicitud autenticada a una cuenta de base de datos específica, según la configuración establecida por el cliente en esa cuenta.

La versión mínima aceptada para todo el servicio es TLS 1.0. Esta selección se puede cambiar por cuenta, tal y como se describe en la sección siguiente.

Establecimiento de la versión mínima de TLS para mi cuenta de base de datos de Cosmos DB

A partir de la versión de API 2022-11-15 de la API del proveedor de recursos de Azure Cosmos DB, se expone una nueva propiedad para cada cuenta de base de datos de Cosmos DB, denominada minimalTlsVersion. Acepta uno de los valores siguientes:

  • Tls para establecer la versión mínima en TLS 1.0.
  • Tls11 para establecer la versión mínima en TLS 1.1.
  • Tls12 para establecer la versión mínima en TLS 1.2.

El valor predeterminado para las cuentas nuevas y existentes es Tls.

Importante

A partir del 1° de abril de 2023, el valor predeterminado para las nuevas cuentas se cambiará a Tls12.

Establecimiento del protocolo TLS mínimo en Azure Cosmos DB mediante el portal

Esta característica de autoservicio está disponible en el portal al crear y editar cuentas. Las cuentas de Azure Cosmos DB aplican el protocolo TLS 1.2. Sin embargo, Azure Cosmos DB también admite los siguientes protocolos TLS, en función del tipo de API seleccionado.

  • MongoDB: TLS 1.2

  • Cassandra: TLS 1.2

  • Tabla, SQL y Graph: TLS 1.0, TLS 1.1 y TLS 1.2

Pasos para establecer el protocolo TLS mínimo al crear una cuenta

Si usa un tipo de API que solo admite TLS 1.2, lo observará en la pestaña Redes de la parte inferior del protocolo TLS deshabilitado.

Captura de pantalla del tipo de API que solo admite TLS 1.2.

Si usa un tipo de API que acepta varios protocolos TLS, puede ir a la pestaña Redes y, a continuación, estará disponible la opción Protocolo mínimo de seguridad de la capa de transporte. Puede cambiar el protocolo seleccionado haciendo clic en la lista desplegable y seleccionando el protocolo deseado.

Captura de pantalla del tipo de API que acepta múltiples protocolos TLS.

Después de configurar la cuenta, puede revisar en la pestaña Revisar y crear de la parte inferior de la sección Redes, que el protocolo TLS seleccionado se haya establecido tal y como se especificó.

Captura de pantalla del protocolo TLS seleccionado y configurado como usted especificó.

Pasos para establecer el protocolo TLS mínimo al editar una cuenta

  1. Vaya a la cuenta de Azure Cosmos DB en Azure Portal.

  2. Seleccione Redes en el menú de la izquierda y, a continuación, seleccione la pestaña Conectividad.

  3. Encontrará la opción Protocolo mínimo de seguridad de la capa de transporte. Si usa un tipo de API que solo admite TLS 1.2, observará que esta opción está deshabilitada. De lo contrario, podrá seleccionar el protocolo TLS deseado haciendo clic en él.

Captura de pantalla de la opción Protocolo mínimo de seguridad de la capa de transporte.

  1. Haga clic en Guardar una vez que haya cambiado el protocolo TLS.

Captura de pantalla de guardar después de los cambios.

  1. Una vez guardado, recibirá una notificación exitosa. Sin embargo, este cambio podría tardar hasta 15 minutos en surtir efecto una vez completada la actualización de configuración.

Captura de pantalla de notificación exitosa.

Definir mediante la CLI de Azure

Para establecer mediante la CLI de Azure, use el comando:

rg="myresourcegroup"
dbName="mycosmosdbaccount"
minimalTlsVersion="Tls12"
az cosmosdb update -n $dbName -g $rg --minimal-tls-version $minimalTlsVersion

Establecer mediante Azure PowerShell

Para establecer mediante Azure PowerShell, use el comando:

$minimalTlsVersion = 'Tls12'
$patchParameters = @{
  ResourceGroupName = 'myresourcegroup'
  Name = 'mycosmosdbaccount'
  ResourceProviderName = 'Microsoft.DocumentDB'
  ResourceType = 'databaseaccounts'
  ApiVersion = '2022-11-15'
  Payload = "{ 'properties': {
      'minimalTlsVersion': '$minimalTlsVersion'
  } }"
  Method = 'PATCH'
}
Invoke-AzRestMethod @patchParameters

Establecer mediante una plantilla de ARM

Para establecer esta propiedad mediante una plantilla de ARM, actualice la plantilla existente o exporte una nueva para la implementación actual e incluya "minimalTlsVersion" en las propiedades de los recursos de databaseAccounts con el valor de la versión mínima de TLS deseada. Aquí se proporciona un ejemplo básico de una plantilla de Azure Resource Manager con este valor de propiedad usando un parámetro.

{
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "name": "mycosmosdbaccount",
      "apiVersion": "2022-11-15",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "consistencyPolicy": {
          "defaultConsistencyLevel": "[parameters('defaultConsistencyLevel')]",
          "maxStalenessPrefix": 1,
          "maxIntervalInSeconds": 5
        },
        "locations": [
          {
            "locationName": "[parameters('location')]",
            "failoverPriority": 0
          }
        ],
        "locations": "[variable('locations')]",
        "databaseAccountOfferType": "Standard",
        "minimalTlsVersion": "[parameters('minimalTlsVersion')]",
      }
    }
}

Importante

Asegúrese de incluir las otras propiedades de la cuenta y los recursos secundarios al volver a implementar esta propiedad. No implemente esta plantilla tal cual o se restablecerán todas las propiedades de la cuenta.

Para cuentas nuevas

Puede crear cuentas con el conjunto de propiedades minimalTlsVersion mediante la plantilla de ARM anterior o cambiando el método PATCH a PUT en la CLI de Azure o en Azure PowerShell. Asegúrese de incluir las demás propiedades de la cuenta.

Importante

Si la cuenta existe y la propiedad minimalTlsVersion se omite en una solicitud PUT, la propiedad se restablecerá a su valor predeterminado a partir de la versión de API 2022-11-15.

Comprobación del cumplimiento mínimo de la versión de TLS

Dado que Cosmos DB aplica la versión mínima de TLS en la capa de la aplicación, los escáneres TLS convencionales que comprueban si el servicio acepta los protocolos de enlace para una versión específica de TLS no es confiable para probar la aplicación en Cosmos DB. Para comprobar la aplicación, consulte la herramienta oficial cosmos-tls-scanner de código abierto.

También puede obtener el valor actual de la propiedad minimalTlsVersion mediante la CLI de Azure o Azure PowerShell.

Obtención del valor actual mediante la CLI de Azure

Para obtener el valor actual de la propiedad con la CLI de Azure, ejecute el comando:

subId=$(az account show --query id -o tsv)
rg="myresourcegroup"
dbName="mycosmosdbaccount"
az rest --uri "/subscriptions/$subId/resourceGroups/$rg/providers/Microsoft.DocumentDB/databaseAccounts/$dbName?api-version=2022-11-15" --method GET

Obtener el valor actual a través de Azure PowerShell

Para obtener el valor actual de la propiedad con Azure PowerShell, ejecute el comando:

$getParameters = @{
  ResourceGroupName = 'myresourcegroup'
  Name = 'mycosmosdbaccount'
  ResourceProviderName = 'Microsoft.DocumentDB'
  ResourceType = 'databaseaccounts'
  ApiVersion = '2022-11-15'
  Method = 'GET'
}
Invoke-AzRestMethod @getParameters

Pasos siguientes

Para más información sobre la seguridad en Azure Cosmos DB, consulte Introducción a la seguridad de las bases de datos en Azure Cosmos DB.