Toegang tot virtuele Azure Cosmos DB (VNet) configureren

VAN TOEPASSING OP: SQL-API Cassandra-API Gremlin-API Table-API Azure Cosmos DB-API voor MongoDB

U kunt het Azure Cosmos-account zo configureren dat alleen toegang wordt toegestaan vanuit een specifiek subnet van een virtueel netwerk (VNet). Door service-eindpunten toegang te geven tot Azure Cosmos DB op het subnet binnen een virtueel netwerk, wordt het verkeer van dat subnet verzonden naar Azure Cosmos DB met de identiteit van het subnet en Virtual Network. 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-account.

Een Azure Cosmos-account is standaard toegankelijk vanaf elke bron als de aanvraag wordt vergezeld van een geldig autorisatie-token. Wanneer u een of meer subnetten binnen VNets toevoegt, krijgen alleen aanvragen die afkomstig zijn van deze subnetten een geldig antwoord. Aanvragen die afkomstig zijn van een andere bron ontvangen een 403-antwoord (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 met verbindingen van een subnet in een virtueel netwerk beperken:

  1. Schakel het subnet in om het subnet en de identiteit van het virtuele netwerk te verzenden naar Azure Cosmos DB. U kunt dit bereiken door een service-eindpunt in te Azure Cosmos DB op het specifieke subnet.

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

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. Het schakelen tussen verkeer is van toepassing Azure Cosmos DB account dat wordt gebruikt vanuit dit subnet. Als uw Azure Cosmos DB-accounts een op IP gebaseerde firewall hebben om dit subnet toe te staan, komen aanvragen van het subnet met service ingeschakeld 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 toegangsbeheerlijst voor virtuele netwerken van 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 de Azure Portal

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

  1. Zoek op de blade Alle resources het Azure Cosmos DB account dat u wilt beveiligen.

  2. Selecteer Firewalls en virtuele netwerken in het instellingenmenu en kies ervoor om toegang vanuit Geselecteerde netwerken toe te staan.

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

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

    Virtueel netwerk en subnet selecteren

    Notitie

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

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

    Virtueel netwerk en subnet zijn geconfigureerd

Notitie

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

  • Abonnement met virtueel netwerk: Inzender voor netwerken
  • Abonnement met Azure Cosmos DB account: Inzender voor DocumentDB-account
  • Als uw virtuele netwerk en Azure Cosmos DB-account zich in verschillende abonnementen, moet u ervoor zorgen dat voor het abonnement met het virtuele netwerk ook de Microsoft.DocumentDB resourceprovider is geregistreerd. Zie het artikel Azure-resourceproviders en -typen om een resourceprovider te registreren.

Hier zijn 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 op de blade Alle resources het Azure Cosmos DB account dat u wilt beveiligen.

  2. Selecteer Firewalls en virtuele Azure-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.

    Selecteer een virtueel netwerk en subnet voor een nieuw virtueel netwerk

Als uw Azure Cosmos DB-account wordt gebruikt door andere Azure-services, zoals Azure Cognitive Search, of wordt gebruikt vanuit Stream Analytics of Power BI, geeft u toegang door Verbindingen accepteren te selecteren vanuit globale Azure-datacenters.

Om ervoor te zorgen dat u vanuit Azure Cosmos DB portal toegang hebt tot de metrische gegevens, moet u Toegang vanuit Azure Portal 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 op de blade Alle resources het Azure Cosmos DB waarvoor u service-eindpunten hebt toegewezen.

  2. Selecteer Firewalls en virtuele 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.

    Een virtueel netwerk verwijderen

  4. Klik op Opslaan om uw wijzigingen toe te passen.

Een service-eindpunt configureren met behulp van Azure PowerShell

Notitie

In dit artikel wordt de Azure Az PowerShell-module gebruikt. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. 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 ACL's voor virtuele netwerken opgeven in parameters, niet alleen de filters die moeten worden toegevoegd.

  3. Informatie over het virtuele netwerk op te halen.

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

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  5. Werk Azure Cosmos DB accounteigenschappen bij met de nieuwe Virtual Network eindpuntconfiguratie:

    $accountName = "<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-accounts kunnen worden geconfigureerd voor service-eindpunten wanneer ze op een later tijdstip worden gemaakt of bijgewerkt als het subnet er al voor is geconfigureerd. Service-eindpunten kunnen ook worden ingeschakeld voor het Cosmos-account waar het subnet nog niet voor is geconfigureerd. Vervolgens begint het te werken wanneer het subnet later is geconfigureerd. Met deze flexibiliteit kunnen beheerders die geen toegang hebben tot zowel het Cosmos-account als de resources van het virtuele netwerk hun configuraties onafhankelijk van elkaar maken.

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

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

# 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

Verbinding maken Cosmos-account onafhankelijk van elkaar configureren in een back-endsubnet

Dit voorbeeld is bedoeld om te laten zien hoe u een Azure Cosmos-account verbindt met een bestaand nieuw virtueel netwerk waar het subnet nog niet is geconfigureerd voor service-eindpunten. Dit wordt gedaan met behulp van de --ignore-missing-vnet-service-endpoint parameter . Hierdoor kan de configuratie voor het Cosmos-account zonder fouten worden voltooid voordat de configuratie voor het subnet van het virtuele netwerk is voltooid. Zodra de configuratie van het subnet is voltooid, is het Cosmos-account dan toegankelijk via het geconfigureerde 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

Poortbereik bij gebruik van de directe modus

Wanneer u service-eindpunten gebruikt met een Azure Cosmos-account 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 voor een virtueel netwerk

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

Nadat een Azure Cosmos DB-account is geconfigureerd voor een service-eindpunt voor een subnet, worden aanvragen van dat subnet verzonden naar Azure Cosmos DB met informatie over virtuele netwerken en subnetten in plaats van een openbaar BRON-IP-adres. Deze aanvragen komen niet meer overeen met een IP-filter dat is geconfigureerd op het Azure Cosmos DB-account. Daarom zijn de volgende stappen nodig om downtime te voorkomen.

Voordat u doorgaat, moet u het Azure Cosmos DB-service-eindpunt inschakelen in het virtuele netwerk en subnet met behulp van de stap die hierboven wordt weergegeven in 'Het service-eindpunt inschakelen voor een bestaand subnet van een virtueel netwerk'.

  1. Informatie over virtuele netwerken en subnetten op te halen:

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

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

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

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

Veelgestelde vragen

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

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

Op dit moment worden de Mongo-shell- en Cassandra-shell-integraties in de Cosmos DB Data Explorer en de Jupyter Notebooks-serviceniet ondersteund met VNET-toegang. Dit is momenteel in actieve ontwikkeling.

Kan ik zowel het service-eindpunt van een virtueel netwerk als het beleid voor IP-toegangsbeheer opgeven voor een Azure Cosmos-account?

U kunt zowel het service-eindpunt van het virtuele netwerk als een BELEID voor IP-toegangsbeheer (ook wel firewall genoemd) inschakelen in uw Azure Cosmos-account. Deze twee functies zijn aanvullend en zorgen gezamenlijk voor isolatie en beveiliging van uw Azure Cosmos-account. Het gebruik van IP-firewall zorgt ervoor dat statische IP-adressen toegang hebben tot uw account.

Hoe kan ik toegang tot het subnet binnen een virtueel netwerk beperken?

Er zijn twee stappen vereist om de toegang tot een Azure Cosmos-account vanaf een subnet te beperken. Eerst staat u toe dat verkeer van het subnet het subnet en de identiteit van het virtuele netwerk naar Azure Cosmos DB. Dit wordt gedaan door het service-eindpunt in te Azure Cosmos DB op het subnet. Vervolgens voegt u een regel toe aan het Azure Cosmos-account waarmee dit subnet wordt opgegeven als bron van waaruit het account kan worden gebruikt.

Weigeren ACL's voor virtuele netwerken en IP Firewall aanvragen of verbindingen?

Wanneer ip-firewall of toegangsregels voor 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-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 het service-eindpunt heb ingeschakeld voor Azure Cosmos DB in het subnet. Wat is er gebeurd?

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

Zijn er extra Azure RBAC-machtigingen nodig voor Azure Cosmos-accounts met VNET-service-eindpunten?

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

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

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

Alleen het virtuele netwerk en de subnetten die aan het Azure Cosmos-account zijn toegevoegd, hebben toegang. Hun peered VNets hebben geen toegang tot het account totdat de subnetten binnen de virtuele netwerken met peering zijn toegevoegd aan het account.

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

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

Kan ik toegang vanuit VPN en Express Route inschakelen?

Als u on-premises toegang wilt krijgen tot een Azure Cosmos-account via Express Route, moet u Microsoft-peering inschakelen. Zodra u IP-firewall of toegangsregels voor virtuele netwerken hebt toegepast, kunt u de openbare IP-adressen die worden gebruikt voor Microsoft-peering toevoegen aan de IP-firewall van uw Azure Cosmos-account om on-premises services toegang te geven tot het Azure Cosmos-account.

Moet ik de regels voor netwerkbeveiligingsgroepen (NSG's) bijwerken?

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

Zijn er service-eindpunten beschikbaar voor alle VNets?

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

Kan ik verbindingen vanuit openbare Azure-datacenters accepteren wanneer toegang tot service-eindpunten is ingeschakeld voor Azure Cosmos DB?

Dit is alleen vereist wanneer u wilt dat uw Azure Cosmos DB-account wordt gebruikt door andere eigen Azure-services, zoals Azure Data Factory, Azure Cognitive Search of een service die is geïmplementeerd in een bepaalde Azure-regio.

Volgende stappen