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

GÄLLER FÖR: Nosql Mongodb Cassandra Gremlin Tabell

Du kan konfigurera Azure Cosmos DB-kontot så att det endast tillåter åtkomst från ett specifikt undernät för ett virtuellt nätverk (VNET). Aktivera tjänstslutpunkt i ett undernät i ett virtuellt nätverk för att styra åtkomsten till Azure Cosmos DB. Trafiken från det undernätet skickas till Azure Cosmos DB med identiteten för undernätet och det virtuella nätverket. När Azure Cosmos DB-tjänstslutpunkten är aktiverad kan du begränsa åtkomsten till undernätet genom att lägga till den i ditt Azure Cosmos DB-konto.

Som standard är ett Azure Cosmos DB-konto tillgängligt från valfri källa 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 från dessa undernät ett giltigt svar. Begäranden som kommer från någon annan källa får ett svar på 403 (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 till ett Azure Cosmos DB-konto med anslutningar från ett undernät i ett virtuellt nätverk:

  1. Aktivera tjänstslutpunkten för Azure Cosmos DB för att skicka undernätet och den virtuella nätverksidentiteten till Azure Cosmos DB.

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

Kommentar

När en tjänstslutpunkt för ditt Azure Cosmos DB-konto är aktiverad i ett undernät växlar källan för trafiken 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-konton som nås från det här undernätet. Om dina Azure Cosmos DB-konton har en IP-baserad brandvägg som tillåter det här undernätet matchar begäranden från det tjänstaktiverade undernätet inte längre IP-brandväggsreglerna och de avvisas.

Mer information finns i stegen som beskrivs i avsnittet Migrera från en IP-brandväggsregel till en lista över åtkomstkontroll för virtuella 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-portalen

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

  1. I fönstret Alla resurser letar du reda på det Azure Cosmos DB-konto som du vill skydda.

  2. Välj Nätverk på inställningsmenyn

    Screenshot of the networking menu option.

  3. Välj att tillåta åtkomst från valda nätverk.

  4. Om du vill bevilja åtkomst till ett befintligt virtuellt nätverks undernät går du till Virtuella nätverk och väljer Lägg till befintligt virtuellt Azure-nätverk.

  5. 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 den är klar väljer du Lägg till.

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

    Kommentar

    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.

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

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

Kommentar

För att aktivera tjänstslutpunkter för virtuella 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 Azure-resursprovidrar och typer .

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

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

  1. I fönstret Alla resurser letar du reda på det Azure Cosmos DB-konto som du vill skydda.

  2. Välj 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.

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

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

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

Ta bort ett virtuellt nätverk eller undernät

  1. I fönstret Alla resurser letar du reda på det Azure Cosmos DB-konto som du har tilldelat tjänstslutpunkter för.

  2. Välj 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.

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

  4. Välj Spara för att införa ändringarna.

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

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. 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
    

    Kommentar

    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 virtuella nätverk.

    $vnet = Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName
    
    $subnetId = $vnet.Id + "/subnets/" + $subnetName
    
  4. Förbereda en regel för virtuellt nätverk i Azure Cosmos DB

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  5. Uppdatera Azure Cosmos DB-kontoegenskaper med den nya slutpunktskonfigurationen för virtuellt nätverk:

    $accountName = "<Azure 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 ditt Azure Cosmos DB-konto 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 DB-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å Azure Cosmos DB-kontot där undernätet ännu inte har konfigurerats. Sedan börjar tjänstslutpunkten fungera när undernätet konfigureras senare. Med den här flexibiliteten kan administratörer som inte har åtkomst till både Azure Cosmos DB-kontot och virtuella nätverksresurser göra sina konfigurationer oberoende av varandra.

Skapa ett nytt Azure Cosmos DB-konto och anslut det till ett serverdelsundernä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 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

Anslut och konfigurera ett Azure Cosmos DB-konto till ett serverdelsundernät oberoende av varandra

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

# 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

Portintervall när du använder direktläge

När du använder tjänstslutpunkter med ett Azure Cosmos DB-konto via en direktlägesanslutning måste du se till att TCP-porten mellan 10000 och 20000 är öppen.

Migrera från en IP-brandväggsregel till en virtuell nätverks-ACL

Om du vill migrera ett Azure Cosmos DB-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 varje begäran från det undernätet annorlunda än Azure Cosmos DB. Begäranden skickas med information om virtuellt nätverk och undernät 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-kontot, vilket är anledningen till att följande steg är nödvändiga för att undvika driftstopp.

  1. Hämta information om virtuella 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 regelobjekt för virtuellt nätverk för Azure Cosmos DB-kontot:

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  3. Uppdatera Azure Cosmos DB-kontot 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-konton som nås från undernätet.

  5. Aktivera Azure Cosmos DB-tjänstslutpunkten i det virtuella nätverket och undernätet med hjälp av steget som visas i avsnittet Aktivera tjänstslutpunkten för ett befintligt undernät i ett virtuellt nätverk i den här artikeln.

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

Vanliga frågor och svar

Här följer några vanliga frågor om hur du konfigurerar åtkomst från virtuella nätverk:

Är Notebooks och Mongo/Cassandra Shell för närvarande kompatibla med konton som är aktiverade för virtuellt nätverk?

För närvarande stöds inte Mongo Shell - och Cassandra-gränssnittsintegreringar i Azure Cosmos DB Data Explorer och Jupyter Notebooks-tjänsten med VNET-åtkomst. Den här integreringen är för närvarande under aktiv utveckling.

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

Du kan aktivera både tjänstslutpunkten för det virtuella nätverket och en IP-åtkomstkontrollprincip (även kallad brandvägg) på ditt Azure Cosmos DB-konto. Dessa två funktioner kompletterar varandra och säkerställer tillsammans isolering och säkerhet för ditt Azure Cosmos DB-konto. Genom att använda IP-brandväggen ser du till 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 DB-kontot från ett undernät. Först tillåter du att trafik från undernätet transporterar dess undernät och virtuella nätverksidentitet till Azure Cosmos DB. Du ändrar trafikens identitet genom att aktivera tjänstslutpunkten för Azure Cosmos DB i undernätet. Nästa steg är att lägga till en regel i Azure Cosmos DB-kontot som anger det här undernätet som en källa som kontot kan nås från.

Kommer virtuella nätverks-ACL:er och IP-brandväggen att avvisa begäranden eller anslutningar?

När IP-brandväggen eller åtkomstreglerna 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 403 (förbjudet). Det är viktigt att skilja Azure Cosmos DB-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 till 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 trafiken som når kontot från offentlig IP-adress till virtuellt nätverk och undernät. Om ditt Azure Cosmos DB-konto endast har IP-baserad brandvägg skulle trafik från tjänstaktiverat undernät inte längre matcha IP-brandväggsreglerna och därför avvisas. Gå över stegen för att sömlöst migrera från IP-baserad brandvägg till virtuell nätverksbaserad åtkomstkontroll.

Krävs extra behörigheter för rollbaserad åtkomstkontroll i Azure Cosmos DB för Azure Cosmos DB-konton med VNET-tjänstslutpunkter?

När du har lagt till VNet-tjänstslutpunkterna i ett Azure Cosmos DB-konto behöver du åtkomst till Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action åtgärden för alla virtuella nätverk som har konfigurerats på ditt Azure Cosmos DB-konto för att kunna göra ändringar i kontoinställningarna. 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 verifierar behörigheten för VNet-resursåtgärden även om användaren inte anger de virtuella nätverkskorten med Azure CLI. För närvarande har Azure Cosmos DB-kontots kontrollplan stöd för att ange hela tillståndet för Azure Cosmos DB-kontot. En av parametrarna för kontrollplanets anrop är virtualNetworkRules. Om den här parametern inte anges gör Azure CLI ett hämta databasanrop för att hämta virtualNetworkRules och använder det här värdet i uppdateringsanropet.

Har de peerkopplade virtuella nätverken också åtkomst till Azure Cosmos DB-kontot?

Endast det virtuella nätverket och deras undernät som läggs till i Azure Cosmos DB-kontot har åtkomst. Deras peerkopplade virtuella nätverk kan inte komma åt kontot förrän undernäten i peer-kopplade virtuella nätverk har lagts till i kontot.

Vad är det maximala antalet undernät som får komma åt ett enda Azure Cosmos DB-konto?

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

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

För att få åtkomst till Azure Cosmos DB-kontot via Express-vägen lokalt måste du aktivera Microsoft-peering. När du har infört IP-brandväggen eller regler för åtkomst till 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 DB-konto så att lokala tjänster får åtkomst till Azure Cosmos DB-kontot.

Behöver jag uppdatera NSG-reglerna (Network Security Groups) ?

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

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

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

När ska jag acceptera anslutningar inifrån globala Azure-datacenter för ett Azure Cosmos DB-konto?

Den här inställningen bör endast aktiveras när du vill att ditt Azure Cosmos DB-konto ska vara tillgängligt för alla Azure-tjänster i valfri Azure-region. Andra azure-tjänster från första part, till exempel Azure Data Factory och Azure AI Search, innehåller dokumentation om hur du skyddar åtkomsten till datakällor, inklusive Azure Cosmos DB-konton, till exempel:

Nästa steg

  • Information om hur du konfigurerar en brandvägg för Azure Cosmos DB finns i artikeln Om brandväggsstöd.