Configurer l’accès à partir de réseaux virtuels (VNet)Configure access from virtual networks (VNet)

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.You can configure Azure Cosmos DB accounts to allow access from only a specific subnet of an Azure virtual network. Pour limiter l’accès à un compte Azure Cosmos DB avec des connexions issues d’un sous-réseau dans un réseau virtuel :To limit access to an Azure Cosmos DB account with connections from a subnet in a virtual network:

  1. Autorisez le sous-réseau à envoyer l’identité du sous-réseau et du réseau virtuel à Azure Cosmos DB.Enable the subnet to send the subnet and virtual network identity to Azure Cosmos DB. Pour cela, activez un point de terminaison de service pour Azure Cosmos DB sur le sous-réseau concerné.You can achieve this by enabling a service endpoint for Azure Cosmos DB on the specific subnet.

  2. Ajoutez au compte Azure Cosmos DB une règle spécifiant le sous-réseau comme source permettant d’accéder au compte.Add a rule in the Azure Cosmos DB account to specify the subnet as a source from which the account can be accessed.

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.When a service endpoint for your Azure Cosmos DB account is enabled on a subnet, the source of the traffic that reaches Azure Cosmos DB switches from a public IP to a virtual network and subnet. Le basculement du trafic s’applique à tous les comptes Azure Cosmos DB accessibles à partir de ce sous-réseau.The traffic switching applies for any Azure Cosmos DB account that's accessed from this subnet. 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.If your Azure Cosmos DB accounts have an IP-based firewall to allow this subnet, requests from the service-enabled subnet no longer match the IP firewall rules, and they're rejected.

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.To learn more, see the steps outlined in the Migrating from an IP firewall rule to a virtual network access control list section of this article.

Les sections suivantes expliquent comment configurer un point de terminaison de service de réseau virtuel pour un compte Azure Cosmos DB.The following sections describe how to configure a virtual network service endpoint for an Azure Cosmos DB account.

Notes

Cet article a été mis à jour pour tenir compte de l’utilisation du nouveau module Az d’Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Vous pouvez toujours utiliser le module AzureRM, qui continue à recevoir des correctifs de bogues jusqu’à au moins décembre 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Pour en savoir plus sur le nouveau module Az et la compatibilité avec AzureRM, consultez Présentation du nouveau module Az d’Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Pour des instructions d’installation du module Az, consultez Installer Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Configurer un point de terminaison de service avec le portail AzureConfigure a service endpoint by using the Azure portal

Configurer un point de terminaison de service pour un réseau virtuel et un sous-réseau Azure existantsConfigure a service endpoint for an existing Azure virtual network and subnet

  1. À partir du panneau Toutes les ressources, recherchez le compte Azure Cosmos DB que vous souhaitez sécuriser.From the All resources blade, find the Azure Cosmos DB account that you want to secure.

  2. Sélectionnez Pare-feu et réseaux virtuels dans le menu Paramètres et choisissez d’autoriser l’accès à partir de Réseaux sélectionnés.Select Firewalls and virtual networks from the settings menu, and choose to allow access from Selected networks.

  3. 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.To grant access to an existing virtual network's subnet, under Virtual networks, select Add existing Azure virtual network.

  4. Sélectionnez l’abonnement à partir duquel vous souhaitez ajouter un réseau virtuel Azure.Select the Subscription from which you want to add an Azure virtual network. Sélectionnez les Réseaux virtuels et Sous-réseaux Azure auxquels vous voulez fournir l’accès à votre compte Azure Cosmos DB.Select the Azure Virtual networks and Subnets that you want to provide access to your Azure Cosmos DB account. Ensuite, sélectionnez Activer pour activer les réseaux sélectionnés avec les points de terminaison de service pour « Microsoft.AzureCosmosDB ».Next, select Enable to enable selected networks with service endpoints for "Microsoft.AzureCosmosDB". Une fois terminé, sélectionnez Ajouter.When it's complete, select Add.

    Sélectionner un réseau virtuel et un sous-réseau

  5. 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.After the Azure Cosmos DB account is enabled for access from a virtual network, it will allow traffic from only this chosen subnet. 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 :The virtual network and subnet that you added should appear as shown in the following screenshot:

    Réseau virtuel et sous-réseau configurés correctement

Notes

Les autorisations d’abonnement suivantes sont nécessaires pour activer les points de terminaison de service de réseau virtuel :To enable virtual network service endpoints, you need the following subscription permissions:

  • Abonnement avec un réseau virtuel : Contributeur de réseauSubscription with virtual network: Network contributor
  • Abonnement avec un compte Azure Cosmos DB : Contributeur de compte DocumentDBSubscription with Azure Cosmos DB account: DocumentDB account contributor
  • 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.If your virtual network and Azure Cosmos DB account are in different subscriptions, make sure that the subscription that has virtual network also has Microsoft.DocumentDB resource provider registered. Pour inscrire un fournisseur de ressources, consultez l’article Fournisseurs et types de ressources Azure.To register a resource provider, see Azure resource providers and types article.

Voici les instructions pour inscrire un abonnement avec le fournisseur de ressources.Here are the directions for registering subscription with resource provider.

Configurer un point de terminaison de service pour un nouveau réseau virtuel et un nouveau sous-réseau AzureConfigure a service endpoint for a new Azure virtual network and subnet

  1. À partir du panneau Toutes les ressources, recherchez le compte Azure Cosmos DB que vous souhaitez sécuriser.From the All resources blade, find the Azure Cosmos DB account that you want to secure.

  2. Sélectionnez Pare-feu et réseaux virtuels Azure dans le menu Paramètres et choisissez d’autoriser l’accès à partir de Réseaux sélectionnés.Select Firewalls and Azure virtual networks from the settings menu, and choose to allow access from Selected networks.

  3. Pour accorder l’accès à un nouveau réseau virtuel Azure, sélectionnez Ajouter un nouveau réseau virtuel sous Réseaux virtuels.To grant access to a new Azure virtual network, under Virtual networks, select Add new virtual network.

  4. Fournissez les détails nécessaires pour créer un réseau virtuel, puis sélectionnez Créer.Provide the details required to create a new virtual network, and then select Create. Le sous-réseau sera créé avec un point de terminaison de service pour « Microsoft.AzureCosmosDB » activé.The subnet will be created with a service endpoint for "Microsoft.AzureCosmosDB" enabled.

    Sélectionner un réseau virtuel et un sous-réseau pour un nouveau réseau virtuel

Si votre compte Azure Cosmos DB est utilisé par d’autres services Azure, comme la Recherche cognitive Azure, ou s’il est accessible à partir de Stream Analytics ou de Power BI, sélectionnez Accepter les connexions provenant des centres de données Azure globaux pour en autoriser l’accès.If your Azure Cosmos DB account is used by other Azure services like Azure Cognitive Search, or is accessed from Stream analytics or Power BI, you allow access by selecting Accept connections from within global Azure datacenters.

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.To ensure that you have access to Azure Cosmos DB metrics from the portal, you need to enable Allow access from Azure portal options. Pour en savoir plus sur ces options, consultez l’article Configurer un pare-feu IP.To learn more about these options, see the Configure an IP firewall article. Après avoir activé l’accès, sélectionnez Enregistrer pour enregistrer les paramètres.After you enable access, select Save to save the settings.

Supprimer un réseau virtuel ou un sous-réseauRemove a virtual network or subnet

  1. À partir du panneau Toutes les ressources, recherchez le compte Azure Cosmos DB pour lequel vous avez affecté des points de terminaison de service.From the All resources blade, find the Azure Cosmos DB account for which you assigned service endpoints.

  2. Sélectionnez Pare-feu et réseaux virtuels dans le menu Paramètres.Select Firewalls and virtual networks from the settings menu.

  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.To remove a virtual network or subnet rule, select ... next to the virtual network or subnet, and select Remove.

    Supprimer un réseau virtuel

  4. Sélectionnez Enregistrer pour enregistrer vos modifications.Select Save to apply your changes.

Configurer un point de terminaison de service avec Azure PowerShellConfigure a service endpoint by using Azure PowerShell

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.When you're using PowerShell or the Azure CLI, be sure to specify the complete list of IP filters and virtual network ACLs in parameters, not just the ones that need to be added.

Effectuez les étapes suivantes afin de configurer un point de terminaison de service pour un compte Azure Cosmos DB à l’aide d’Azure PowerShell :Use the following steps to configure a service endpoint to an Azure Cosmos DB account by using Azure PowerShell:

  1. Installez Azure PowerShell et connectez-vous.Install Azure PowerShell and sign in.

  2. Activez le point de terminaison de service pour un sous-réseau existant d’un réseau virtuel.Enable the service endpoint for an existing subnet of a virtual network.

    $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
    
  3. Obtenez les informations relatives au réseau virtuel.Get virtual network information.

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

    $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 :Update Azure Cosmos DB account properties with the new Virtual Network endpoint configuration:

    $accountName = "<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 :Run the following command to verify that your Azure Cosmos DB account is updated with the virtual network service endpoint that you configured in the previous step:

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

Configurer un point de terminaison de service avec Azure CLIConfigure a service endpoint by using the Azure CLI

Des comptes Azure Cosmos peuvent être configurés pour des points de terminaison de service créés ou mis à jour ultérieurement si le sous-réseau est déjà configuré pour ceux-ci.Azure Cosmos accounts can be configured for service endpoints when they are created or updated at a later time if the subnet is already configured for them. Des points de terminaison de service peuvent également être activés sur le compte Cosmos où le sous-réseau n’est pas encore configuré pour ceux-ci. Ils commenceront à fonctionner lorsque le sous-réseau sera configuré.Service endpoints can also be enabled on the Cosmos account where the subnet is not yet configured for them and then will begin to work when the subnet is configured later. Cette flexibilité permet aux administrateurs qui n’ont pas accès aux ressources du compte Cosmos et du réseau virtuel de rendre leurs configurations indépendantes les unes des autres.This flexibility allows for administrators who do not have access to both the Cosmos account and virtual network resources to make their configurations independent of each other.

Créer un compte Cosmos et le connecter à un sous-réseau backend pour un nouveau réseau virtuelCreate a new Cosmos account and connect it to a back end subnet for a new virtual network

Dans cet exemple, le réseau virtuel et le sous-réseau sont créés avec des points de terminaison de service activés pour les deux lors de leur création.In this example the virtual network and subnet is created with service endpoints enabled for both when they are created.

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

# Resource group and Cosmos 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 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 a 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 Cosmos sur un sous-réseau backend de manière indépendanteConnect and configure a Cosmos account to a back end subnet independently

Cet exemple vise à montrer comment connecter un compte Azure Cosmos à un nouveau réseau virtuel dont le sous-réseau n’est pas encore configuré pour des points de terminaison de service.This sample is intended to show how to connect an Azure Cosmos account to an existing new virtual network where the subnet is not yet configured for service endpoints. Pour ce faire, utilisez le paramètre --ignore-missing-vnet-service-endpoint.This is done by using the --ignore-missing-vnet-service-endpoint parameter. Cela permet de configurer le compte Cosmos sans erreur avant que la configuration du sous-réseau du réseau virtuel soit complète.This allows the configuration for the Cosmos account to complete without error before the configuration to the virtual network's subnet is complete. Une fois le sous-réseau configuré, le compte Cosmos est alors accessible via le sous-réseau configuré.Once the subnet configuration is complete, the Cosmos account will then be accessible through the configured subnet.

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

# Resource group and Cosmos 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 a 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

Migrer à partir d’une règle de pare-feu IP à une liste de contrôle d’accès de réseau virtuelMigrating from an IP firewall rule to a virtual network ACL

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.To migrate an Azure Cosmos DB account from using IP firewall rules to using virtual network service endpoints, use the following steps.

Après la configuration d’un compte Azure Cosmos DB pour un point de terminaison de service pour un sous-réseau, les demandes de ce sous-réseau sont envoyées à Azure Cosmos DB avec les informations sur le réseau virtuel et le sous-réseau source au lieu d’une adresse IP publique source.After an Azure Cosmos DB account is configured for a service endpoint for a subnet, requests from that subnet are sent to Azure Cosmos DB with virtual network and subnet source information instead of a source public IP address. 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.These requests will no longer match an IP filter configured on the Azure Cosmos DB account, which is why the following steps are necessary to avoid downtime.

Avant de continuer, activez le point de terminaison de service Azure Cosmos DB sur le réseau virtuel et le sous-réseau à l’aide de l’étape indiquée ci-dessus dans « Activer le point de terminaison de service pour un sous-réseau existant d’un réseau virtuel ».Before proceeding, enable the Azure Cosmos DB service endpoint on the virtual network and subnet using the step shown above in "Enable the service endpoint for an existing subnet of a virtual network".

  1. Obtenez les informations relatives au réseau virtuel et au sous-réseau :Get virtual network and subnet information:

    $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 :Prepare a new Virtual Network rule object for the Azure Cosmos DB account:

    $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 the Azure Cosmos DB account to enable service endpoint access from the subnet:

    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.Repeat the previous steps for all Azure Cosmos DB accounts accessed from the subnet.

  5. 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.Remove the IP firewall rule for the subnet from the Azure Cosmos DB account's Firewall rules.

Étapes suivantesNext steps