Konfigurera åtkomst till Azure Cosmos DB från virtuella nätverk (VNet)

GÄLLER för: SQL API API för Cassandra Gremlin API tabell-API Azure Cosmos DB API för MongoDB

Du kan konfigurera Azure Cosmos-kontot så att det endast tillåter åtkomst från ett specifikt undernät för virtuellt nätverk (VNet). Genom att göra det möjligt för tjänstslutpunkten att komma åt Azure Cosmos DB i undernätet i ett virtuellt nätverk, skickas trafiken från det undernätet till Azure Cosmos DB med identiteten för undernätet och Virtual Network. När Azure Cosmos DB tjänstslutpunkt har aktiverats kan du begränsa åtkomsten till undernätet genom att lägga till den i ditt Azure Cosmos-konto.

Som standard är ett Azure Cosmos-konto tillgängligt från alla källor om begäran åtföljs av en giltig auktoriseringstoken. När du lägger till ett eller flera undernät i virtuella nätverk får endast begäranden som kommer från dessa undernät ett giltigt svar. Begäranden som kommer från någon annan källa får ett 403-svar (förbjudet).

Du kan konfigurera Azure Cosmos DB konton för att enbart tillåta åtkomst från ett speciellt undernät i ett virtuellt Azure-nätverk. Så här begränsar du åtkomsten Azure Cosmos DB ett konto med anslutningar från ett undernät i ett virtuellt nätverk:

  1. Aktivera undernätet för att skicka undernätet och den virtuella nätverksidentiteten till Azure Cosmos DB. Du kan åstadkomma detta genom att aktivera en tjänstslutpunkt för Azure Cosmos DB på det specifika undernätet.

  2. Lägg till en regel i Azure Cosmos DB för att ange undernätet som en källa som kontot kan nås från.

Anteckning

När en tjänstslutpunkt för ditt Azure Cosmos DB-konto är aktiverad i ett undernät växlar trafikkällan som når Azure Cosmos DB från en offentlig IP-adress till ett virtuellt nätverk och undernät. Trafikväxlingen gäller för alla Azure Cosmos DB som nås från det här undernätet. Om dina Azure Cosmos DB-konton har en IP-baserad brandvägg för att tillåta det här undernätet kommer begäranden från det tjänstaktiverade undernätet inte längre att matcha IP-brandväggsreglerna och de avvisas.

Mer information finns i stegen som beskrivs i avsnittet Migrera från en IP-brandväggsregel till en åtkomstkontrolllista för virtuellt nätverk i den här artikeln.

I följande avsnitt beskrivs hur du konfigurerar en tjänstslutpunkt för virtuellt nätverk för ett Azure Cosmos DB konto.

Konfigurera en tjänstslutpunkt med hjälp av Azure Portal

Konfigurera en tjänstslutpunkt för ett befintligt virtuellt Azure-nätverk och undernät

  1. bladet Alla resurser hittar du Azure Cosmos DB som du vill skydda.

  2. Välj Brandväggar och virtuella nätverk på inställningsmenyn och välj att tillåta åtkomst från Valda nätverk.

  3. Om du vill bevilja åtkomst till ett befintligt virtuellt nätverk under Virtuella nätverk väljer du Lägg till befintligt virtuellt Azure-nätverk.

  4. Välj den prenumeration som du vill lägga till ett virtuellt Azure-nätverk från. Välj de virtuella Azure-nätverk och undernät som du vill ge åtkomst till ditt Azure Cosmos DB konto. Välj sedan Aktivera för att aktivera valda nätverk med tjänstslutpunkter för "Microsoft.AzureCosmosDB". När det är klart väljer du Lägg till.

    Välj virtuellt nätverk och undernät

    Anteckning

    Det kan ta upp till 15 minuter att konfigurera en VNET-tjänstslutpunkt och slutpunkten kan uppvisa ett inkonsekvent beteende under den här perioden.

  5. När Azure Cosmos DB har aktiverats för åtkomst från ett virtuellt nätverk tillåts endast trafik från det valda undernätet. Det virtuella nätverk och undernät som du har lagt till bör visas enligt följande skärmbild:

    Det virtuella nätverket och undernätet har konfigurerats

Anteckning

Om du vill aktivera tjänstslutpunkter för virtuellt nätverk behöver du följande prenumerationsbehörigheter:

  • Prenumeration med virtuellt nätverk: Nätverksdeltagare
  • Prenumeration med Azure Cosmos DB konto: DocumentDB-kontodeltagare
  • Om ditt virtuella nätverk och Azure Cosmos DB-konto finns i olika prenumerationer kontrollerar du att den prenumeration som har ett virtuellt nätverk också har Microsoft.DocumentDB en registrerad resursprovider. Information om hur du registrerar en resursprovider finns i artikeln Resursproviders och typer i Azure.

Här är anvisningarna för att registrera prenumeration med resursprovidern.

Konfigurera en tjänstslutpunkt för ett nytt virtuellt Azure-nätverk och undernät

  1. bladet Alla resurser hittar du Azure Cosmos DB som du vill skydda.

  2. Välj Brandväggar och virtuella Azure-nätverk på inställningsmenyn och välj att tillåta åtkomst från Valda nätverk.

  3. Om du vill bevilja åtkomst till ett nytt virtuellt Azure-nätverk går du till Virtuella nätverk och väljer Lägg till nytt virtuellt nätverk.

  4. Ange den information som krävs för att skapa ett nytt virtuellt nätverk och välj sedan Skapa. Undernätet skapas med en tjänstslutpunkt för "Microsoft.AzureCosmosDB" aktiverad.

    Välj ett virtuellt nätverk och undernät för ett nytt virtuellt nätverk

Om ditt Azure Cosmos DB-konto används av andra Azure-tjänster som Azure Cognitive Search eller nås från Stream Analytics eller Power BI tillåter du åtkomst genom att välja Godkänn anslutningar från globala Azure-datacenter.

För att säkerställa att du Azure Cosmos DB åtkomst till mått från portalen måste du aktivera Alternativet Tillåt åtkomst Azure Portal åtkomst. Mer information om de här alternativen finns i artikeln Konfigurera en IP-brandvägg. När du har aktivera åtkomst väljer du Spara för att spara inställningarna.

Ta bort ett virtuellt nätverk eller undernät

  1. bladet Alla resurser söker du efter Azure Cosmos DB som du har tilldelat tjänstslutpunkter för.

  2. Välj Brandväggar och virtuella nätverk på inställningsmenyn.

  3. Om du vill ta bort ett virtuellt nätverk eller en undernätsregel väljer du ... bredvid det virtuella nätverket eller undernätet och väljer Ta bort.

    Ta bort ett virtuellt nätverk

  4. Klicka på Spara för att tillämpa dina ändringar.

Konfigurera en tjänstslutpunkt med hjälp av Azure PowerShell

Anteckning

I den här artikeln används Azure Az PowerShell-modulen, som är den rekommenderade PowerShell-modulen för att interagera med Azure. För att komma igång med Az PowerShell kan du läsa artikeln om att installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Använd följande steg för att konfigurera en tjänstslutpunkt till ett Azure Cosmos DB konto med hjälp av Azure PowerShell:

  1. Installera Azure PowerShell och logga in.

  2. Aktivera tjänstslutpunkten för ett befintligt undernät i ett virtuellt nätverk.

    $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
    

    Anteckning

    När du använder PowerShell eller Azure CLI måste du ange en fullständig lista över IP-filter och virtuella nätverks-ACL:er i parametrar, inte bara de som behöver läggas till.

  3. Hämta information om virtuellt nätverk.

    $vnet = Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName
    
    $subnetId = $vnet.Id + "/subnets/" + $subnetName
    
  4. Förbereda en Cosmos DB Virtual Network regel

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  5. Uppdatera Azure Cosmos DB kontoegenskaper med den nya Virtual Network slutpunktskonfigurationen:

    $accountName = "<Cosmos DB account name>"
    
    Update-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName `
       -EnableVirtualNetwork $true `
       -VirtualNetworkRuleObject @($vnetRule)
    
  6. Kör följande kommando för att kontrollera att Azure Cosmos DB-kontot har uppdaterats med tjänstslutpunkten för det virtuella nätverket som du konfigurerade i föregående steg:

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

Konfigurera en tjänstslutpunkt med hjälp av Azure CLI

Azure Cosmos-konton kan konfigureras för tjänstslutpunkter när de skapas eller uppdateras vid ett senare tillfälle om undernätet redan har konfigurerats för dem. Tjänstslutpunkter kan också aktiveras på Cosmos-kontot där undernätet ännu inte har konfigurerats för dem och sedan börjar fungera när undernätet konfigureras senare. Den här flexibiliteten gör det möjligt för administratörer som inte har åtkomst till både Cosmos-kontot och virtuella nätverksresurser att göra sina konfigurationer oberoende av varandra.

Skapa ett nytt Cosmos-konto och anslut det till ett serverundernät för ett nytt virtuellt nätverk

I det här exemplet skapas det virtuella nätverket och undernätet med tjänstslutpunkter aktiverade för båda när de skapas.

# 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

Anslut och konfigurera ett Cosmos-konto till ett backend-undernät oberoende av varandra

Det här exemplet är avsett att visa hur du ansluter ett Azure Cosmos-konto till ett befintligt nytt virtuellt nätverk där undernätet ännu inte har konfigurerats för tjänstslutpunkter. Detta görs med hjälp av --ignore-missing-vnet-service-endpoint parametern . Detta gör att konfigurationen för Cosmos-kontot kan slutföras utan fel innan konfigurationen till det virtuella nätverkets undernät har slutförts. När undernätskonfigurationen är klar är Cosmos-kontot sedan tillgängligt via det konfigurerade undernätet.

# 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

Portintervall när du använder direktläge

När du använder tjänstslutpunkter med ett Azure Cosmos-konto via en anslutning i direktläge måste du se till att TCP-portintervallet från 10000 till 20000 är öppet.

Migrera från en IP-brandväggsregel till en ACL för virtuellt nätverk

Om du vill Azure Cosmos DB ett konto från att använda IP-brandväggsregler till att använda tjänstslutpunkter för virtuellt nätverk använder du följande steg.

När ett Azure Cosmos DB-konto har konfigurerats för en tjänstslutpunkt för ett undernät skickas begäranden från det undernätet till Azure Cosmos DB med information om virtuellt nätverk och undernätskälla i stället för en offentlig IP-källadress. Dessa begäranden matchar inte längre ett IP-filter som konfigurerats på Azure Cosmos DB konto, vilket är anledningen till att följande steg är nödvändiga för att undvika driftstopp.

Innan du fortsätter aktiverar du Azure Cosmos DB-tjänstslutpunkten i det virtuella nätverket och undernätet med hjälp av steget ovan i "Aktivera tjänstslutpunkten för ett befintligt undernät i ett virtuellt nätverk".

  1. Hämta information om virtuellt nätverk och undernät:

    $resourceGroupName = "myResourceGroup"
    $accountName = "mycosmosaccount"
    $vnetName = "myVnet"
    $subnetName = "mySubnet"
    
    $vnet = Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName
    
    $subnetId = $vnet.Id + "/subnets/" + $subnetName
    
  2. Förbered ett nytt Virtual Network-regelobjekt för Azure Cosmos DB konto:

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  3. Uppdatera Azure Cosmos DB för att aktivera tjänstslutpunktsåtkomst från undernätet:

    Update-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName `
       -EnableVirtualNetwork $true `
       -VirtualNetworkRuleObject @($vnetRule)
    
  4. Upprepa föregående steg för alla Azure Cosmos DB som nås från undernätet.

  5. Ta bort IP-brandväggsregeln för undernätet från Azure Cosmos DB-kontots brandväggsregler.

Vanliga frågor och svar

Här är några vanliga frågor och svar om hur du konfigurerar åtkomst från virtuella nätverk:

Är Notebooks och Mongo/Cassandra Shell för närvarande kompatibla med Virtual Network aktiverade konton?

För tillfället stöds inte Mongo-gränssnittets och Cassandra-gränssnittsintegreringarna i Cosmos DB Datautforskaren och Jupyter Notebooks-tjänstenmed VNET-åtkomst. Detta är för närvarande i aktiv utveckling.

Kan jag ange både tjänstslutpunkt för virtuellt nätverk och principen för IP-åtkomstkontroll på ett Azure Cosmos-konto?

Du kan aktivera både tjänstslutpunkten för det virtuella nätverket och en princip för IP-åtkomstkontroll (även kallat brandvägg) på ditt Azure Cosmos-konto. Dessa två funktioner kompletterar och säkerställer tillsammans isolering och säkerhet för ditt Azure Cosmos-konto. Ip-brandväggen säkerställer att statiska IP-adresser kan komma åt ditt konto.

Hur gör jag för att begränsa åtkomsten till undernät i ett virtuellt nätverk?

Det krävs två steg för att begränsa åtkomsten till Azure Cosmos-kontot från ett undernät. Först tillåter du trafik från undernätet att överföra dess undernät och virtuella nätverksidentitet till Azure Cosmos DB. Detta görs genom att aktivera tjänstslutpunkten för Azure Cosmos DB på undernätet. Nu ska vi lägga till en regel i Azure Cosmos-kontot som anger det här undernätet som en källa som kontot kan nås från.

Kommer ACL:er för virtuella nätverk och IP-brandväggen att avvisa begäranden eller anslutningar?

När IP-brandväggen eller åtkomstregler för virtuella nätverk läggs till får endast begäranden från tillåtna källor giltiga svar. Andra begäranden avvisas med ett 403 (förbjudet). Det är viktigt att skilja azure Cosmos-kontots brandvägg från en brandvägg på anslutningsnivå. Källan kan fortfarande ansluta till tjänsten och själva anslutningarna avvisas inte.

Mina begäranden började blockeras när jag aktiverade tjänstslutpunkten för Azure Cosmos DB i undernätet. Vad hände?

När tjänstslutpunkten för Azure Cosmos DB har aktiverats i ett undernät växlar källan för den trafik som når kontot från offentlig IP-adress till virtuellt nätverk och undernät. Om ditt Azure Cosmos-konto endast har IP-baserad brandvägg kommer trafik från tjänstaktiverat undernät inte längre att matcha IP-brandväggsreglerna och avvisas därför. Gå igenom stegen för att sömlöst migrera från IP-baserad brandvägg till virtuell nätverksbaserad åtkomstkontroll.

Behövs ytterligare Azure RBAC-behörigheter för Azure Cosmos-konton med VNET-tjänstslutpunkter?

När du har lagt till VNet-tjänstslutpunkter i ett Azure Cosmos-konto för att göra ändringar i kontoinställningarna behöver du åtkomst till åtgärden för alla virtuella nätverk som konfigurerats på Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action ditt Azure Cosmos-konto. Den här behörigheten krävs eftersom auktoriseringsprocessen validerar åtkomsten till resurser (till exempel databas- och virtuella nätverksresurser) innan du utvärderar några egenskaper.

Auktoriseringen validerar behörigheten för VNet-resursåtgärden även om användaren inte anger VNET-ACL:er med Hjälp av Azure CLI. För närvarande har Azure Cosmos-kontots kontrollplan stöd för att ange fullständigt tillstånd för Azure Cosmos-kontot. En av parametrarna för kontrollplanets anrop är virtualNetworkRules . Om den här parametern inte anges gör Azure CLI ett get-databas-anrop för att hämta och använder det virtualNetworkRules här värdet i uppdaterings-anropet.

Har de peer-peer-ade virtuella nätverken även åtkomst till Azure Cosmos-kontot?

Endast virtuella nätverk och deras undernät som har lagts till i Azure Cosmos-kontot har åtkomst. Deras peer-vNets kan inte komma åt kontot förrän undernäten i peer-ade virtuella nätverk har lagts till i kontot.

Vilket är det maximala antalet undernät som tillåts åtkomst till ett enda Cosmos-konto?

För närvarande kan du ha högst 256 undernät tillåtna för ett Azure Cosmos-konto.

Kan jag aktivera åtkomst från VPN och Express Route?

För att få åtkomst till Azure Cosmos-kontot via Express Route lokalt måste du aktivera Microsoft-peering. När du har lagt till IP-brandväggen eller åtkomstreglerna för virtuella nätverk kan du lägga till de offentliga IP-adresser som används för Microsoft-peering i IP-brandväggen för ditt Azure Cosmos-konto så att lokala tjänster får åtkomst till Azure Cosmos-kontot.

Måste jag uppdatera reglerna för nätverkssäkerhetsgrupper (NSG)?

NSG-regler används för att begränsa anslutningen till och från ett undernät med virtuellt nätverk. När du lägger till tjänstslutpunkt för Azure Cosmos DB till undernätet behöver du inte öppna utgående anslutning i NSG för ditt Azure Cosmos-konto.

Är tjänstslutpunkter tillgängliga för alla virtuella nätverk?

Nej, endast Azure Resource Manager virtuella nätverk kan ha tjänstslutpunkten aktiverad. Klassiska virtuella nätverk stöder inte tjänstslutpunkter.

Kan jag "acceptera anslutningar från offentliga Azure-datacenter" när åtkomst till tjänstslutpunkt har aktiverats för Azure Cosmos DB?

Detta krävs endast när du vill att ditt Azure Cosmos DB-konto ska kunna nås av andra Azure-tjänster från första part som Azure Data Factory, Azure Cognitive Search eller någon annan tjänst som distribueras i en viss Azure-region.

Nästa steg

  • Information om hur du konfigurerar Azure Cosmos DB brandvägg finns i artikeln Brandväggsstöd.