Udostępnij przez


Włączanie dostępu prywatnego w usłudze Azure DocumentDB

Azure Private Link to zaawansowana usługa, która umożliwia użytkownikom łączenie się z usługą Azure DocumentDB za pośrednictwem wyznaczonego prywatnego punktu końcowego. Ten prywatny punkt końcowy składa się z prywatnych adresów IP znajdujących się w podsieci w ramach własnej sieci wirtualnej. Punkt końcowy umożliwia ograniczenie dostępu do produktu Azure DocumentDB wyłącznie za pośrednictwem prywatnych adresów IP. Ryzyko eksfiltracji danych jest znacznie zmniejszone dzięki integracji usług Private Link z rygorystycznymi zasadami grup zabezpieczeń sieciowych. Aby lepiej zrozumieć prywatne punkty końcowe, zapoznaj się z tematem Co to jest usługa Azure Private Link?.

Uwaga / Notatka

Usługa Private Link zabezpiecza jednak połączenie, ale nie uniemożliwia rozpoznawania punktów końcowych usługi Azure DocumentDB przez publiczny system DNS. Filtrowanie żądań przychodzących jest obsługiwane na poziomie aplikacji, a nie na poziomie transportu ani sieci.

Usługa Private Link zapewnia elastyczność dostępu do usługi Azure DocumentDB z sieci wirtualnej lub z dowolnej połączonej równorzędnej sieci wirtualnej. Ponadto zasoby połączone z usługą Private Link są dostępne na miejscu za pomocą prywatnego peeringu, sieci VPN lub usługi Azure ExpressRoute.

Aby nawiązać połączenie, usługa Azure DocumentDB z usługą Private Link obsługuje zarówno metody automatycznego, jak i ręcznego zatwierdzania.

Wymagania wstępne

  • Subskrypcja platformy Azure

  • Istniejący klaster usługi Azure DocumentDB

Tworzenie klastra z prywatnym punktem końcowym przy użyciu witryny Azure Portal

Wykonaj następujące kroki, aby utworzyć nowy klaster usługi Azure DocumentDB z prywatnym punktem końcowym przy użyciu witryny Azure Portal:

  1. Zaloguj się do witryny Azure Portal, a następnie wybierz pozycję Utwórz zasób w lewym górnym rogu witryny Azure Portal.

  2. Na stronie Tworzenie zasobu wybierz pozycję Bazy danych , a następnie wybierz pozycję Azure DocumentDB.

  3. Na stronie Wybierz interfejs API na kafelku MongoDB wybierz pozycję Utwórz.

  4. Wybierz typ zasobu klastra .

  5. Na stronie Tworzenie klastra usługi Azure DocumentDB wybierz lub utwórz grupę zasobów, wprowadź nazwę klastra i lokalizację, a następnie wprowadź i potwierdź hasło administratora.

  6. Wybierz pozycję Dalej: Konfiguracja sieci.

  7. Wybierz kartę Sieć , w polu Metoda łączności wybierz pozycję Dostęp prywatny.

  8. Na ekranie Tworzenie prywatnego punktu końcowego wprowadź lub wybierz odpowiednie wartości dla:

    Setting Wartość
    Grupa zasobów Wybierz grupę zasobów.
    Name Wprowadź dowolną nazwę prywatnego punktu końcowego. Jeśli ta nazwa zostanie pobrana, utwórz unikatową nazwę.
    Nazwa interfejsu sieciowego Wprowadź dowolną nazwę interfejsu sieciowego. Jeśli ta nazwa zostanie pobrana, utwórz unikatową nazwę.
    Lokalizacja Wybierz region, w którym chcesz wdrożyć usługę Private Link. Utwórz prywatny punkt końcowy w tej samej lokalizacji, w której istnieje sieć wirtualna.
    Typ zasobu Wybierz opcję Microsoft.DocumentDB/mongoClusters.
    Zasób docelowy Wybierz utworzony zasób usługi Azure DocumentDB.
    Docelowy zasób podrzędny Wybierz typ podźródła zasobu wybranego wcześniej, do którego prywatny punkt końcowy powinien mieć dostęp.
    Sieć wirtualna Wybierz sieć wirtualną.
    Subnet Wybierz podsieć.
    Integruj z prywatną strefą DNS Wybierz opcję Tak. Aby można było połączyć się prywatnie z prywatnym punktem końcowym, wymagany jest rekord DNS. Zalecamy zintegrowanie prywatnego punktu końcowego z prywatną strefą DNS. Możesz również użyć własnych serwerów DNS lub utworzyć rekordy DNS przy użyciu plików hosta na maszynach wirtualnych. Po wybraniu opcji tak dla tej opcji zostanie również utworzona prywatna grupa stref DNS. Grupa stref DNS to połączenie między prywatną strefą DNS a prywatnym punktem końcowym. Ten link ułatwia automatyczne aktualizowanie prywatnej strefy DNS w przypadku aktualizacji prywatnego punktu końcowego. Na przykład podczas dodawania lub usuwania regionów prywatna strefa DNS jest automatycznie aktualizowana.
    Nazwa konfiguracji Wybierz subskrypcję i grupę zasobów. Prywatna strefa DNS jest określana automatycznie. Nie można go zmienić przy użyciu witryny Azure Portal.
  9. Wybierz OK

  10. Wybierz Dalej: Tagi>Przegląd i tworzenie. Na stronie Przeglądanie i tworzenie wybierz pozycję Utwórz.

Włączanie dostępu prywatnego w istniejącym klastrze

Aby utworzyć prywatny punkt końcowy do węzła w istniejącym klastrze, otwórz stronę Sieć klastra.

  1. Wybierz pozycję Dodaj prywatny punkt końcowy.

    Zrzut ekranu z wybieraniem opcji Dodaj prywatny punkt końcowy na ekranie sieciowym.

  2. Na karcie Podstawy ekranu Tworzenie prywatnego punktu końcowego potwierdź subskrypcję, grupę zasobów i region. Wprowadź nazwę punktu końcowego, na przykład my-cluster-1, i nazwę interfejsu sieciowego, taką jak my-cluster-1-nic.

    Uwaga / Notatka

    Jeśli nie masz dobrego powodu do innego wyboru, zalecamy wybranie subskrypcji i regionu dopasowanej do twojego klastra. Wartości domyślne pól formularza mogą nie być poprawne. Sprawdź je i zaktualizuj w razie potrzeby.

  3. Wybierz pozycję Dalej: Zasób. W polu Typ zasobu wybierz pozycję "Microsoft.DocumentDB/mongoClusters" i wybierz klaster docelowy dla pozycji Zasób. W przypadku Docelowego zasobu podrzędnego wybierz "MongoCluster".

  4. Wybierz Dalej: Sieć wirtualna. Wybierz żądaną sieć wirtualną i podsieć. W obszarze Konfiguracja prywatnego adresu IP wybierz pozycję Statycznie przydziel adres IP lub zachowaj wartość domyślną Dynamiczne przydzielanie adresu IP.

  5. Wybierz Dalej: DNS.

  6. W sekcji Integracja z prywatnym DNS, przy opcji Integruj z prywatną strefą DNS, pozostaw wartość domyślną Tak lub wybierz Nie.

Uwaga / Notatka

Aby zapewnić prawidłową rozdzielczość DNS, integracja prywatnego DNS musi być włączona na klastrze.

  1. Wybierz pozycję Dalej: Tagi i dodaj dowolne żądane tagi.

  2. Wybierz opcję Recenzja i utwórz. Przejrzyj ustawienia i wybierz Utwórz, jeśli jesteś zadowolony.

Tworzenie prywatnego punktu końcowego przy użyciu interfejsu wiersza polecenia platformy Azure

Uruchom następujący skrypt interfejsu wiersza polecenia platformy Azure, aby utworzyć prywatny punkt końcowy o nazwie myPrivateEndpoint dla istniejącego konta usługi Azure DocumentDB. Zastąp wartości zmiennych szczegółami środowiska.

# Resource group where the Azure DocumentDB account and virtual network resources are located  
ResourceGroupName="myResourceGroup" 

# Name of the existing Azure DocumentDB account  
ClusterName="myMongoCluster" 

# Subscription ID where the Azure DocumentDB account and virtual network resources are located  
SubscriptionId="<your Azure subscription ID>"  

# API type of your Azure DocumentDB account: Sql, SqlDedicated, MongoCluster, Cassandra, Gremlin, or Table 
SubResourceType="MongoCluster"  

# Name of the virtual network to create  
VNetName="myVnet"  

# Name of the subnet to create  
SubnetName="mySubnet"  

# Name of the private endpoint to create  
PrivateEndpointName="myPrivateEndpoint"  

# Name of the private endpoint connection to create 
PrivateConnectionName="myConnection" 

az network vnet create \
  --name $VNetName \
  --resource-group $ResourceGroupName \
  --subnet-name $SubnetName 

az network vnet subnet update \
  --name <name> \
  --resource-group $ResourceGroupName \
  --vnet-name $VNetName \
  --disable-private-endpoint-network-policies true 

az network private-endpoint create \
  --name $PrivateEndpointName \
  --resource-group $ResourceGroupName \
  --vnet-name $VNetName \
  --subnet $SubnetName \
  --private-connection-resource-id "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.DocumentDB/mongoClusters/$ClusterName" \
  --group-ids MongoCluster --connection-name $PrivateConnectionName 

Integrowanie prywatnego punktu końcowego z prywatną strefą DNS

Po utworzeniu prywatnego punktu końcowego należy zintegrować go z prywatną strefą DNS przy użyciu następującego skryptu interfejsu wiersza polecenia platformy Azure:

Uwaga / Notatka

Aby zapewnić prawidłową rozdzielczość DNS, integracja prywatnego DNS musi być włączona na klastrze.

#Zone name differs based on the API type and group ID you are using. 
zoneName="privatelink.mongocluster.cosmos.azure.com" 

az network private-dns zone create \
  --resource-group $ResourceGroupName \
  --name $zoneName 

az network private-dns link vnet create --resource-group $ResourceGroupName \
  --zone-name $zoneName \
  --name <dns-link-name> \
  --virtual-network $VNetName \
  --registration-enabled false 

#Create a DNS zone group
az network private-endpoint dns-zone-group create \
  --resource-group $ResourceGroupName \
  --endpoint-name <pe-name> \
  --name <zone-group-name> \
  --private-dns-zone $zoneName \
  --zone-name mongocluster 

Pobieranie parametrów połączenia w celu nawiązania połączenia

Zawsze używaj mongodb+srv parametrów połączenia, aby nawiązać połączenie z bazą danych z poziomu klienta z prywatnym adresem IP, który ma dostęp do prywatnego punktu końcowego przypisanego do klastra usługi Azure DocumentDB.

  1. Wybierz istniejący klaster usługi Azure DocumentDB.
  2. Na pasku bocznym klastra w obszarze Ustawienia wybierz pozycję Parametry połączenia.
  3. Skopiuj globalny łańcuch połączenia do odczytu i zapisu lub łańcuch samodzielnego połączenia na potrzeby natywnego uwierzytelniania DocumentDB lub uwierzytelniania Microsoft Entra ID.

Uwaga / Notatka

W klastrze repliki są udostępniane tylko parametry połączenia samodzielnego.

  1. Użyj skopiowanych parametrów połączenia w aplikacji lub narzędziach do zarządzania, aby nawiązać połączenie z klastrem.
az network private-link-resource list \
  -g <rg-name> \
  -n <resource-name> \
  --type Microsoft.DocumentDB/mongoClusters 

Weryfikowanie i rozwiązywanie problemów z łącznością prywatnego punktu końcowego

Po utworzeniu prywatnego punktu końcowego dla klastra usługi Azure DocumentDB ważne jest, aby sprawdzić, czy rozpoznawanie nazw DNS działa prawidłowo i czy aplikacje mogą łączyć się za pośrednictwem prywatnego punktu końcowego.

Weryfikowanie stanu prywatnego punktu końcowego

Najpierw upewnij się, że prywatny punkt końcowy jest prawidłowo aprowizowany i połączony:

  1. W witrynie Azure Portal przejdź do klastra usługi Azure DocumentDB.
  2. Na pasku bocznym klastra w obszarze Ustawienia wybierz pozycję Sieć.
  3. Sprawdź, czy prywatny punkt końcowy znajduje się na liście ze stanem Zatwierdzone.
  4. Wybierz nazwę prywatnego punktu końcowego, aby wyświetlić jego szczegóły, w tym przypisany prywatny adres IP.

Możesz również użyć interfejsu wiersza polecenia platformy Azure, aby sprawdzić stan prywatnego punktu końcowego:

az network private-endpoint show \
  --resource-group $ResourceGroupName \
  --name $PrivateEndpointName

Testowanie rozpoznawania nazw DNS

Usługa Azure DocumentDB używa rekordów SRV do odnajdywania usług w przypadku używania mongodb+srv formatu parametrów połączenia. Aby sprawdzić, czy rozpoznawanie nazw DNS działa prawidłowo, przetestuj rozpoznawanie nazw DNS z maszyny wirtualnej lub zasobu w tej samej sieci wirtualnej lub w sieci równorzędnej.

Testowanie dns systemu Windows

Z maszyny z systemem Windows podłączonej do sieci wirtualnej użyj następujących poleceń:

  1. Przetestuj rozdzielczość rekordu SRV:

    Resolve-DnsName -Name _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com -Type SRV
    

    Dane wyjściowe powinny pokazywać rekordy SRV wskazujące węzły klastra w prywatnej strefie DNS.

  2. Rozwiąż poszczególne nazwy hostów węzłów, aby sprawdzić, czy są rozpoznawane jako prywatne adresy IP:

    Resolve-DnsName -Name <your-node-hostname>.mongocluster.cosmos.azure.com
    

    Dane wyjściowe powinny wyświetlać prywatne adresy IP (na przykład 10.x.x.x.x) zamiast publicznych adresów IP.

  3. Użyj nslookup jako alternatywy:

    nslookup -type=SRV _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com
    nslookup <your-node-hostname>.mongocluster.cosmos.azure.com
    

Testowanie dns w systemach Linux i macOS

Z maszyny z systemem Linux lub macOS połączonej z siecią wirtualną użyj następujących poleceń:

  1. Przetestuj rozdzielczość rekordu SRV:

    dig _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com SRV
    

    Dane wyjściowe powinny pokazywać rekordy SRV z docelowymi adresami wskazującymi na węzły klastra.

  2. Rozwiąż nazwy hostów poszczególnych węzłów:

    dig <your-node-hostname>.mongocluster.cosmos.azure.com
    

    Rekordy A powinny wskazywać na prywatne adresy IP w przestrzeni adresowej sieci wirtualnej.

  3. Użyj nslookup jako alternatywy:

    nslookup -type=SRV _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com
    nslookup <your-node-hostname>.mongocluster.cosmos.azure.com
    

Typowe scenariusze rozwiązywania problemów

Jeśli wystąpią problemy z łącznością, sprawdź następujące kwestie:

Rozpoznawanie nazw DNS kończy się niepowodzeniem lub zwraca publiczne adresy IP

  • Sprawdź, czy prywatna strefa DNS jest poprawnie połączona z siecią wirtualną.
  • Upewnij się, że grupa stref DNS jest prawidłowo skonfigurowana w prywatnym punkcie końcowym.
  • Sprawdź, czy ustawienia DNS sieci wirtualnej są ustawione tak, aby używały usługi DNS dostępnej na platformie Azure (168.63.129.16) lub niestandardowego serwera DNS, który przekazuje zapytania do usługi Azure DNS.
  • Upewnij się, że testujesz z zasobu w sieci wirtualnej lub w prawidłowo połączonej sieci.

Przekroczenia limitu czasu lub awarii połączenia

  • Sprawdź, czy reguły sieciowej grupy zabezpieczeń w podsieci zezwalają na łączność wychodzącą na porcie 27017 (domyślny port bazy danych MongoDB).
  • Upewnij się, że interfejs sieciowy prywatnego punktu końcowego ma przypisany prawidłowy prywatny adres IP.
  • Sprawdź, czy aplikacja lub klient używa poprawnego formatu parametrów połączenia (mongodb+srv).
  • Upewnij się, że reguły zapory w klastrze usługi Azure DocumentDB zezwalają na połączenia z prywatnego punktu końcowego.

Prywatna strefa DNS nie rozwiązuje

  • Sprawdź, czy nazwa prywatnej strefy DNS jest zgodna z oczekiwanym formatem: privatelink.mongocluster.cosmos.azure.com.
  • Sprawdź, czy rekordy A istnieją w prywatnej strefie DNS dla węzłów klastra.
  • Upewnij się, że link do sieci wirtualnej jest aktywny i prawidłowo skonfigurowany w prywatnej strefie DNS.

Wyświetlanie szczegółów prywatnego punktu końcowego

Aby wyświetlić szczegółowe informacje o konfiguracji prywatnego punktu końcowego, użyj następującego polecenia interfejsu wiersza polecenia platformy Azure:

az network private-endpoint show \
  --resource-group $ResourceGroupName \
  --name $PrivateEndpointName \
  --query '{Name:name, PrivateIpAddress:customDnsConfigs[0].ipAddresses[0], FQDN:customDnsConfigs[0].fqdn, ProvisioningState:provisioningState}' \
  --output table

To polecenie wyświetla kluczowe informacje, w tym prywatny adres IP, w pełni kwalifikowaną nazwę domeny (FQDN) i stan aprowizacji.