Configurer l’accès à Azure Cosmos DB à partir de réseaux virtuels (VNet)

S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin Table

Vous pouvez configurer le compte Azure Cosmos DB pour n'autoriser l'accès qu'à partir d'un sous-réseau spécifique d’un réseau virtuel (VNET). Activez le point de terminaison de service sur un sous-réseau au sein d’un réseau virtuel pour contrôler l’accès à Azure Cosmos DB. Le trafic provenant de ce sous-réseau est envoyé à Azure Cosmos DB avec l’identité du sous-réseau et du réseau virtuel. Une fois le point de terminaison de service Azure Cosmos DB activé, vous pouvez limiter l’accès au sous-réseau en l’ajoutant à votre compte Azure Cosmos DB.

Par défaut, un compte Azure Cosmos DB est accessible depuis n’importe quelle source tant que la requête est accompagnée d’un jeton d’autorisation valide. Lorsque vous ajoutez un ou plusieurs sous-réseaux au sein de réseaux virtuels, seules les requêtes provenant de ces sous-réseaux obtiendront une réponse valide. Les requêtes provenant de toute autre source recevront une réponse 403 (Interdit).

Vous pouvez configurer les comptes Azure Cosmos DB pour autoriser l’accès uniquement à partir d’un sous-réseau spécifique de réseau virtuel Azure. Pour limiter l’accès à un compte Azure Cosmos DB avec des connexions issues d’un sous-réseau dans un réseau virtuel :

  1. Activez le point de terminaison de service pour Azure Cosmos DB afin d’envoyer l’identité du sous-réseau et du réseau virtuel à Azure Cosmos DB.

  2. Ajoutez au compte Azure Cosmos DB une règle spécifiant le sous-réseau comme source permettant d’accéder au compte.

Notes

Une fois qu’un point de terminaison de service pour votre compte Azure Cosmos DB est activé sur un sous-réseau, la source du trafic qui atteint Azure Cosmos DB bascule d’une adresse IP publique vers un réseau virtuel et un sous-réseau. Le basculement du trafic s’applique à tous les comptes Azure Cosmos DB accessibles à partir de ce sous-réseau. Si vos comptes Azure Cosmos DB utilisent un pare-feu basé sur l’adresse IP pour autoriser ce sous-réseau, les requêtes issues du sous-réseau avec service ne correspondent plus aux règles de pare-feu IP et sont rejetées.

Pour plus d’informations, voir les étapes décrites dans la section Migrer à partir d’une règle de pare-feu IP à une liste de contrôle d’accès de réseau virtuel de cet article.

Les sections suivantes expliquent comment configurer un point de terminaison de service de réseau virtuel pour un compte Azure Cosmos DB.

Configurer un point de terminaison de service avec le portail Azure

Configurer un point de terminaison de service pour un réseau virtuel et un sous-réseau Azure existants

  1. À partir du panneau Toutes les ressources, recherchez le compte Azure Cosmos DB que vous souhaitez sécuriser.

  2. Sélectionnez Mise en réseau dans le menu Paramètres.

    Screenshot of the networking menu option.

  3. Choisissez d’autoriser l’accès à partir des Réseaux sélectionnés.

  4. Pour accorder l’accès au sous-réseau d’un réseau virtuel existant, sélectionnez Ajouter un réseau virtuel Azure existant sous Réseaux virtuels.

  5. Sélectionnez l’abonnement à partir duquel vous souhaitez ajouter un réseau virtuel Azure. Sélectionnez les Réseaux virtuels et Sous-réseaux Azure auxquels vous voulez fournir l’accès à votre compte Azure Cosmos DB. Ensuite, sélectionnez Activer pour activer les réseaux sélectionnés avec les points de terminaison de service pour « Microsoft.AzureCosmosDB ». Une fois terminé, sélectionnez Ajouter.

    Screenshot of the dialog to select an existing Azure Virtual Network and subnet with an Azure Cosmos DB service endpoint.

    Remarque

    La configuration d’un point de terminaison de service VNET peut prendre jusqu’à 15 minutes pour se propager et le point de terminaison peut présenter un comportement incohérent pendant cette période.

  6. Lorsque le compte Azure Cosmos DB se voit autoriser l’accès à partir d’un réseau virtuel, il autorise uniquement le trafic provenant de ce sous-réseau. Le réseau virtuel et le sous-réseau que vous avez ajoutés devraient se présenter comme dans la capture d’écran suivante :

    Screenshot of an Azure Virtual Network and subnet configured successfully in the list.

Remarque

Les autorisations d’abonnement suivantes sont nécessaires pour activer les points de terminaison de service de réseau virtuel :

  • Abonnement avec un réseau virtuel : Contributeur de réseau
  • Abonnement avec un compte Azure Cosmos DB : Contributeur de compte DocumentDB
  • Si votre réseau virtuel et votre compte Azure Cosmos DB se trouvent dans des abonnements différents, assurez-vous que l’abonnement contenant le réseau virtuel possède également le fournisseur de ressources Microsoft.DocumentDB inscrit. Pour inscrire un fournisseur de ressources, consultez l’article Fournisseurs et types de ressources Azure.

Voici les instructions pour inscrire un abonnement avec le fournisseur de ressources.

Configurer un point de terminaison de service pour un nouveau réseau virtuel et un nouveau sous-réseau Azure

  1. À partir du panneau Toutes les ressources, recherchez le compte Azure Cosmos DB que vous souhaitez sécuriser.

  2. Sélectionnez Mise en réseau dans le menu Paramètres et choisissez d’autoriser l’accès à partir des Réseaux sélectionnés.

  3. Pour accorder l’accès à un nouveau réseau virtuel Azure, sélectionnez Ajouter un nouveau réseau virtuel sous Réseaux virtuels.

  4. Fournissez les détails nécessaires pour créer un réseau virtuel, puis sélectionnez Créer. Le sous-réseau sera créé avec un point de terminaison de service pour « Microsoft.AzureCosmosDB » activé.

    Screenshot of the dialog to create a new Azure Virtual Network, configure a subnet, and then enable the Azure Cosmos DB service endpoint.

Si votre compte Azure Cosmos DB est utilisé par d’autres services Azure tels que Azure AI Search, ou s’il est accessible à partir de Stream Analytics ou de Power BI, vous autorisez l’accès en sélectionnant Accepter les connexions provenant des centres de données Azure globaux.

Pour être sûr d’avoir accès aux métriques Azure Cosmos DB à partir du portail, vous devez activer l’option Autoriser l’accès à partir du portail Azure. Pour en savoir plus sur ces options, consultez l’article Configurer un pare-feu IP. Après avoir activé l’accès, sélectionnez Enregistrer pour enregistrer les paramètres.

Supprimer un réseau virtuel ou un sous-réseau

  1. À partir du panneau Toutes les ressources, recherchez le compte Azure Cosmos DB pour lequel vous avez affecté des points de terminaison de service.

  2. Sélectionnez Mise en réseau dans le menu Paramètres.

  3. Pour supprimer une règle de réseau virtuel ou de sous-réseau, sélectionnez ... en regard du réseau virtuel ou du sous-réseau et sélectionnez Supprimer.

    Screenshot of the menu option to remove an associated Azure Virtual Network.

  4. Sélectionnez Enregistrer pour enregistrer vos modifications.

Configurer un point de terminaison de service avec Azure PowerShell

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Effectuez les étapes suivantes afin de configurer un point de terminaison de service pour un compte Azure Cosmos DB à l’aide d’Azure PowerShell :

  1. Installez Azure PowerShell et connectez-vous.

  2. Activez le point de terminaison de service pour un sous-réseau existant d’un réseau virtuel.

    $resourceGroupName = "<Resource group name>"
    $vnetName = "<Virtual network name>"
    $subnetName = "<Subnet name>"
    $subnetPrefix = "<Subnet address range>"
    $serviceEndpoint = "Microsoft.AzureCosmosDB"
    
    Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName | Set-AzVirtualNetworkSubnetConfig `
       -Name $subnetName `
       -AddressPrefix $subnetPrefix `
       -ServiceEndpoint $serviceEndpoint | Set-AzVirtualNetwork
    

    Notes

    Lorsque vous utilisez PowerShell ou l’interface Azure CLI, n’oubliez pas de spécifier la liste complète des filtres IP et les ACL du réseau virtuel dans Paramètres, pas seulement ceux qui doivent être ajoutés.

  3. Obtenez les informations relatives au réseau virtuel.

    $vnet = Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName
    
    $subnetId = $vnet.Id + "/subnets/" + $subnetName
    
  4. Préparer une règle de réseau virtuel Azure Cosmos DB

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  5. Mettez à jour les propriétés du compte Azure Cosmos DB avec la nouvelle configuration du point de terminaison du réseau virtuel :

    $accountName = "<Azure Cosmos DB account name>"
    
    Update-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName `
       -EnableVirtualNetwork $true `
       -VirtualNetworkRuleObject @($vnetRule)
    
  6. Exécutez la commande suivante pour vérifier que votre compte Azure Cosmos DB est mis à jour avec le point de terminaison de service de réseau virtuel que vous avez configuré à l’étape précédente :

    $account = Get-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName
    
    $account.IsVirtualNetworkFilterEnabled
    $account.VirtualNetworkRules
    

Configurer un point de terminaison de service avec Azure CLI

Des comptes Azure Cosmos DB peuvent être configurés pour des points de terminaison de service au moment de leur création ou de leur mise à jour ultérieure si le sous-réseau est déjà configuré pour ceux-ci. Des points de terminaison de service peuvent aussi être activés sur le compte Azure Cosmos DB où le sous-réseau n’est pas encore configuré. Ils seront opérationnels quand le sous-réseau aura été configuré ultérieurement. Cette flexibilité permet aux administrateurs qui n’ont pas accès aux ressources du compte Azure Cosmos DB et du réseau virtuel de rendre leurs configurations indépendantes les unes des autres.

Créer un compte Azure Cosmos DB et le connecter à un sous-réseau backend pour un nouveau réseau virtuel

Dans cet exemple, le réseau virtuel et le sous-réseau sont créés avec des points de terminaison de service qui sont activés pour les deux lors de leur création.

# Create an Azure Cosmos DB Account with a service endpoint connected to a backend subnet

# Resource group and Azure Cosmos DB account variables
resourceGroupName='MyResourceGroup'
location='West US 2'
accountName='mycosmosaccount'

# Variables for a new Virtual Network with two subnets
vnetName='myVnet'
frontEnd='FrontEnd'
backEnd='BackEnd'

# Create a resource group
az group create -n $resourceGroupName -l $location

# Create a virtual network with a front-end subnet
az network vnet create \
   -n $vnetName \
   -g $resourceGroupName \
   --address-prefix 10.0.0.0/16 \
   --subnet-name $frontEnd \
   --subnet-prefix 10.0.1.0/24

# Create a back-end subnet with service endpoints enabled for Azure Cosmos DB
az network vnet subnet create \
   -n $backEnd \
   -g $resourceGroupName \
   --address-prefix 10.0.2.0/24 \
   --vnet-name $vnetName \
   --service-endpoints Microsoft.AzureCosmosDB

svcEndpoint=$(az network vnet subnet show -g $resourceGroupName -n $backEnd --vnet-name $vnetName --query 'id' -o tsv)

# Create an Azure Cosmos DB account with default values and service endpoints
az cosmosdb create \
   -n $accountName \
   -g $resourceGroupName \
   --enable-virtual-network true \
   --virtual-network-rules $svcEndpoint

Connecter et configurer un compte Azure Cosmos DB sur un sous-réseau backend de manière indépendante

Cet exemple vise à montrer comment connecter un compte Azure Cosmos DB à un réseau virtuel, nouveau ou existant. Dans cet exemple, le sous-réseau n’est pas encore configuré pour les points de terminaison de service. Configurez le point de terminaison de service avec le paramètre --ignore-missing-vnet-service-endpoint. Cette configuration permet au compte Azure Cosmos DB d’être créé sans erreur avant même que la configuration du sous-réseau du réseau virtuel soit terminée. Une fois le sous-réseau configuré, le compte Azure Cosmos DB est alors accessible via le sous-réseau configuré.

# Create an Azure Cosmos DB Account with a service endpoint connected to a backend subnet
# that is not yet enabled for service endpoints.

# Resource group and Azure Cosmos DB account variables
resourceGroupName='MyResourceGroup'
location='West US 2'
accountName='mycosmosaccount'

# Variables for a new Virtual Network with two subnets
vnetName='myVnet'
frontEnd='FrontEnd'
backEnd='BackEnd'

# Create a resource group
az group create -n $resourceGroupName -l $location

# Create a virtual network with a front-end subnet
az network vnet create \
   -n $vnetName \
   -g $resourceGroupName \
   --address-prefix 10.0.0.0/16 \
   --subnet-name $frontEnd \
   --subnet-prefix 10.0.1.0/24

# Create a back-end subnet but without configuring service endpoints (--service-endpoints Microsoft.AzureCosmosDB)
az network vnet subnet create \
   -n $backEnd \
   -g $resourceGroupName \
   --address-prefix 10.0.2.0/24 \
   --vnet-name $vnetName

svcEndpoint=$(az network vnet subnet show -g $resourceGroupName -n $backEnd --vnet-name $vnetName --query 'id' -o tsv)

# Create an Azure Cosmos DB account with default values
az cosmosdb create -n $accountName -g $resourceGroupName

# Add the virtual network rule but ignore the missing service endpoint on the subnet
az cosmosdb network-rule add \
   -n $accountName \
   -g $resourceGroupName \
   --virtual-network $vnetName \
   --subnet svcEndpoint \
   --ignore-missing-vnet-service-endpoint true

read -p'Press any key to now configure the subnet for service endpoints'

az network vnet subnet update \
   -n $backEnd \
   -g $resourceGroupName \
   --vnet-name $vnetName \
   --service-endpoints Microsoft.AzureCosmosDB

Plage de ports lors de l’utilisation du mode direct

Lorsque vous utilisez des points de terminaison de service avec un compte Azure Cosmos DB via une connexion en mode direct, vous devez vous assurer que la plage de ports TCP comprise entre 10000 et 20000 est ouverte.

Migrer à partir d’une règle de pare-feu IP à une liste de contrôle d’accès de réseau virtuel

Pour migrer un compte Azure Cosmos DB utilisant des règles de pare-feu IP afin qu’il utilise des points de terminaison de service de réseau virtuel, procédez comme suit.

Après qu’un compte Azure Cosmos DB a été configuré pour un point de terminaison de service sur un sous-réseau, les requêtes issues de ce sous-réseau sont envoyées individuellement à Azure Cosmos DB. Les requêtes sont envoyées avec les informations sources du réseau virtuel et du sous-réseau au lieu d’une adresse IP publique source. Ces demandes ne correspondent plus à un filtre IP configuré sur le compte Azure Cosmos DB, ce qui explique pourquoi les étapes suivantes sont nécessaires afin d’éviter les temps d’arrêt.

  1. Obtenez les informations relatives au réseau virtuel et au sous-réseau :

    $resourceGroupName = "myResourceGroup"
    $accountName = "mycosmosaccount"
    $vnetName = "myVnet"
    $subnetName = "mySubnet"
    
    $vnet = Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName
    
    $subnetId = $vnet.Id + "/subnets/" + $subnetName
    
  2. Préparez un nouvel objet de règle Réseau virtuel pour le compte Azure Cosmos DB :

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  3. Mettez à jour le compte Azure Cosmos DB pour activer l’accès au point de terminaison de service à partir du sous-réseau :

    Update-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName `
       -EnableVirtualNetwork $true `
       -VirtualNetworkRuleObject @($vnetRule)
    
  4. Répétez les étapes précédentes pour tous les comptes Azure Cosmos DB faisant l’objet d’un accès à partir du sous-réseau.

  5. Activez le point de terminaison de service Azure Cosmos DB sur le réseau virtuel et le sous-réseau en utilisant l’étape indiquée dans la section Activer le point de terminaison de service pour un sous-réseau existant d’un réseau virtuel de cet article.

  6. Dans les règles de pare-feu du compte Azure Cosmos DB, supprimez la règle de pare-feu IP pour le sous-réseau.

Forum aux questions

Voici quelques questions fréquemment posées sur la configuration de l’accès à partir de réseaux virtuels :

Les notebooks et l’interpréteur de commandes Mongo/Cassandra sont-ils compatibles avec les comptes activés pour les réseaux virtuels ?

L’intégration de l’interpréteur de commandes Mongo et de l’interpréteur de commandes Cassandra à l’Explorateur de données Azure Cosmos DB n’est pas prise en charge avec l’accès au réseau virtuel, de même que le service Jupyter Notebooks. Cette intégration est en cours de développement.

Puis-je spécifier à la fois le point de terminaison de service de réseau virtuel et la stratégie de contrôle d’accès IP sur un compte Azure Cosmos DB ?

Vous pouvez activer à la fois le point de terminaison de service de réseau virtuel et une stratégie de contrôle d’accès IP (également appelée pare-feu) sur votre compte Azure Cosmos DB. Ces deux fonctionnalités sont complémentaires et garantissent collectivement l’isolation et la sécurité de votre compte Azure Cosmos DB. L’utilisation du pare-feu IP permet de s’assurer que les adresses IP statiques peuvent accéder à votre compte.

Comment limiter l’accès à un sous-réseau au sein d’un réseau virtuel ?

Il existe deux étapes requises pour limiter l’accès au compte Azure Cosmos DB à partir d’un sous-réseau. Tout d’abord, vous autorisez le trafic provenant du sous-réseau afin de communiquer à Azure Cosmos DB l’identité de son sous-réseau et de son réseau virtuel. Le changement de l’identité du trafic s’effectue en activant le point de terminaison de service pour Azure Cosmos DB sur le sous-réseau. Ensuite, vous ajoutez une règle au compte Azure Cosmos DB en spécifiant ce sous-réseau comme source à partir de laquelle le compte est accessible.

Les listes de contrôle d'accès (ACL) du réseau virtuel et le pare-feu IP rejetteront-ils les requêtes ou les connexions ?

Quand un pare-feu IP ou des règles d’accès à un réseau virtuel sont ajoutés, seules les requêtes provenant de sources autorisées obtiennent des réponses valides. Les autres requêtes sont rejetées avec une erreur 403 (Interdit). Il est important de distinguer le pare-feu du compte Azure Cosmos DB d’un pare-feu au niveau de la connexion. La source peut toujours se connecter au service et les connexions elles-mêmes ne sont pas rejetées.

Mes requêtes ont été bloquées lorsque j’ai activé le point de terminaison de service dans Azure Cosmos DB sur le sous-réseau. Que s’est-il passé ?

Une fois que le point de terminaison de service pour Azure Cosmos DB est activé sur un sous-réseau, la source du trafic qui atteint le compte bascule de l’adresse IP publique vers le réseau virtuel et le sous-réseau. Si votre compte Azure Cosmos DB est uniquement protégé par un pare-feu basé sur IP, le trafic provenant du sous-réseau avec service ne respecte plus les règles du pare-feu IP et, par conséquent, il sera rejeté. Passez en revue les étapes pour migrer en toute transparence d’un pare-feu basé sur IP à un contrôle d’accès basé sur un réseau virtuel.

Des autorisations de contrôle d’accès en fonction du rôle Azure supplémentaires sont-elles nécessaires pour les comptes Azure Cosmos DB configurés avec des points de terminaison de service de réseau virtuel ?

Si vous souhaitez apporter des modifications aux paramètres de compte après avoir ajouté les points de terminaison de service de réseau virtuel à un compte Azure Cosmos DB, vous devez accéder à l’action Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action pour tous les réseaux virtuels configurés sur votre compte Azure Cosmos DB. Ce privilège est requis, car le processus d’autorisation valide l’accès aux ressources (telles que les ressources de base de données et de réseau virtuel) avant d’évaluer des propriétés.

L’autorisation valide le privilège pour l’action de ressource de réseau virtuel, même si l’utilisateur ne spécifie pas les ACL de réseau virtuel à l’aide d’Azure CLI. Actuellement, le plan de contrôle du compte Azure Cosmos DB prend en charge la configuration de l’état complet du compte Azure Cosmos DB. L’un des paramètres des appels du plan de contrôle est virtualNetworkRules. Si ce paramètre n’est pas spécifié, Azure CLI effectue un appel d’extraction de base de données pour récupérer virtualNetworkRules et utilise cette valeur dans l’appel de mise à jour.

Les réseaux virtuels homologués ont-ils également accès au compte Azure Cosmos DB ?

Seuls le réseau virtuel et ses sous-réseaux ajoutés au compte Azure Cosmos DB y ont accès. Leurs réseaux virtuels en peering ne peuvent pas accéder au compte tant que les sous-réseaux des réseaux virtuels en peering ne sont pas ajoutés au compte.

Quel est le nombre maximal de sous-réseaux autorisés à accéder à un seul compte Azure Cosmos DB ?

Actuellement, vous pouvez avoir au maximum 256 sous-réseaux autorisés pour un compte Azure Cosmos DB.

Puis-je activer l’accès à partir d’un VPN et d’Express Route ?

Pour accéder localement au compte Azure Cosmos DB via ExpressRoute, vous devez activer le Peering Microsoft. Lorsque vous activez un pare-feu IP ou définissez des règles d’accès à un réseau virtuel, vous pouvez ajouter les adresses IP publiques utilisées pour le Peering Microsoft au pare-feu IP de votre compte Azure Cosmos DB afin d’autoriser l’accès des services locaux au compte Azure Cosmos DB.

Dois-je mettre à jour les règles des groupes de sécurité réseau (NSG) ?

Les règles des groupes de sécurité réseau permettent de limiter la connectivité vers et depuis un sous-réseau de réseau virtuel. Lorsque vous ajoutez un point de terminaison de service pour Azure Cosmos DB au sous-réseau, il est inutile d’ouvrir la connectivité sortante dans le groupe de sécurité réseau pour votre compte Azure Cosmos DB.

Existe-t-il des points de terminaison de service pour tous les réseaux virtuels ?

Non, seuls les réseaux virtuels Azure Resource Manager peuvent bénéficier d’un point de terminaison de service. Les réseaux virtuels classiques ne prennent pas en charge les points de terminaison de service.

Quand dois-je accepter les connexions provenant des centres de données Azure globaux pour un compte Azure Cosmos DB ?

Ce paramètre ne doit être activé que si vous souhaitez que votre compte Azure Cosmos DB soit accessible à n’importe quel service Azure dans n’importe quelle région Azure. D’autres services Azure de première partie, comme Azure Data Factory et Azure AI Search, fournissent de la documentation sur la sécurisation de l’accès aux sources de données, y compris pour les comptes Azure Cosmos DB, par exemple :

Étapes suivantes