Configurer un pare-feu IP dans Azure Cosmos DB

S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin Table

Pour sécuriser les données stockées dans votre compte, Azure Cosmos DB prend en charge un modèle d’autorisation basé sur un secret, qui utilise un code d’authentification de message basé sur un hachage (Hash-based Message Authentication Code, HMAC) fort. De plus, Azure Cosmos DB prend en charge les contrôles d’accès basés sur IP pour le pare-feu entrant. Ce modèle est semblable aux règles de pare-feu d’un système de base de données classique et fournit un autre niveau de sécurité pour votre compte. Avec des pare-feu, vous pouvez configurer un compte Azure Cosmos DB pour qu’il soit uniquement accessible à partir d’un ensemble d’ordinateurs et/ou de services cloud approuvés. L’accès aux données stockées dans votre base de données Azure Cosmos DB à partir de ces ensembles d’ordinateurs et de services approuvés nécessite toujours que l’appelant présente un jeton d’autorisation valide.

Contrôle d’accès IP

Par défaut, votre compte Azure Cosmos DB est accessible depuis Internet, tant que la demande est accompagnée d’un jeton d’autorisation valide. Pour configurer le contrôle d’accès basé sur la stratégie IP, l’utilisateur doit fournir le jeu d’adresses IP ou de plages d’adresses IP au format CIDR (Classless Inter-Domain Routing) afin de l’ajouter à la liste des adresses IP clientes autorisées à accéder à un compte Azure Cosmos DB donné. Une fois cette configuration appliquée, toutes les demandes provenant d'ordinateurs qui ne figurent pas sur cette liste autorisée reçoivent une réponse 403 (Interdit). Lorsque vous utilisez un pare-feu IP, il est recommandé d’autoriser le portail Azure à accéder à votre compte. L’accès est requis pour autoriser l’utilisation de l’Explorateur de données et récupérer des métriques pour votre compte qui s’affichent sur le portail Azure. Lorsque vous utilisez l’explorateur de données, en plus de permettre au portail Azure d'accéder à votre compte, vous devez mettre à jour vos paramètres de pare-feu pour ajouter votre adresse IP actuelle aux règles de pare-feu. Les modifications de pare-feu peuvent prendre jusqu’à 15 minutes pour se propager et que le pare-feu peut présenter un comportement incohérent pendant cette période.

Vous pouvez combiner des pare-feu IP avec le contrôle d’accès de réseau virtuel et de sous-réseau. En les combinant, vous pouvez limiter l’accès à n’importe quelle source qui a une adresse IP publique et/ou à partir d’un sous-réseau spécifique au sein du réseau virtuel. Pour en savoir plus sur l’utilisation du contrôle d’accès basé sur le sous-réseau et le réseau virtuel, consultez Accéder aux ressources Azure Cosmos DB à partir de réseaux virtuels.

Pour résumer, le jeton d’autorisation est toujours requis pour accéder à un compte Azure Cosmos DB. Si le pare-feu IP et la liste de contrôle d’accès (ACL) de réseau virtuel ne sont pas configurés, le compte Azure Cosmos DB est accessible avec le jeton d’autorisation. Une fois que le pare-feu IP ou la liste de contrôle d’accès (ACL) de réseau virtuel (ou les deux) sont configurés sur le compte Azure Cosmos DB, seules les demandes provenant des sources que vous avez spécifiées (et avec le jeton d’autorisation) obtiennent des réponses valides.

Vous pouvez sécuriser les données stockées dans votre compte Azure Cosmos DB à l’aide de pare-feu IP. Azure Cosmos DB prend en charge les contrôles d’accès basés sur IP pour le pare-feu entrant. Vous pouvez définir un pare-feu IP sur le compte Azure Cosmos DB de l’une des manières suivantes :

  • À partir du portail Azure
  • De manière déclarative en utilisant un modèle Azure Resource Manager
  • Par programmation avec Azure CLI ou Azure PowerShell en mettant à jour la propriété ipRangeFilter

Configurer un pare-feu IP à l’aide du portail Azure

Si vous souhaitez définir la stratégie de contrôle d’accès IP dans le Portail Azure, accédez à la page du compte Azure Cosmos DB, puis sélectionnez Mise en réseau dans le menu de navigation. Définissez la valeur Autoriser l’accès depuis sur Réseaux sélectionnés, puis choisissez Enregistrer. Si vous n’ajoutez pas encore d’adresse IP, vous devrez également cocher la case pour reconnaître que tous les réseaux virtuels et adresses IP seront bloqués. Si vous modifiez les paramètres du réseau d'accès public, soit en le désactivant, soit en l'autorisant pour tous les réseaux, vous perdez l'IP du pare-feu que vous avez peut-être configuré auparavant.

Capture d’écran des paramètres de pare-feu réseau d’Azure Cosmos DB dans le portail Azure.

Lorsque le contrôle d’accès IP est activé, le portail Azure offre la possibilité de spécifier des adresses IP, des plages d’adresses IP et des commutateurs. Les commutateurs permettent d’accéder à d’autres services Azure et au portail Azure. Les sections suivantes fournissent plus d’informations sur ces commutateurs.

Notes

Une fois la stratégie de contrôle d’accès IP activée pour votre compte Azure Cosmos DB, toutes les demandes envoyées à votre compte Azure Cosmos DB à partir d’ordinateurs ne figurant pas dans la liste autorisée de plages d’adresses IP sont refusées. L’exploration de ressources Azure Cosmos DB à partir du portail est également bloquée pour garantir l’intégrité du contrôle d’accès.

Autoriser les demandes à partir du portail Azure

Lorsque vous activerez une stratégie de contrôle d’accès d’adresses IP de manière programmatique, vous devrez peut-être ajouter les adresses IP pour les services du Portail Azure à la propriété ipRangeFilter afin de continuer à utiliser certaines fonctionnalités du portail.

Les scénarios de portail qui nécessitent l’activation de cette option sont les suivants :

  • Spécifiquement pour l’API pour MongoDB ou l’API pour Apache Cassandra, accès aux comptes avec l’Explorateur de données ou <cosmos.azure.com>
  • Pour toutes les API, utilisation des panneaux Azure Cosmos DB suivants dans le portail Azure :
    • Parcourir les collections
    • Power BI
    • Azure Synapse

Vous pouvez autoriser les demandes d’accès au Portail Azure en sélectionnant l’option Ajouter des adresses IP d’intergiciel du Portail Azure, comme illustré dans la capture d’écran suivante :

Capture d’écran des options permettant d’ajouter des adresses IP d’intergiciel à la mise en réseau dans le portail Azure.

Les adresses IP d’intergiciel du Portail Azure sont ajoutées à une liste distincte, comme illustré dans la capture d’écran suivante. Cliquez sur Enregistrer pour ajouter ces adresses à votre compte de base de données. Vous trouverez d’autres informations sur les adresses IP d’intergiciel plus loin dans cet article.

Capture d’écran de la liste des adresses IP d’intergiciel pour la mise en réseau dans le portail Azure.

Vous pouvez supprimer des adresses IP d’intergiciel du Portail Azure en cliquant sur l’option Supprimer des adresses IP d’intergiciel du Portail Azure, puis en sélectionnant Enregistrer.

Adresses IP d’intergiciel du Portail Azure

Les adresses IP d’intergiciel du Portail Azure sont répertoriées ci-dessous. Certaines adresses IP sont uniquement requises pour des API de compte de base de données spécifiques. Lorsque vous ajoutez les adresses IP d’intergiciel dans le portail, comme décrit ci-dessus, seules les adresses IP requises pour votre compte sont ajoutées.

Par exemple :

  • Pour une API de compte NoSQL, les adresses IP de la catégorie Tout sont ajoutées.

  • Pour une API de compte MongoDB, les adresses IP des catégories Tout et MongoDB uniquement sont ajoutées.

Azure (public)
API compte de base de données Adresses IP
Tous 13.91.105.215, 4.210.172.107, 13.88.56.148, 40.91.218.243
MongoDB uniquement 20.245.81.54, 40.118.23.126, 40.80.152.199, 13.95.130.121
Apache Cassandra uniquement 40.113.96.14, 104.42.11.145, 137.117.230.240, 168.61.72.237
Azure Chine
API compte de base de données Adresses IP
Tous 163.228.137.6, 143.64.170.142
MongoDB uniquement 52.131.240.99, 143.64.61.130
Apache Cassandra uniquement 40.73.99.146, 143.64.62.47
Azure US Government
API compte de base de données Adresses IP
Tous 52.247.163.6, 52.244.134.181
MongoDB uniquement 52.244.176.112, 52.247.148.42
Apache Cassandra uniquement 52.244.50.101, 52.227.165.24

Adresses IP d’intergiciel héritées

Les services du portail Cosmos DB ont récemment migré vers une nouvelle infrastructure qui exige de nouvelles adresses IP d’intergiciel. Avec l’achèvement de cette migration, les adresses IP héritées utilisées par l’ancienne infrastructure peuvent maintenant être supprimées en toute sécurité. Si votre compte a des adresses IP d’intergiciel héritées présentes dans les règles de pare-feu, l’option Supprimer des adresses IP d’intergiciel héritées du Portail Azure s’affiche. Sélectionnez cette option, puis Enregistrer pour supprimer les adresses IP héritées.

Capture d’écran de l’option permettant de supprimer les IP d’intergiciel héritées pour la mise en réseau dans le portail Azure.

Les adresses IP héritées dépendent de l’environnement cloud :

Environnement Azure Adresses IP
Azure (public) 104.42.195.92, 40.76.54.131, 52.176.6.30, 52.169.50.45, 52.187.184.26
Azure Chine 139.217.8.252, 52.176.6.30, 52.169.50.45, 52.187.184.26
Azure US Government 52.244.48.71, 52.176.6.30, 52.169.50.45, 52.187.184.26

Remarque

Si vous rencontrez des difficultés pour vous connecter à votre compte Azure Cosmos DB à partir de l’Explorateur de données, consultez le guide de résolution des problèmes Data Explorer.

Autoriser les demandes à partir de centres de données Azure internationaux ou d’autres sources au sein d’Azure

Si vous accédez à votre compte Azure Cosmos DB à partir de services qui ne fournissent pas d’adresse IP statique (par exemple, Azure Stream Analytics et Azure Functions), vous pouvez toujours utiliser le pare-feu IP pour limiter l’accès. Vous pouvez autoriser l’accès à partir d’autres sources au sein du portail Azure en sélectionnant l’option Accepter les connexions des centres de données Azure, comme illustré dans la capture d’écran suivante :

Capture d’écran de l’option permettant d’accepter les connexions à partir des centres de données Azure publics dans le portail Azure.

Lorsque vous activez cette option, l’adresse IP 0.0.0.0 est ajoutée à la liste des adresses IP autorisées. L’adresse IP 0.0.0.0 limite les demandes envoyées à votre compte Azure Cosmos DB à partir de la plage d’adresses IP du centre de données Azure. Ce paramètre n’autorise aucune autre plage d’adresses IP à accéder à votre compte Azure Cosmos DB.

Remarque

La configuration de publicNetworkAccess sur Désactivé est prioritaire sur cette option Accepter la connexion à partir des centres de données Azure. Consultez blocking-public-network-access-during-account-creation

Remarque

Cette option configure le pare-feu pour autoriser toutes les demandes d’Azure, notamment les demandes envoyées par les abonnements d’autres clients déployés dans Azure. Comme la liste des adresses IP autorisées par cette option est grande, elle limite l’efficacité d’une stratégie de pare-feu. Utilisez cette option uniquement si vos demandes ne proviennent pas d’adresses IP statiques ou de sous-réseaux de réseaux virtuels. Comme le portail est déployé dans Azure, quand vous choisissez cette option, vous autorisez automatiquement l’accès à partir du portail Azure.

Demandes à partir de votre adresse IP actuelle

Pour simplifier le développement, le portail Azure vous aide à identifier et à ajouter l’adresse IP de votre ordinateur client à la liste autorisée, afin que les applications qui exécutent votre machine puissent accéder au compte Azure Cosmos DB.

Le portail détecte automatiquement l’adresse IP du client. Il peut s’agir de l’adresse IP de votre ordinateur ou de votre passerelle réseau. N’oubliez pas de supprimer cette adresse IP avant de mettre vos charges de travail en production.

Pour ajouter votre adresse IP actuelle à la liste des adresses IP, sélectionnez Ajouter votre adresse IP actuelle. Ensuite, sélectionnez Enregistrer.

Capture d’écran de l’option permettant d’ajouter votre adresse IP actuelle à la mise en réseau dans le portail Azure.

Demandes à partir de services cloud

Dans Azure, les services cloud sont une méthode courante d’hébergement de la logique de service de couche intermédiaire à l’aide d’Azure Cosmos DB. Pour autoriser l’accès à votre compte Azure Cosmos DB à partir d’un service cloud, vous devez ajouter l’adresse IP publique de ce dernier à la liste autorisée d’adresses IP associées à votre compte Azure Cosmos DB en configurant la stratégie de contrôle d’accès IP. De cette façon, toutes les instances de rôle des services cloud ont accès à votre compte Azure Cosmos DB.

Vous pouvez récupérer des adresses IP pour vos services cloud dans le portail Azure, comme illustré dans la capture d’écran suivante :

Capture d’écran illustrant l’adresse IP publique pour un service cloud affichée dans le portail Azure

Quand vous effectuez un scale-out de votre service cloud en ajoutant des instances de rôle, ces nouvelles instances ont automatiquement accès au compte Azure Cosmos DB car elles font partie du même service cloud.

Demandes à partir de machines virtuelles

Vous pouvez également utiliser des machines virtuelles ou des jeux de mise à l’échelle de machine virtuelle pour héberger les services de couche intermédiaire à l’aide d’Azure Cosmos DB. Pour configurer votre compte Azure Cosmos DB afin qu’il autorise l’accès à partir de machines virtuelles, vous devez configurer l’adresse IP publique de la machine virtuelle et/ou du groupe de machines virtuelles identiques comme étant l’une des adresses IP autorisées pour votre compte Azure Cosmos DB en configurant la stratégie de contrôle d’accès IP.

Vous pouvez récupérer des adresses IP pour les machines virtuelles dans le portail Azure, comme illustré dans la capture d’écran suivante :

Capture d’écran illustrant une adresse IP publique pour une machine virtuelle affichée dans le portail Azure

Quand vous ajoutez des instances de machine virtuelle au groupe, elles ont automatiquement accès à votre compte Azure Cosmos DB.

Demandes à partir d’Internet

Quand vous accédez à votre compte Azure Cosmos DB à partir d’un ordinateur sur Internet, l’adresse IP ou la plage d’adresses IP de l’ordinateur doit être ajoutée à la liste d’adresses IP autorisées pour votre compte.

Ajouter des règles de trafic sortant au pare-feu

Pour accéder à la liste actuelle des plages d’adresses IP sortantes à ajouter à vos paramètres de pare-feu, consultez Télécharger des plages d’adresses IP et des étiquettes de service Azure.

Pour automatiser la liste, consultez Utilisation de l’API Découverte d’étiquettes de service.

Configurer un pare-feu IP à l’aide d’un modèle Resource Manager

Pour configurer le contrôle d'accès à votre compte Azure Cosmos DB, vérifiez que le modèle Resource Manager spécifie la propriété ipRules avec un tableau de plages d'adresses IP autorisées. Si vous configurez le pare-feu IP sur un compte Azure Cosmos DB déjà déployé, vérifiez que le tableau locations correspond à ce qui est actuellement déployé. Vous ne pouvez pas modifier simultanément le tableau locations et d’autres propriétés. Pour plus d’informations et pour obtenir des exemples de modèles Azure Resource Manager pour Azure Cosmos DB, consultez Modèles Azure Resource Manager pour Azure Cosmos DB

Important

La propriété ipRules a été introduite avec la version 2020-04-01 de l'API. Les versions précédentes exposaient plutôt une propriété ipRangeFilter, qui correspond à une liste d'adresses IP séparées par des virgules.

L'exemple montre comment la propriété ipRules est exposée dans la version 2020-04-01 ou ultérieure de l'API :

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "name": "[variables('accountName')]",
  "apiVersion": "2020-04-01",
  "location": "[parameters('location')]",
  "kind": "GlobalDocumentDB",
  "properties": {
    "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard",
    "enableAutomaticFailover": "[parameters('automaticFailover')]",
    "ipRules": [
      {
        "ipAddressOrRange": "13.91.105.215"
      },
      {
        "ipAddressOrRange": "4.210.172.107"
      },
      {
        "ipAddressOrRange": "13.88.56.148"
      },
      {
        "ipAddressOrRange": "40.91.218.243"
      }
    ]
  }
}

Voici le même exemple pour toute version de l'API antérieure à la version 2020-04-01 :

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "name": "[variables('accountName')]",
  "apiVersion": "2019-08-01",
  "location": "[parameters('location')]",
  "kind": "GlobalDocumentDB",
  "properties": {
    "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard",
    "enableAutomaticFailover": "[parameters('automaticFailover')]",
    "ipRangeFilter":"13.91.105.215,4.210.172.107,13.88.56.148,40.91.218.243"
  }
}

Configurer une stratégie de contrôle d’accès IP à l’aide d’Azure CLI

La commande suivante montre comment créer un compte Azure Cosmos DB avec le contrôle d’accès IP :

# Create an Azure Cosmos DB account with default values and IP Firewall enabled
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
ipRangeFilter='192.168.221.17,183.240.196.255,40.76.54.131'

# Make sure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
az cosmosdb create \
    -n $accountName \
    -g $resourceGroupName \
    --locations regionName='West US 2' failoverPriority=0 isZoneRedundant=False \
    --locations regionName='East US 2' failoverPriority=1 isZoneRedundant=False \
    --ip-range-filter $ipRangeFilter

Configurer une stratégie de contrôle d’accès IP à l’aide de PowerShell

Le script suivant montre comment créer un compte Azure Cosmos DB avec contrôle d’accès IP :

# Create an Azure Cosmos DB account with default values and IP Firewall enabled
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$ipRules = @("192.168.221.17","183.240.196.255","40.76.54.131")

$locations = @(
    @{ "locationName"="West US 2"; "failoverPriority"=0; "isZoneRedundant"=False },
    @{ "locationName"="East US 2"; "failoverPriority"=1, "isZoneRedundant"=False }
)

# Make sure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
$CosmosDBProperties = @{
    "databaseAccountOfferType"="Standard";
    "locations"=$locations;
    "ipRules"=$ipRules
}

New-AzResource -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
    -ApiVersion "2020-04-01" -ResourceGroupName $resourceGroupName `
    -Name $accountName -PropertyObject $CosmosDBProperties

Résoudre les problèmes de stratégie de contrôle d’accès IP

Vous pouvez résoudre les problèmes de stratégie de contrôle d’accès IP en utilisant les options suivantes :

Portail Azure

En activant une stratégie de contrôle d’accès IP pour votre compte Azure Cosmos DB, vous bloquez toutes les demandes envoyées à votre compte à partir d’ordinateurs ne figurant pas dans la liste autorisée de plages d’adresses IP. Pour autoriser des opérations de plan de données du portail comme la navigation dans les conteneurs et l’interrogation de documents, vous devez autoriser explicitement l’accès au portail Azure à l’aide du volet Pare-feu du portail.

SDK

Lorsque vous accédez à des ressources Azure Cosmos DB à l’aide de kits SDK sur des ordinateurs qui ne sont pas dans la liste autorisée, une réponse générique 403 Interdit est renvoyée sans plus de détails. Vérifiez la liste d’adresses IP autorisées pour votre compte et vérifiez que la configuration de stratégie appropriée est appliquée à votre compte Azure Cosmos DB.

Adresses IP sources dans les demandes bloquées

Activez la journalisation des diagnostics sur votre compte Azure Cosmos DB. Ces journaux d’activité affichent chaque demande et réponse. Les messages associés au pare-feu sont journalisés avec le code de retour 403. En filtrant ces messages, vous pouvez voir les adresses IP sources des demandes bloquées. Consultez Journalisation des diagnostics Azure Cosmos DB.

Demandes à partir d’un sous-réseau avec un point de terminaison de service activé pour Azure Cosmos DB

Les demandes à partir d’un sous-réseau de réseau virtuel avec un point de terminaison de service activé pour Azure Cosmos DB envoient l’identité de réseau virtuel et de sous-réseau aux comptes Azure Cosmos DB. Comme ces demandes n’ont pas l’adresse IP publique de la source, les filtres IP les rejettent. Pour autoriser l’accès à partir de sous-réseaux spécifiques de réseaux virtuels, ajoutez une liste de contrôle d’accès, comme indiqué dans Configurer l’accès à votre compte Azure Cosmos DB à partir d’un réseau virtuel et d’un sous-réseau. L’application de règles de pare-feu peut prendre jusqu’à 15 minutes et le pare-feu peut présenter un comportement incohérent pendant cette période.

Adresses IP privées dans la liste des adresses autorisées

La création ou la mise à jour d’un compte Azure Cosmos DB avec une liste d’adresses autorisées contenant des adresses IP privées échoue. Assurez-vous qu'aucune adresse IP privée ne figure dans la liste.