Toegang tot Azure Cosmos DB configureren vanuit virtuele netwerken (VNet)

VAN TOEPASSING OP: Nosql MongoDB Cassandra Gremlin Tabel

U kunt het Azure Cosmos DB-account zo configureren dat alleen toegang vanaf een specifiek subnet van een virtueel netwerk (VNET) is toegestaan. Schakel service-eindpunten in op een subnet in een virtueel netwerk om de toegang tot Azure Cosmos DB te beheren. Het verkeer van dat subnet wordt verzonden naar Azure Cosmos DB met de identiteit van het subnet en het virtuele netwerk. Zodra het Azure Cosmos DB-service-eindpunt is ingeschakeld, kunt u de toegang tot het subnet beperken door het toe te voegen aan uw Azure Cosmos DB-account.

Standaard is een Azure Cosmos DB-account toegankelijk vanuit elke bron als de aanvraag vergezeld gaat van een geldig autorisatietoken. Wanneer u een of meer subnetten in VNets toevoegt, krijgen alleen aanvragen die afkomstig zijn van die subnetten een geldig antwoord. Aanvragen die afkomstig zijn van een andere bron ontvangen een antwoord van 403 (Verboden).

U kunt Azure Cosmos DB-accounts configureren om alleen toegang toe te staan vanaf een specifiek subnet van een virtueel Azure-netwerk. De toegang tot een Azure Cosmos DB-account beperken met verbindingen vanuit een subnet in een virtueel netwerk:

  1. Schakel het service-eindpunt voor Azure Cosmos DB in om het subnet en de identiteit van het virtuele netwerk naar Azure Cosmos DB te verzenden.

  2. Voeg een regel toe aan het Azure Cosmos DB-account om het subnet op te geven als bron waaruit het account kan worden geopend.

Notitie

Wanneer een service-eindpunt voor uw Azure Cosmos DB-account is ingeschakeld op een subnet, schakelt de bron van het verkeer dat Azure Cosmos DB bereikt over van een openbaar IP-adres naar een virtueel netwerk en subnet. De verkeerswisseling is van toepassing op elk Azure Cosmos DB-account dat vanuit dit subnet wordt geopend. Als uw Azure Cosmos DB-accounts een firewall op basis van IP hebben om dit subnet toe te staan, komen aanvragen van het subnet met service-functionaliteit niet meer overeen met de IP-firewallregels en worden ze geweigerd.

Zie de stappen die worden beschreven in de sectie Migreren van een IP-firewallregel naar een lijst met toegangsbeheer voor virtuele netwerken in dit artikel voor meer informatie.

In de volgende secties wordt beschreven hoe u een service-eindpunt voor een virtueel netwerk configureert voor een Azure Cosmos DB-account.

Een service-eindpunt configureren met behulp van Azure Portal

Een service-eindpunt configureren voor een bestaand virtueel Azure-netwerk en -subnet

  1. Zoek in het deelvenster Alle resources het Azure Cosmos DB-account dat u wilt beveiligen.

  2. Netwerk selecteren in het instellingenmenu

    Screenshot of the networking menu option.

  3. Kies ervoor om toegang vanuit geselecteerde netwerken toe te staan.

  4. Als u toegang wilt verlenen tot het subnet van een bestaand virtueel netwerk, selecteert u onder Virtuele netwerken de optie Bestaand virtueel Azure-netwerk toevoegen.

  5. Selecteer het abonnement waaruit u een virtueel Azure-netwerk wilt toevoegen. Selecteer de virtuele Netwerken en subnetten van Azure die u toegang wilt bieden tot uw Azure Cosmos DB-account. Selecteer vervolgens Inschakelen om geselecteerde netwerken met service-eindpunten in te schakelen voor Microsoft.AzureCosmosDB. Wanneer dit is voltooid, selecteert u Toevoegen.

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

    Notitie

    Het configureren van een VNET-service-eindpunt kan tot 15 minuten duren en het eindpunt kan gedurende deze periode inconsistent gedrag vertonen.

  6. Nadat het Azure Cosmos DB-account is ingeschakeld voor toegang vanuit een virtueel netwerk, wordt alleen verkeer vanaf dit gekozen subnet toegestaan. Het virtuele netwerk en subnet dat u hebt toegevoegd, moeten worden weergegeven zoals wordt weergegeven in de volgende schermopname:

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

Notitie

Als u service-eindpunten voor virtuele netwerken wilt inschakelen, hebt u de volgende abonnementsmachtigingen nodig:

  • Abonnement met virtueel netwerk: Netwerkbijdrager
  • Abonnement met Azure Cosmos DB-account: DocumentDB-accountbijdrager
  • Als uw virtuele netwerk en Azure Cosmos DB-account zich in verschillende abonnementen bevinden, moet u ervoor zorgen dat het abonnement met een virtueel netwerk ook een resourceprovider heeft Microsoft.DocumentDB geregistreerd. Als u een resourceprovider wilt registreren, raadpleegt u het artikel Azure-resourceproviders en -typen .

Hier volgen de aanwijzingen voor het registreren van een abonnement bij de resourceprovider.

Een service-eindpunt configureren voor een nieuw virtueel Azure-netwerk en -subnet

  1. Zoek in het deelvenster Alle resources het Azure Cosmos DB-account dat u wilt beveiligen.

  2. Selecteer Netwerken in het instellingenmenu en kies ervoor om toegang vanuit geselecteerde netwerken toe te staan.

  3. Als u toegang wilt verlenen tot een nieuw virtueel Azure-netwerk, selecteert u onder Virtuele netwerken de optie Nieuw virtueel netwerk toevoegen.

  4. Geef de details op die nodig zijn om een nieuw virtueel netwerk te maken en selecteer vervolgens Maken. Het subnet wordt gemaakt met een service-eindpunt voor 'Microsoft.AzureCosmosDB' ingeschakeld.

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

Als uw Azure Cosmos DB-account wordt gebruikt door andere Azure-services, zoals Azure AI Search, of wordt geopend vanuit Stream Analytics of Power BI, kunt u toegang verlenen door verbindingen accepteren te selecteren vanuit globale Azure-datacenters.

Om ervoor te zorgen dat u toegang hebt tot metrische gegevens van Azure Cosmos DB vanuit de portal, moet u Toegang toestaan vanuit azure Portal-opties inschakelen. Zie het artikel Een IP-firewall configureren voor meer informatie over deze opties. Nadat u toegang hebt ingeschakeld, selecteert u Opslaan om de instellingen op te slaan.

Een virtueel netwerk of subnet verwijderen

  1. Zoek in het deelvenster Alle resources het Azure Cosmos DB-account waarvoor u service-eindpunten hebt toegewezen.

  2. Selecteer Netwerken in het instellingenmenu.

  3. Als u een regel voor een virtueel netwerk of subnet wilt verwijderen, selecteert u ... naast het virtuele netwerk of subnet en selecteert u Verwijderen.

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

  4. Selecteer Opslaan om uw wijzigingen toe te passen.

Een service-eindpunt configureren met behulp van Azure PowerShell

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Gebruik de volgende stappen om een service-eindpunt te configureren voor een Azure Cosmos DB-account met behulp van Azure PowerShell:

  1. Installeer Azure PowerShell en meld u aan.

  2. Schakel het service-eindpunt in voor een bestaand subnet van een virtueel netwerk.

    $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
    

    Notitie

    Wanneer u PowerShell of de Azure CLI gebruikt, moet u de volledige lijst met IP-filters en virtuele netwerk-ACL's opgeven in parameters, niet alleen de parameters die moeten worden toegevoegd.

  3. Informatie over virtuele netwerken ophalen.

    $vnet = Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName
    
    $subnetId = $vnet.Id + "/subnets/" + $subnetName
    
  4. Een regel voor een virtueel Azure Cosmos DB-netwerk voorbereiden

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  5. Azure Cosmos DB-accounteigenschappen bijwerken met de nieuwe configuratie van het virtuele netwerkeindpunt:

    $accountName = "<Azure Cosmos DB account name>"
    
    Update-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName `
       -EnableVirtualNetwork $true `
       -VirtualNetworkRuleObject @($vnetRule)
    
  6. Voer de volgende opdracht uit om te controleren of uw Azure Cosmos DB-account is bijgewerkt met het service-eindpunt voor het virtuele netwerk dat u in de vorige stap hebt geconfigureerd:

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

Een service-eindpunt configureren met behulp van de Azure CLI

Azure Cosmos DB-accounts kunnen worden geconfigureerd voor service-eindpunten wanneer ze op een later tijdstip worden gemaakt of bijgewerkt als het subnet al voor hen is geconfigureerd. Service-eindpunten kunnen ook worden ingeschakeld in het Azure Cosmos DB-account waar het subnet nog niet is geconfigureerd. Vervolgens begint het service-eindpunt te werken wanneer het subnet later wordt geconfigureerd. Dankzij deze flexibiliteit kunnen beheerders die geen toegang hebben tot zowel het Azure Cosmos DB-account als virtuele netwerkbronnen, hun configuraties onafhankelijk van elkaar maken.

Een nieuw Azure Cosmos DB-account maken en dit verbinden met een back-endsubnet voor een nieuw virtueel netwerk

In dit voorbeeld worden het virtuele netwerk en subnet gemaakt met service-eindpunten ingeschakeld voor beide wanneer ze worden gemaakt.

# 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

een Azure Cosmos DB-account onafhankelijk Verbinding maken en configureren voor een back-endsubnet

Dit voorbeeld is bedoeld om te laten zien hoe u een Azure Cosmos DB-account verbindt met een bestaand of nieuw virtueel netwerk. In dit voorbeeld is het subnet nog niet geconfigureerd voor service-eindpunten. Configureer het service-eindpunt met behulp van de --ignore-missing-vnet-service-endpoint parameter. Met deze configuratie kan het Azure Cosmos DB-account zonder fouten worden voltooid voordat de configuratie naar het subnet van het virtuele netwerk is voltooid. Zodra de configuratie van het subnet is voltooid, is het Azure Cosmos DB-account toegankelijk via het geconfigureerde subnet.

# 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

Poortbereik bij gebruik van de directe modus

Wanneer u service-eindpunten met een Azure Cosmos DB-account gebruikt via een directe modusverbinding, moet u ervoor zorgen dat het TCP-poortbereik van 10000 tot 20000 is geopend.

Migreren van een IP-firewallregel naar een ACL van een virtueel netwerk

Als u een Azure Cosmos DB-account wilt migreren van het gebruik van IP-firewallregels naar het gebruik van service-eindpunten voor virtuele netwerken, gebruikt u de volgende stappen.

Nadat een Azure Cosmos DB-account is geconfigureerd voor een service-eindpunt voor een subnet, wordt elke aanvraag van dat subnet anders verzonden naar Azure Cosmos DB. De aanvragen worden verzonden met brongegevens van een virtueel netwerk en subnet in plaats van een openbaar IP-adres van de bron. Deze aanvragen komen niet meer overeen met een IP-filter dat is geconfigureerd in het Azure Cosmos DB-account. Daarom zijn de volgende stappen nodig om downtime te voorkomen.

  1. Informatie over het virtuele netwerk en subnet ophalen:

    $resourceGroupName = "myResourceGroup"
    $accountName = "mycosmosaccount"
    $vnetName = "myVnet"
    $subnetName = "mySubnet"
    
    $vnet = Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName
    
    $subnetId = $vnet.Id + "/subnets/" + $subnetName
    
  2. Een nieuw virtueel netwerkregelobject voorbereiden voor het Azure Cosmos DB-account:

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  3. Werk het Azure Cosmos DB-account bij om toegang tot service-eindpunten vanuit het subnet in te schakelen:

    Update-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName `
       -EnableVirtualNetwork $true `
       -VirtualNetworkRuleObject @($vnetRule)
    
  4. Herhaal de vorige stappen voor alle Azure Cosmos DB-accounts die zijn geopend vanuit het subnet.

  5. Schakel het Azure Cosmos DB-service-eindpunt in op het virtuele netwerk en subnet met behulp van de stap in de stap Het service-eindpunt inschakelen voor een bestaand subnet van een virtueel netwerk in dit artikel.

  6. Verwijder de IP-firewallregel voor het subnet uit de firewallregels van het Azure Cosmos DB-account.

Veelgestelde vragen

Hier volgen enkele veelgestelde vragen over het configureren van toegang vanuit virtuele netwerken:

Zijn notebooks en Mongo/Cassandra Shell momenteel compatibel met accounts met Virtual Network?

Op dit moment worden de Mongo-shell - en Cassandra-shellintegraties in Azure Cosmos DB Data Explorer en de Jupyter Notebooks-service niet ondersteund met VNET-toegang. Deze integratie is momenteel actief in ontwikkeling.

Kan ik beleid voor service-eindpunten voor virtuele netwerken en IP-toegangsbeheer opgeven voor een Azure Cosmos DB-account?

U kunt zowel het service-eindpunt voor het virtuele netwerk als een IP-toegangsbeheerbeleid (ook wel firewall genoemd) inschakelen in uw Azure Cosmos DB-account. Deze twee functies zijn complementair en zorgen gezamenlijk voor isolatie en beveiliging van uw Azure Cosmos DB-account. Door ip-firewall te gebruiken, zorgt u ervoor dat statische IP-adressen toegang hebben tot uw account.

Hoe kan ik de toegang tot subnet in een virtueel netwerk beperken?

Er zijn twee stappen vereist om de toegang tot een Azure Cosmos DB-account vanuit een subnet te beperken. Eerst kunt u verkeer van het subnet en de identiteit van het virtuele netwerk naar Azure Cosmos DB overbrengen. Het wijzigen van de identiteit van het verkeer wordt uitgevoerd door het service-eindpunt voor Azure Cosmos DB in het subnet in te schakelen. Vervolgens voegt u een regel toe in het Azure Cosmos DB-account dat dit subnet opgeeft als bron van waaruit het account kan worden geopend.

Worden aanvragen of verbindingen door virtuele netwerk-ACL's en IP-firewall geweigerd?

Wanneer IP-firewall of regels voor toegang tot virtuele netwerken worden toegevoegd, krijgen alleen aanvragen van toegestane bronnen geldige antwoorden. Andere aanvragen worden geweigerd met een 403 (verboden). Het is belangrijk om de firewall van het Azure Cosmos DB-account te onderscheiden van een firewall op verbindingsniveau. De bron kan nog steeds verbinding maken met de service en de verbindingen zelf worden niet geweigerd.

Mijn aanvragen worden geblokkeerd wanneer ik service-eindpunt in Azure Cosmos DB in het subnet heb ingeschakeld. Wat is er gebeurd?

Zodra service-eindpunt voor Azure Cosmos DB is ingeschakeld op een subnet, schakelt de bron van het verkeer dat het account bereikt over van openbaar IP-adres naar virtueel netwerk en subnet. Als uw Azure Cosmos DB-account alleen een firewall op basis van IP heeft, komt verkeer van het subnet waarvoor de service is ingeschakeld niet meer overeen met de IP-firewallregels en wordt daarom geweigerd. Voer de stappen uit om naadloos te migreren van een op IP gebaseerde firewall naar toegangsbeheer op basis van een virtueel netwerk.

Zijn er extra machtigingen voor op rollen gebaseerd toegangsbeheer van Azure nodig voor Azure Cosmos DB-accounts met VNET-service-eindpunten?

Nadat u de VNet-service-eindpunten hebt toegevoegd aan een Azure Cosmos DB-account, hebt u toegang nodig tot de Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action actie voor alle VNET's die zijn geconfigureerd in uw Azure Cosmos DB-account om wijzigingen aan te brengen in de accountinstellingen. Deze machtiging is vereist omdat het autorisatieproces de toegang tot resources (zoals database- en virtuele netwerkbronnen) valideert voordat u eigenschappen evalueert.

Met de autorisatie wordt de machtiging voor VNet-resourceactie gevalideerd, zelfs als de gebruiker de VNET-ACL's niet opgeeft met behulp van Azure CLI. Op dit moment biedt het besturingsvlak van het Azure Cosmos DB-account ondersteuning voor het instellen van de volledige status van het Azure Cosmos DB-account. Een van de parameters voor de aanroepen van het besturingsvlak is virtualNetworkRules. Als deze parameter niet is opgegeven, maakt de Azure CLI een get database-aanroep om de virtualNetworkRules waarde op te halen en gebruikt deze waarde in de updateaanroep.

Hebben de gekoppelde virtuele netwerken ook toegang tot het Azure Cosmos DB-account?

Alleen het virtuele netwerk en de bijbehorende subnetten die zijn toegevoegd aan het Azure Cosmos DB-account hebben toegang. Hun gekoppelde VNets hebben geen toegang tot het account totdat de subnetten in gekoppelde virtuele netwerken aan het account worden toegevoegd.

Wat is het maximum aantal subnetten dat toegang heeft tot één Azure Cosmos DB-account?

Op dit moment kunt u maximaal 256 subnetten hebben die zijn toegestaan voor een Azure Cosmos DB-account.

Kan ik toegang inschakelen vanuit VPN en Express Route?

Voor toegang tot het Azure Cosmos DB-account via Express-route vanaf on-premises moet u Microsoft-peering inschakelen. Zodra u IP-firewall of regels voor toegang tot virtuele netwerken hebt ingesteld, kunt u de openbare IP-adressen toevoegen die worden gebruikt voor Microsoft-peering op uw IP-firewall van uw Azure Cosmos DB-account om on-premises services toegang te geven tot een Azure Cosmos DB-account.

Moet ik de NSG-regels (Network Security Groups) bijwerken?

NSG-regels worden gebruikt om de connectiviteit van en naar een subnet met een virtueel netwerk te beperken. Wanneer u service-eindpunten voor Azure Cosmos DB toevoegt aan het subnet, hoeft u geen uitgaande connectiviteit te openen in NSG voor uw Azure Cosmos DB-account.

Zijn service-eindpunten beschikbaar voor alle VNets?

Nee, alleen virtuele Azure Resource Manager-netwerken kunnen service-eindpunten hebben ingeschakeld. Klassieke virtuele netwerken bieden geen ondersteuning voor service-eindpunten.

Wanneer moet ik verbindingen vanuit globale Azure-datacenters accepteren voor een Azure Cosmos DB-account?

Deze instelling mag alleen worden ingeschakeld wanneer u wilt dat uw Azure Cosmos DB-account toegankelijk is voor elke Azure-service in een Azure-regio. Andere services van Azure first party, zoals Azure Data Factory en Azure AI Search, bieden documentatie voor het beveiligen van toegang tot gegevensbronnen, waaronder Azure Cosmos DB-accounts, bijvoorbeeld:

Volgende stappen

  • Als u een firewall voor Azure Cosmos DB wilt configureren, raadpleegt u het artikel over firewallondersteuning.