Application de la version TLS minimale en libre-service dans Azure Cosmos DB

S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin Table

Cet article explique comment appliquer une version minimale du protocole TLS pour votre compte Cosmos DB à l’aide d’une API libre-service.

Fonctionnement de l’application de la version TLS minimale dans Azure Cosmos DB

En raison de la nature mutualisée de Cosmos DB, le service est requis pour répondre aux besoins d’accès et de sécurité de chaque utilisateur. Pour ce faire, Cosmos DB applique les protocoles TLS minimaux au niveau de la couche application, et non des couches inférieures dans la pile réseau où TLS fonctionne. Cette application se produit sur toute demande authentifiée adressée à un compte de base de données spécifique, en fonction des paramètres définis sur ce compte par le client.

La version minimale acceptée à l’échelle du service est TLS 1.0. Cette sélection peut être modifiée pour chaque compte, comme indiqué dans la section suivante.

Comment définir la version TLS minimale pour mon compte de base de données Cosmos DB

À compter de la version 2022-11-15 de l’API fournisseur de ressources Azure Cosmos DB, une nouvelle propriété est exposée pour chaque compte de base de données Cosmos DB, appelée minimalTlsVersion. L’une des valeurs suivantes est acceptée :

  • Tls pour définir la version minimale sur TLS 1.0.
  • Tls11 pour définir la version minimale sur TLS 1.1.
  • Tls12 pour définir la version minimale sur TLS 1.2.

La valeur par défaut pour les comptes nouveaux et existants est Tls.

Important

À partir du 1er avril 2023, la valeur par défaut des nouveaux comptes sera basculée sur Tls12.

Définissez le protocole minimal TLS dans Azure Cosmos DB à l’aide du portail

Cette fonctionnalité libre-service est disponible dans le portail lors de la création et modification d’un compte. Les comptes Azure Cosmos DB appliquent le protocole TLS 1.2. Toutefois, Azure Cosmos DB prend également en charge les protocoles TLS suivants selon le type d’API sélectionné.

  • MongoDB : TLS 1.2

  • Cassandra : TLS 1.2

  • Table, SQL and Graph : TLS 1.0, TLS 1.1 and TLS 1.2

Étapes pour définir le protocole minimal TLS lors de la création d’un compte

Si vous utilisez un type d’API prenant en charge uniquement TLS 1.2, vous notez dans l’onglet en bas Mise en réseau, un protocole TLS désactivé.

Capture d'écran de l'API Kind prenant en charge uniquement TLS 1.2.

Si vous utilisez un type d’API acceptant plusieurs protocoles TLS, vous pouvez accéder à l’onglet Mise en réseau, et l’option minimale du protocole TLS sera disponible. Pour modifier le protocole sélectionné, cliquez tout simplement sur la liste déroulante et sélectionnez le protocole souhaité.

Capture d'écran de l'API Kind acceptant plusieurs protocoles TLS.

Une fois votre compte configuré, vous pouvez vérifier sous l’onglet Vérifier + créer, en bas dans la section Mise en réseau, que le protocole TLS sélectionné est défini comme spécifié.

Capture d'écran du protocole TLS sélectionné et défini comme spécifié.

Étapes pour définir le protocole minimal TLS lors de la modification d’un compte

  1. Dans le portail Azure, accédez à votre compte Azure Cosmos DB.

  2. Depuis le menu de gauche, sélectionnez Mise en réseau, puis l’onglet Connectivité.

  3. Vous y trouverez l’option minimale du protocole TLS. Si vous utilisez un type d’API prenant en charge uniquement TLS 1.2, notez que cette option est désactivée. Sinon, vous pourrez sélectionner le protocole TLS souhaité en cliquant tout simplement dessus.

Capture d'écran de l'option minimale du protocole TLS.

  1. Cliquez sur Enregistrer une fois le protocole TLS modifié.

Capture d'écran de l'enregistrement après modification.

  1. Une fois enregistré, vous recevez une notification de réussite. Toutefois, cette modification peut prendre jusqu’à 15 minutes une fois la mise à jour de la configuration terminée.

Capture d'écran de la notification de succès.

Définition au moyen d’Azure CLI

Pour la définir à l’aide d’Azure CLI, exécutez la commande :

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

Définir avec Azure PowerShell

Pour définir à l’aide d’Azure PowerShell, exécutez la commande :

$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

Définition au moyen d’un modèle ARM

Pour définir cette propriété à l’aide d’un modèle ARM, mettez à jour votre modèle ou exportez-en un nouveau pour votre déploiement actuel, puis ajoutez "minimalTlsVersion" aux propriétés des ressources databaseAccounts, avec la valeur de version TLS minimum désirée. Voici un exemple de base d’un modèle Azure Resource Manager de base avec ce paramètre de propriété, utilisant un paramètre.

{
    {
      "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')]",
      }
    }
}

Important

Veillez à inclure les autres propriétés de votre compte et de vos ressources enfants lors du redéploiement avec cette propriété. Ne déployez pas ce modèle tel quel, car toutes les propriétés de votre compte seraient réinitialisées.

Pour les nouveaux comptes

Vous pouvez créer des comptes avec la propriété minimalTlsVersion définie à l’aide du modèle ARM ci-dessus ou en remplaçant la méthode PATCH par un PUT sur Azure CLI ou Azure PowerShell. Veillez à inclure les autres propriétés de votre compte.

Important

Si le compte existe et que la propriété minimalTlsVersion est annulée dans une requête PUT, la propriété est réinitialisée à sa valeur par défaut, à compter de la version de l’API 2022-11-15.

Comment vérifier l’application minimale de la version TLS

Étant donné que Cosmos DB applique la version TLS minimale au niveau de la couche application, les scanneurs TLS conventionnels qui vérifient si les liaisons sont acceptées par le service pour une version TLS spécifique ne sont pas fiables pour tester l’application dans Cosmos DB. Pour vérifier l’application, reportez-vous à l’outil cosmos-tls-scanneur open source officiel.

Vous pouvez également obtenir la valeur actuelle de la propriété minimalTlsVersionà l’aide d’Azure CLI ou de Azure PowerShell.

Obtenir la valeur actuelle via Azure CLI

Pour obtenir la valeur actuelle de la propriété à l’aide d’Azure CLI, exécutez la commande :

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

Obtenir la valeur actuelle via Azure PowerShell

Pour obtenir la valeur actuelle de la propriété à l’aide d’Azure PowerShell, exécutez la commande :

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

Étapes suivantes

Pour plus d’informations sur la sécurité dans Azure Cosmos DB, consultez Vue d’ensemble de la sécurité des bases de données dans Azure Cosmos DB .