Konfigurace přístupu ke službě Azure Cosmos DB z virtuálních sítí

PLATÍ PRO: NoSQL MongoDB Cassandra Gremlin Tabulka

Účet služby Azure Cosmos DB můžete nakonfigurovat tak, aby umožňoval přístup pouze z konkrétní podsítě virtuální sítě. Povolte koncový bod služby v podsíti v rámci virtuální sítě, abyste mohli řídit přístup ke službě Azure Cosmos DB. Provoz z této podsítě se odešle do služby Azure Cosmos DB s identitou podsítě a virtuální sítě. Po povolení koncového bodu služby Azure Cosmos DB můžete omezit přístup k podsíti přidáním do účtu služby Azure Cosmos DB.

Ve výchozím nastavení je účet služby Azure Cosmos DB přístupný z jakéhokoli zdroje, pokud je žádost doprovázena platným autorizačním tokenem. Když v rámci virtuálních sítí přidáte jednu nebo více podsítí, obdrží platnou odpověď pouze požadavky pocházející z těchto podsítí. Požadavky pocházející z jakéhokoli jiného zdroje obdrží odpověď 403 (Zakázáno).

Účty služby Azure Cosmos DB můžete nakonfigurovat tak, aby umožňovaly přístup pouze z konkrétní podsítě virtuální sítě Azure. Omezení přístupu k účtu služby Azure Cosmos DB pomocí připojení z podsítě ve virtuální síti:

  1. Povolte koncový bod služby pro službu Azure Cosmos DB, aby odesílala identitu podsítě a virtuální sítě do služby Azure Cosmos DB.

  2. Přidejte do účtu služby Azure Cosmos DB pravidlo pro určení podsítě jako zdroje, ze kterého má účet přístup.

Poznámka:

Když je v podsíti povolený koncový bod služby pro váš účet služby Azure Cosmos DB, zdroj provozu, který dosáhne služby Azure Cosmos DB, se přepne z veřejné IP adresy na virtuální síť a podsíť. Přepínání provozu platí pro všechny účty služby Azure Cosmos DB, ke kterým se přistupuje z této podsítě. Pokud mají vaše účty Služby Azure Cosmos DB bránu firewall založenou na PROTOKOLU IP, která tuto podsíť povolí, požadavky z podsítě s podporou služby už neodpovídají pravidlům brány firewall protokolu IP a budou odmítnuty.

Další informace najdete v krocích popsaných v části Migrace z pravidla brány firewall protokolu IP na seznam řízení přístupu k virtuální síti v tomto článku.

Následující části popisují, jak nakonfigurovat koncový bod služby virtuální sítě pro účet služby Azure Cosmos DB.

Konfigurace koncového bodu služby pomocí webu Azure Portal

Konfigurace koncového bodu služby pro existující virtuální síť a podsíť Azure

  1. V podokně Všechny prostředky vyhledejte účet služby Azure Cosmos DB, který chcete zabezpečit.

  2. V nabídce nastavení vyberte Sítě .

    Screenshot of the networking menu option.

  3. Zvolte, jestli chcete povolit přístup z vybraných sítí.

  4. Pokud chcete udělit přístup k podsíti existující virtuální sítě, vyberte v části Virtuální sítě možnost Přidat existující virtuální síť Azure.

  5. Vyberte předplatné, ze kterého chcete přidat virtuální síť Azure. Vyberte virtuální sítě a podsítě Azure, které chcete poskytnout přístup k vašemu účtu služby Azure Cosmos DB. Dále vyberte Povolit , pokud chcete povolit vybrané sítě s koncovými body služby pro Microsoft.AzureCosmosDB. Po dokončení vyberte Přidat.

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

    Poznámka:

    Rozšíření koncového bodu služby virtuální sítě může trvat až 15 minut a během tohoto období může koncový bod vykazovat nekonzistentní chování.

  6. Jakmile je účet Služby Azure Cosmos DB povolený pro přístup z virtuální sítě, povolí provoz jenom z této zvolené podsítě. Přidaná virtuální síť a podsíť by se měly zobrazit, jak je znázorněno na následujícím snímku obrazovky:

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

Poznámka:

Pokud chcete povolit koncové body služby virtuální sítě, potřebujete následující oprávnění předplatného:

  • Předplatné s virtuální sítí: Přispěvatel sítě
  • Předplatné s účtem služby Azure Cosmos DB: Přispěvatel účtu DocumentDB
  • Pokud jsou vaše virtuální síť a účet služby Azure Cosmos DB v různých předplatných, ujistěte se, že je zaregistrované také předplatné, které má Microsoft.DocumentDB virtuální síť. Pokud chcete zaregistrovat poskytovatele prostředků, přečtěte si článek o poskytovateli a typech prostředků Azure.

Tady jsou pokyny pro registraci předplatného u poskytovatele prostředků.

Konfigurace koncového bodu služby pro novou virtuální síť a podsíť Azure

  1. V podokně Všechny prostředky vyhledejte účet služby Azure Cosmos DB, který chcete zabezpečit.

  2. V nabídce nastavení vyberte Sítě a zvolte povolit přístup z vybraných sítí.

  3. Pokud chcete udělit přístup k nové virtuální síti Azure, v části Virtuální sítě vyberte Přidat novou virtuální síť.

  4. Zadejte podrobnosti potřebné k vytvoření nové virtuální sítě a pak vyberte Vytvořit. Podsíť se vytvoří s koncovým bodem služby pro povolenou službu Microsoft.AzureCosmosDB.

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

Pokud váš účet Služby Azure Cosmos DB používá jiné služby Azure, jako je Azure AI Search nebo ke službě Stream Analytics nebo Power BI, povolíte přístup výběrem možnosti Přijmout připojení z globálních datacenter Azure.

Abyste měli jistotu, že máte přístup k metrikám Služby Azure Cosmos DB z portálu, musíte povolit povolit přístup z možností webu Azure Portal . Další informace o těchto možnostech najdete v článku Konfigurace brány firewall protokolu IP. Po povolení přístupu uložte nastavení výběrem možnosti Uložit .

Odebrání virtuální sítě nebo podsítě

  1. V podokně Všechny prostředky vyhledejte účet služby Azure Cosmos DB, ke kterému jste přiřadili koncové body služby.

  2. V nabídce nastavení vyberte Sítě .

  3. Pokud chcete odebrat virtuální síť nebo pravidlo podsítě, vyberte ... vedle virtuální sítě nebo podsítě a vyberte Odebrat.

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

  4. Výběrem možnosti Uložit se vaše změny uplatní.

Konfigurace koncového bodu služby pomocí Azure PowerShellu

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Pomocí následujícího postupu nakonfigurujte koncový bod služby na účet služby Azure Cosmos DB pomocí Azure PowerShellu:

  1. Nainstalujte Azure PowerShell a přihlaste se.

  2. Povolte koncový bod služby pro existující podsíť virtuální sítě.

    $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
    

    Poznámka:

    Pokud používáte PowerShell nebo Azure CLI, nezapomeňte v parametrech zadat úplný seznam filtrů IP adres a seznamů ACL virtuální sítě, a ne jenom těch, které je potřeba přidat.

  3. Získejte informace o virtuální síti.

    $vnet = Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName
    
    $subnetId = $vnet.Id + "/subnets/" + $subnetName
    
  4. Příprava pravidla virtuální sítě služby Azure Cosmos DB

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  5. Aktualizujte vlastnosti účtu služby Azure Cosmos DB pomocí nové konfigurace koncového bodu virtuální sítě:

    $accountName = "<Azure Cosmos DB account name>"
    
    Update-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName `
       -EnableVirtualNetwork $true `
       -VirtualNetworkRuleObject @($vnetRule)
    
  6. Spuštěním následujícího příkazu ověřte, že je váš účet služby Azure Cosmos DB aktualizovaný koncovým bodem služby virtuální sítě, který jste nakonfigurovali v předchozím kroku:

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

Konfigurace koncového bodu služby pomocí Azure CLI

Účty služby Azure Cosmos DB je možné nakonfigurovat pro koncové body služby, když se vytvoří nebo aktualizují později, pokud je pro ně už nakonfigurovaná podsíť. Koncové body služby je také možné povolit v účtu služby Azure Cosmos DB, kde ještě není nakonfigurovaná podsíť. Koncový bod služby pak začne fungovat, až se podsíť nakonfiguruje později. Tato flexibilita umožňuje správcům, kteří nemají přístup k účtu služby Azure Cosmos DB i prostředkům virtuální sítě, aby jejich konfigurace byly nezávislé na sobě.

Vytvoření nového účtu služby Azure Cosmos DB a jeho připojení k back-endové podsíti pro novou virtuální síť

V tomto příkladu se vytvoří virtuální síť a podsíť s povolenými koncovými body služby pro obě při jejich vytvoření.

# 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

Připojení a konfiguraci účtu služby Azure Cosmos DB na back-endovou podsíť nezávisle

Tato ukázka ukazuje, jak připojit účet služby Azure Cosmos DB k existující nebo nové virtuální síti. V tomto příkladu ještě není podsíť nakonfigurovaná pro koncové body služby. Nakonfigurujte koncový bod služby pomocí parametru --ignore-missing-vnet-service-endpoint . Tato konfigurace umožňuje dokončení účtu služby Azure Cosmos DB bez chyby před dokončením konfigurace podsítě virtuální sítě. Po dokončení konfigurace podsítě bude účet služby Azure Cosmos DB přístupný prostřednictvím nakonfigurované podsítě.

# 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

Rozsah portů při použití přímého režimu

Pokud používáte koncové body služby s účtem služby Azure Cosmos DB prostřednictvím přímého připojení v režimu, musíte zajistit, aby byl otevřený rozsah portů TCP od 1 0000 do 20000.

Migrace z pravidla brány firewall protokolu IP na seznam ACL virtuální sítě

Pokud chcete migrovat účet služby Azure Cosmos DB z používání pravidel brány firewall protokolu IP na koncové body služby virtuální sítě, postupujte následovně.

Po nakonfigurování účtu služby Azure Cosmos DB pro koncový bod služby pro podsíť se každý požadavek z této podsítě odešle do služby Azure Cosmos DB jinak. Požadavky se posílají s informacemi o virtuální síti a zdroji podsítě místo zdrojové veřejné IP adresy. Tyto požadavky se už nebudou shodovat s filtrem IP nakonfigurovaným pro účet služby Azure Cosmos DB, což je důvod, proč jsou následující kroky nezbytné, aby nedocházelo k výpadkům.

  1. Získání informací o virtuální síti a podsíti:

    $resourceGroupName = "myResourceGroup"
    $accountName = "mycosmosaccount"
    $vnetName = "myVnet"
    $subnetName = "mySubnet"
    
    $vnet = Get-AzVirtualNetwork `
       -ResourceGroupName $resourceGroupName `
       -Name $vnetName
    
    $subnetId = $vnet.Id + "/subnets/" + $subnetName
    
  2. Připravte nový objekt pravidla virtuální sítě pro účet služby Azure Cosmos DB:

    $vnetRule = New-AzCosmosDBVirtualNetworkRule `
       -Id $subnetId
    
  3. Aktualizujte účet služby Azure Cosmos DB a povolte přístup ke koncovému bodu služby z podsítě:

    Update-AzCosmosDBAccount `
       -ResourceGroupName $resourceGroupName `
       -Name $accountName `
       -EnableVirtualNetwork $true `
       -VirtualNetworkRuleObject @($vnetRule)
    
  4. Opakujte předchozí kroky pro všechny účty Služby Azure Cosmos DB, ke které se přistupuje z podsítě.

  5. Povolte koncový bod služby Azure Cosmos DB ve virtuální síti a podsíti pomocí kroku uvedeného v části Povolení koncového bodu služby pro existující podsíť virtuální sítě tohoto článku.

  6. Odeberte pravidlo brány firewall protokolu IP pro podsíť z pravidel brány firewall účtu služby Azure Cosmos DB.

Nejčastější dotazy

Tady je několik nejčastějších dotazů ke konfiguraci přístupu z virtuálních sítí:

Jsou poznámkové bloky a Prostředí Mongo/Cassandra v současné době kompatibilní s účty s povolenými virtuálními sítěmi?

V současné době se integrace prostředí Mongo Shell a Cassandra v Průzkumníku dat Azure Cosmos DB a službě Jupyter Notebooks nepodporují přístup k virtuální síti. Tato integrace je v současné době aktivní ve vývoji.

Můžu pro účet služby Azure Cosmos DB zadat koncový bod služby virtuální sítě i zásady řízení přístupu IP?

V účtu služby Azure Cosmos DB můžete povolit koncový bod služby virtuální sítě i zásady řízení přístupu IP (označované také jako brána firewall). Tyto dvě funkce doplňují a souhrnně zajišťují izolaci a zabezpečení vašeho účtu služby Azure Cosmos DB. Použití brány firewall protokolu IP zajišťuje, aby statické IP adresy mohly přistupovat k vašemu účtu.

Návody omezit přístup k podsíti ve virtuální síti?

K omezení přístupu k účtu služby Azure Cosmos DB z podsítě jsou potřeba dva kroky. Nejprve povolíte přenosy z podsítě, aby přenášely její podsíť a identitu virtuální sítě do služby Azure Cosmos DB. Změna identity provozu se provádí povolením koncového bodu služby pro službu Azure Cosmos DB v podsíti. Dále do účtu služby Azure Cosmos DB přidáte pravidlo určující tuto podsíť jako zdroj, ke kterému je možné získat přístup.

Budou seznamy ACL virtuální sítě a brána firewall protokolu IP odmítat požadavky nebo připojení?

Když přidáte pravidla brány firewall protokolu IP nebo přístupu k virtuální síti, budou platné odpovědi dostávat jenom požadavky z povolených zdrojů. Ostatní žádosti jsou odmítnuty se 403 (Zakázáno). Je důležité rozlišovat bránu firewall účtu služby Azure Cosmos DB od brány firewall na úrovni připojení. Zdroj se stále může připojit ke službě a samotná připojení se neodmítnou.

Moje požadavky se začaly blokovat, když jsem povolil(a) koncový bod služby do služby Azure Cosmos DB v podsíti. Co se stalo?

Jakmile je koncový bod služby pro službu Azure Cosmos DB povolený v podsíti, zdroj provozu, který dosahuje účtu, se přepne z veřejné IP adresy na virtuální síť a podsíť. Pokud má váš účet služby Azure Cosmos DB jenom bránu firewall založenou na protokolu IP, provoz z podsítě s podporou služby už neodpovídá pravidlu brány firewall protokolu IP, a proto se odmítne. Projděte si kroky pro bezproblémovou migraci z brány firewall založené na protokolu IP na řízení přístupu na základě virtuální sítě.

Jsou pro účty Azure Cosmos DB s koncovými body služeb virtuální sítě potřeba další oprávnění řízení přístupu na základě role v Azure?

Po přidání koncových bodů služby virtuální sítě do účtu služby Azure Cosmos DB potřebujete k provedení jakýchkoli změn nastavení účtu přístup k Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action akci pro všechny virtuální sítě nakonfigurované ve vašem účtu služby Azure Cosmos DB. Toto oprávnění se vyžaduje, protože proces autorizace před vyhodnocením jakýchkoli vlastností ověří přístup k prostředkům (například k databázím a prostředkům virtuální sítě).

Autorizace ověří oprávnění pro akci prostředku virtuální sítě, i když uživatel nezadá seznamy ACL virtuální sítě pomocí Azure CLI. Řídicí rovina účtu služby Azure Cosmos DB v současné době podporuje nastavení kompletního stavu účtu služby Azure Cosmos DB. Jedním z parametrů volání řídicí roviny je virtualNetworkRules. Pokud tento parametr není zadaný, Azure CLI provede volání get database k načtení virtualNetworkRules a použití této hodnoty ve volání aktualizace.

Mají partnerské virtuální sítě také přístup k účtu služby Azure Cosmos DB?

Přístup mají jenom virtuální síť a jejich podsítě přidané do účtu služby Azure Cosmos DB. Jejich partnerské virtuální sítě nemají přístup k účtu, dokud se do účtu nepřidají podsítě v rámci partnerských virtuálních sítí.

Jaký je maximální počet podsítí povolený pro přístup k jednomu účtu služby Azure Cosmos DB?

V současné době můžete mít maximálně 256 podsítí povolených pro účet služby Azure Cosmos DB.

Můžu povolit přístup ze sítě VPN a ExpressRoute?

Pokud chcete získat přístup k účtu Služby Azure Cosmos DB přes ExpressRoute z místního prostředí, musíte povolit partnerský vztah Microsoftu. Po vložení pravidel přístupu k bráně firewall protokolu IP nebo virtuální sítě můžete přidat veřejné IP adresy používané pro partnerský vztah Microsoftu do brány firewall protokolu IP účtu služby Azure Cosmos DB, aby místní služby mohly přistupovat k účtu služby Azure Cosmos DB.

Musím aktualizovat pravidla skupin zabezpečení sítě (NSG)?

Pravidla NSG slouží k omezení připojení k podsíti a z podsítě s virtuální sítí. Když do podsítě přidáte koncový bod služby pro službu Azure Cosmos DB, není nutné otevírat odchozí připojení ve skupině zabezpečení sítě pro váš účet služby Azure Cosmos DB.

Jsou koncové body služby dostupné pro všechny virtuální sítě?

Ne, pouze virtuální sítě Azure Resource Manageru můžou mít povolený koncový bod služby. Klasické virtuální sítě nepodporují koncové body služeb.

Kdy mám přijímat připojení z globálních datacenter Azure pro účet služby Azure Cosmos DB?

Toto nastavení by mělo být povolené jenom v případě, že chcete, aby byl váš účet Azure Cosmos DB přístupný pro jakoukoli službu Azure v jakékoli oblasti Azure. Další služby Azure první strany, jako je Azure Data Factory a Azure AI Search, poskytují dokumentaci, jak zabezpečit přístup ke zdrojům dat, včetně účtů Azure Cosmos DB, například:

Další kroky

  • Pokud chcete nakonfigurovat bránu firewall pro službu Azure Cosmos DB, přečtěte si článek podpory brány firewall.