Konfigurowanie dostępu do usługi Azure Cosmos DB z sieci wirtualnych
DOTYCZY: NoSQL MongoDB Kasandra Gremlin Stół
Konto usługi Azure Cosmos DB można skonfigurować tak, aby zezwalało na dostęp tylko z określonej podsieci sieci wirtualnej. Włącz punkt końcowy usługi w podsieci w sieci wirtualnej, aby kontrolować dostęp do usługi Azure Cosmos DB. Ruch z tej podsieci jest wysyłany do usługi Azure Cosmos DB z tożsamością podsieci i sieci wirtualnej. Po włączeniu punktu końcowego usługi Azure Cosmos DB możesz ograniczyć dostęp do podsieci, dodając go do konta usługi Azure Cosmos DB.
Domyślnie konto usługi Azure Cosmos DB jest dostępne z dowolnego źródła, jeśli do żądania dołączy prawidłowy token autoryzacji. Po dodaniu co najmniej jednej podsieci w sieciach wirtualnych tylko żądania pochodzące z tych podsieci otrzymają prawidłową odpowiedź. Żądania pochodzące z dowolnego innego źródła otrzymają odpowiedź 403 (zabronione).
Konta usługi Azure Cosmos DB można skonfigurować tak, aby zezwalać na dostęp tylko z określonej podsieci sieci wirtualnej platformy Azure. Aby ograniczyć dostęp do konta usługi Azure Cosmos DB z połączeniami z podsieci w sieci wirtualnej:
Włącz punkt końcowy usługi dla usługi Azure Cosmos DB, aby wysłać tożsamość podsieci i sieci wirtualnej do usługi Azure Cosmos DB.
Dodaj regułę na koncie usługi Azure Cosmos DB, aby określić podsieć jako źródło, z którego można uzyskać dostęp do konta.
Uwaga
Po włączeniu punktu końcowego usługi dla konta usługi Azure Cosmos DB w podsieci źródło ruchu, które dociera do usługi Azure Cosmos DB, przełącza się z publicznego adresu IP do sieci wirtualnej i podsieci. Przełączanie ruchu dotyczy dowolnego konta usługi Azure Cosmos DB, do którego uzyskuje się dostęp z tej podsieci. Jeśli konta usługi Azure Cosmos DB mają zaporę opartą na adresach IP, aby zezwolić na tę podsieć, żądania z podsieci obsługującej usługę nie są już zgodne z regułami zapory adresów IP i są odrzucane.
Aby dowiedzieć się więcej, zobacz kroki opisane w sekcji Migrowanie z reguły zapory ip do listy kontroli dostępu do sieci wirtualnej w tym artykule.
W poniższych sekcjach opisano sposób konfigurowania punktu końcowego usługi sieci wirtualnej dla konta usługi Azure Cosmos DB.
Konfigurowanie punktu końcowego usługi przy użyciu witryny Azure Portal
Konfigurowanie punktu końcowego usługi dla istniejącej sieci wirtualnej i podsieci platformy Azure
W okienku Wszystkie zasoby znajdź konto usługi Azure Cosmos DB, które chcesz zabezpieczyć.
Wybierz pozycję Sieć z menu ustawień
Wybierz, aby zezwolić na dostęp z wybranych sieci.
Aby udzielić dostępu do podsieci istniejącej sieci wirtualnej, w obszarze Sieci wirtualne wybierz pozycję Dodaj istniejącą sieć wirtualną platformy Azure.
Wybierz subskrypcję, z której chcesz dodać sieć wirtualną platformy Azure. Wybierz sieci wirtualne i podsieci platformy Azure, które chcesz zapewnić dostęp do konta usługi Azure Cosmos DB. Następnie wybierz pozycję Włącz , aby włączyć wybrane sieci z punktami końcowymi usługi dla pozycji "Microsoft.AzureCosmosDB". Po zakończeniu wybierz pozycję Dodaj.
Uwaga
Propagowanie punktu końcowego usługi sieci wirtualnej może potrwać do 15 minut, a punkt końcowy może wykazywać niespójne zachowanie w tym okresie.
Po włączeniu konta usługi Azure Cosmos DB na dostęp z sieci wirtualnej będzie zezwalać na ruch tylko z tej wybranej podsieci. Dodana sieć wirtualna i podsieć powinny zostać wyświetlone, jak pokazano na poniższym zrzucie ekranu:
Uwaga
Aby włączyć punkty końcowe usługi dla sieci wirtualnej, potrzebne są następujące uprawnienia subskrypcji:
- Subskrypcja z siecią wirtualną: Współautor sieci
- Subskrypcja z kontem usługi Azure Cosmos DB: współautor konta usługi DocumentDB
- Jeśli twoja sieć wirtualna i konto usługi Azure Cosmos DB znajdują się w różnych subskrypcjach, upewnij się, że subskrypcja z siecią wirtualną ma
Microsoft.DocumentDB
również zarejestrowanego dostawcę zasobów. Aby zarejestrować dostawcę zasobów, zobacz artykuł Dostawcy zasobów i typy platformy Azure.
Poniżej przedstawiono wskazówki dotyczące rejestrowania subskrypcji u dostawcy zasobów.
Konfigurowanie punktu końcowego usługi dla nowej sieci wirtualnej i podsieci platformy Azure
W okienku Wszystkie zasoby znajdź konto usługi Azure Cosmos DB, które chcesz zabezpieczyć.
Wybierz pozycję Sieć z menu ustawień i wybierz opcję zezwalania na dostęp z wybranych sieci.
Aby udzielić dostępu do nowej sieci wirtualnej platformy Azure, w obszarze Sieci wirtualne wybierz pozycję Dodaj nową sieć wirtualną.
Podaj szczegóły wymagane do utworzenia nowej sieci wirtualnej, a następnie wybierz pozycję Utwórz. Podsieć zostanie utworzona z punktem końcowym usługi dla włączonego elementu "Microsoft.AzureCosmosDB".
Jeśli twoje konto usługi Azure Cosmos DB jest używane przez inne usługi platformy Azure, takie jak Azure AI Search, lub jest dostępne z usługi Stream Analytics lub Power BI, możesz zezwolić na dostęp, wybierając pozycję Akceptuj połączenia z globalnych centrów danych platformy Azure.
Aby mieć pewność, że masz dostęp do metryk usługi Azure Cosmos DB z portalu, musisz włączyć opcję Zezwalaj na dostęp z poziomu opcji witryny Azure Portal . Aby dowiedzieć się więcej o tych opcjach, zobacz artykuł Konfigurowanie zapory adresów IP. Po włączeniu dostępu wybierz pozycję Zapisz , aby zapisać ustawienia.
Usuwanie sieci wirtualnej lub podsieci
W okienku Wszystkie zasoby znajdź konto usługi Azure Cosmos DB, dla którego przypisano punkty końcowe usługi.
Wybierz pozycję Sieć z menu ustawień.
Aby usunąć regułę sieci wirtualnej lub podsieci, wybierz pozycję ... obok sieci wirtualnej lub podsieci, a następnie wybierz pozycję Usuń.
Wybierz pozycję Zapisz, aby zastosować zmiany.
Konfigurowanie punktu końcowego usługi przy użyciu programu Azure PowerShell
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Wykonaj następujące kroki, aby skonfigurować punkt końcowy usługi na koncie usługi Azure Cosmos DB przy użyciu programu Azure PowerShell:
Zainstaluj program Azure PowerShell i zaloguj się.
Włącz punkt końcowy usługi dla istniejącej podsieci sieci wirtualnej.
$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
Uwaga
W przypadku korzystania z programu PowerShell lub interfejsu wiersza polecenia platformy Azure należy określić pełną listę filtrów adresów IP i list ACL sieci wirtualnej w parametrach, a nie tylko tych, które należy dodać.
Uzyskaj informacje o sieci wirtualnej.
$vnet = Get-AzVirtualNetwork ` -ResourceGroupName $resourceGroupName ` -Name $vnetName $subnetId = $vnet.Id + "/subnets/" + $subnetName
Przygotowywanie reguły sieci wirtualnej usługi Azure Cosmos DB
$vnetRule = New-AzCosmosDBVirtualNetworkRule ` -Id $subnetId
Zaktualizuj właściwości konta usługi Azure Cosmos DB przy użyciu nowej konfiguracji punktu końcowego sieci wirtualnej:
$accountName = "<Azure Cosmos DB account name>" Update-AzCosmosDBAccount ` -ResourceGroupName $resourceGroupName ` -Name $accountName ` -EnableVirtualNetwork $true ` -VirtualNetworkRuleObject @($vnetRule)
Uruchom następujące polecenie, aby sprawdzić, czy konto usługi Azure Cosmos DB zostało zaktualizowane przy użyciu punktu końcowego usługi sieci wirtualnej skonfigurowanego w poprzednim kroku:
$account = Get-AzCosmosDBAccount ` -ResourceGroupName $resourceGroupName ` -Name $accountName $account.IsVirtualNetworkFilterEnabled $account.VirtualNetworkRules
Konfigurowanie punktu końcowego usługi przy użyciu interfejsu wiersza polecenia platformy Azure
Konta usługi Azure Cosmos DB można skonfigurować dla punktów końcowych usługi podczas ich tworzenia lub aktualizowania w późniejszym czasie, jeśli podsieć jest już skonfigurowana dla nich. Punkty końcowe usługi można również włączyć na koncie usługi Azure Cosmos DB, na którym podsieć nie jest jeszcze skonfigurowana. Następnie punkt końcowy usługi zacznie działać po skonfigurowaniu podsieci później. Ta elastyczność umożliwia administratorom, którzy nie mają dostępu zarówno do konta usługi Azure Cosmos DB, jak i zasobów sieci wirtualnej, aby ich konfiguracje stały się niezależne od siebie.
Tworzenie nowego konta usługi Azure Cosmos DB i łączenie go z podsiecią zaplecza dla nowej sieci wirtualnej
W tym przykładzie sieć wirtualna i podsieć są tworzone z włączonymi punktami końcowymi usługi dla obu po ich utworzeniu.
# 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
Łączenie i konfigurowanie konta usługi Azure Cosmos DB z podsiecią zaplecza niezależnie
W tym przykładzie pokazano, jak połączyć konto usługi Azure Cosmos DB z istniejącą lub nową siecią wirtualną. W tym przykładzie podsieć nie jest jeszcze skonfigurowana dla punktów końcowych usługi. Skonfiguruj punkt końcowy usługi przy użyciu parametru --ignore-missing-vnet-service-endpoint
. Ta konfiguracja umożliwia ukończenie konta usługi Azure Cosmos DB bez błędu przed ukończeniem konfiguracji podsieci sieci wirtualnej. Po zakończeniu konfiguracji podsieci konto usługi Azure Cosmos DB będzie dostępne za pośrednictwem skonfigurowanej podsieci.
# 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
Zakres portów w przypadku korzystania z trybu bezpośredniego
Jeśli używasz punktów końcowych usługi z kontem usługi Azure Cosmos DB za pośrednictwem połączenia w trybie bezpośrednim, upewnij się, że port TCP z zakresu od 10000 do 20000 jest otwarty.
Migrowanie z reguły zapory IP do listy ACL sieci wirtualnej
Aby przeprowadzić migrację konta usługi Azure Cosmos DB z używania reguł zapory ip do korzystania z punktów końcowych usługi sieci wirtualnej, wykonaj następujące kroki.
Po skonfigurowaniu konta usługi Azure Cosmos DB dla punktu końcowego usługi dla podsieci każde żądanie z tej podsieci jest wysyłane inaczej do usługi Azure Cosmos DB. Żądania są wysyłane z informacjami o sieci wirtualnej i źródle podsieci zamiast źródłowego publicznego adresu IP. Te żądania nie będą już zgodne z filtrem adresów IP skonfigurowanym na koncie usługi Azure Cosmos DB, dlatego poniższe kroki są niezbędne, aby uniknąć przestoju.
Uzyskaj informacje o sieci wirtualnej i podsieci:
$resourceGroupName = "myResourceGroup" $accountName = "mycosmosaccount" $vnetName = "myVnet" $subnetName = "mySubnet" $vnet = Get-AzVirtualNetwork ` -ResourceGroupName $resourceGroupName ` -Name $vnetName $subnetId = $vnet.Id + "/subnets/" + $subnetName
Przygotuj nowy obiekt reguły sieci wirtualnej dla konta usługi Azure Cosmos DB:
$vnetRule = New-AzCosmosDBVirtualNetworkRule ` -Id $subnetId
Zaktualizuj konto usługi Azure Cosmos DB, aby włączyć dostęp do punktu końcowego usługi z podsieci:
Update-AzCosmosDBAccount ` -ResourceGroupName $resourceGroupName ` -Name $accountName ` -EnableVirtualNetwork $true ` -VirtualNetworkRuleObject @($vnetRule)
Powtórz poprzednie kroki dla wszystkich kont usługi Azure Cosmos DB, do których uzyskiwano dostęp z podsieci.
Włącz punkt końcowy usługi Azure Cosmos DB w sieci wirtualnej i podsieci przy użyciu kroku przedstawionego w sekcji Włączanie punktu końcowego usługi dla istniejącej podsieci sieci wirtualnej w tym artykule.
Usuń regułę zapory IP dla podsieci z reguł zapory konta usługi Azure Cosmos DB.
Często zadawane pytania
Oto kilka często zadawanych pytań dotyczących konfigurowania dostępu z sieci wirtualnych:
Czy notesy i powłoka Mongo/Cassandra są obecnie zgodne z kontami z włączoną siecią wirtualną?
Obecnie integracja powłoki Mongo i powłoki Cassandra w Eksploratorze danych usługi Azure Cosmos DB nie jest obsługiwana z dostępem do sieci wirtualnej. Ta integracja jest obecnie w aktywnym rozwoju.
Czy mogę określić zarówno punkt końcowy usługi sieci wirtualnej, jak i zasady kontroli dostępu ip na koncie usługi Azure Cosmos DB?
Możesz włączyć zarówno punkt końcowy usługi sieci wirtualnej, jak i zasady kontroli dostępu ip (znane również jako zapora) na koncie usługi Azure Cosmos DB. Te dwie funkcje uzupełniają się i wspólnie zapewniają izolację i bezpieczeństwo konta usługi Azure Cosmos DB. Użycie zapory ip gwarantuje, że statyczne adresy IP mogą uzyskiwać dostęp do twojego konta.
Jak mogę ograniczyć dostęp do podsieci w sieci wirtualnej?
Istnieją dwa kroki wymagane do ograniczenia dostępu do konta usługi Azure Cosmos DB z podsieci. Najpierw zezwalasz na ruch z podsieci na przenoszenie tożsamości podsieci i sieci wirtualnej do usługi Azure Cosmos DB. Zmiana tożsamości ruchu odbywa się przez włączenie punktu końcowego usługi dla usługi Azure Cosmos DB w podsieci. Następnie dodaje regułę na koncie usługi Azure Cosmos DB określającym tę podsieć jako źródło, z którego można uzyskać dostęp do konta.
Czy listy ACL sieci wirtualnej i zapora IP odrzucają żądania lub połączenia?
Po dodaniu zapory ip lub reguł dostępu do sieci wirtualnej tylko żądania z dozwolonych źródeł uzyskują prawidłowe odpowiedzi. Inne żądania są odrzucane za pomocą błędu 403 (Zabronione). Ważne jest, aby odróżnić zaporę konta usługi Azure Cosmos DB od zapory na poziomie połączenia. Źródło może nadal łączyć się z usługą, a same połączenia nie są odrzucane.
Moje żądania zaczęły być blokowane po włączeniu punktu końcowego usługi do usługi Azure Cosmos DB w podsieci. Co się stało?
Po włączeniu punktu końcowego usługi dla usługi Azure Cosmos DB w podsieci źródło ruchu docierającego do konta przełącza się z publicznego adresu IP do sieci wirtualnej i podsieci. Jeśli konto usługi Azure Cosmos DB ma tylko zaporę opartą na adresach IP, ruch z podsieci z włączoną usługą nie będzie już zgodny z regułami zapory adresów IP i dlatego zostanie odrzucony. Wykonaj kroki, aby bezproblemowo przeprowadzić migrację z zapory opartej na adresach IP do kontroli dostępu opartej na sieci wirtualnej.
Czy dodatkowe uprawnienia kontroli dostępu opartej na rolach platformy Azure są wymagane dla kont usługi Azure Cosmos DB z punktami końcowymi usługi sieci wirtualnej?
Po dodaniu punktów końcowych usługi sieci wirtualnej do konta usługi Azure Cosmos DB, aby wprowadzić zmiany w ustawieniach konta, musisz mieć dostęp do Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action
akcji dla wszystkich sieci wirtualnych skonfigurowanych na koncie usługi Azure Cosmos DB. To uprawnienie jest wymagane, ponieważ proces autoryzacji weryfikuje dostęp do zasobów (takich jak zasoby bazy danych i sieci wirtualnej) przed oceną jakichkolwiek właściwości.
Autoryzacja weryfikuje uprawnienia do akcji zasobu sieci wirtualnej, nawet jeśli użytkownik nie określi list ACL sieci wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure. Obecnie płaszczyzna sterowania konta usługi Azure Cosmos DB obsługuje ustawianie pełnego stanu konta usługi Azure Cosmos DB. Jednym z parametrów wywołań płaszczyzny sterowania jest virtualNetworkRules
. Jeśli ten parametr nie zostanie określony, interfejs wiersza polecenia platformy Azure wykonuje wywołanie get bazy danych w celu pobrania virtualNetworkRules
wartości i używa tej wartości w wywołaniu aktualizacji.
Czy równorzędne sieci wirtualne mają również dostęp do konta usługi Azure Cosmos DB?
Tylko sieć wirtualna i ich podsieci dodane do konta usługi Azure Cosmos DB mają dostęp. Ich równorzędne sieci wirtualne nie mogą uzyskać dostępu do konta, dopóki podsieci w równorzędnych sieciach wirtualnych nie zostaną dodane do konta.
Jaka jest maksymalna liczba podsieci, które mogą uzyskiwać dostęp do pojedynczego konta usługi Azure Cosmos DB?
Obecnie można mieć co najwyżej 256 podsieci dozwolonych dla konta usługi Azure Cosmos DB.
Czy mogę włączyć dostęp z sieci VPN i usługi Express Route?
Aby uzyskać dostęp do konta usługi Azure Cosmos DB za pośrednictwem usługi Express Route ze środowiska lokalnego, należy włączyć komunikację równorzędną firmy Microsoft. Po wprowadzeniu reguł dostępu do adresów IP lub sieci wirtualnej można dodać publiczne adresy IP używane do komunikacji równorzędnej firmy Microsoft w zaporze adresu IP konta usługi Azure Cosmos DB, aby zezwolić na dostęp usług lokalnych do konta usługi Azure Cosmos DB.
Czy muszę zaktualizować reguły sieciowych grup zabezpieczeń?
Reguły sieciowej grupy zabezpieczeń są używane do ograniczania łączności z podsiecią i z podsieci z siecią wirtualną. Po dodaniu punktu końcowego usługi dla usługi Azure Cosmos DB do podsieci nie ma potrzeby otwierania łączności wychodzącej w sieciowej grupie zabezpieczeń dla konta usługi Azure Cosmos DB.
Czy punkty końcowe usługi są dostępne dla wszystkich sieci wirtualnych?
Nie, tylko sieci wirtualne usługi Azure Resource Manager mogą mieć włączony punkt końcowy usługi. Klasyczne sieci wirtualne nie obsługują punktów końcowych usługi.
Kiedy należy akceptować połączenia z globalnych centrów danych platformy Azure dla konta usługi Azure Cosmos DB?
To ustawienie powinno być włączone tylko wtedy, gdy konto usługi Azure Cosmos DB ma być dostępne dla dowolnej usługi platformy Azure w dowolnym regionie świadczenia usługi Azure. Inne usługi pierwszej firmy platformy Azure, takie jak Azure Data Factory i Azure AI Search, zawierają dokumentację dotyczącą zabezpieczania dostępu do źródeł danych, w tym kont usługi Azure Cosmos DB, na przykład:
- Zarządzana sieć wirtualna usługi Azure Data Factory
- Azure AI Search Indexer dostęp do chronionych zasobów
Następne kroki
- Aby skonfigurować zaporę dla usługi Azure Cosmos DB, zobacz artykuł Obsługa zapory.