Konfigurowanie prywatnych punktów końcowych dla niestandardowych tematów lub domen usługi Azure Event Grid

Za pomocą prywatnych punktów końcowych można umożliwić bezpieczne przesyłanie zdarzeń bezpośrednio z sieci wirtualnej do tematów niestandardowych i domen za pośrednictwem łącza prywatnego, bez przechodzenia przez publiczny Internet. Prywatny punkt końcowy używa adresu IP z przestrzeni adresowej sieci wirtualnej dla niestandardowego tematu lub domeny. Aby uzyskać więcej informacji koncepcyjnych, zobacz Zabezpieczenia sieci.

W tym artykule opisano sposób konfigurowania prywatnych punktów końcowych dla niestandardowych tematów lub domen.

Uwaga

Obecnie prywatne punkty końcowe nie są obsługiwane w przypadku tematów systemowych.

Korzystanie z witryny Azure Portal

W tej sekcji pokazano, jak za pomocą witryny Azure Portal utworzyć prywatny punkt końcowy dla tematu lub domeny.

Uwaga

Kroki przedstawione w tej sekcji dotyczą głównie tematów niestandardowych. Możesz użyć podobnych kroków, aby utworzyć prywatne punkty końcowe dla domen.

W przypadku nowego tematu

W tej sekcji pokazano, jak włączyć dostęp do sieci prywatnej dla tematu usługi Event Grid lub domeny. Aby uzyskać instrukcje krok po kroku dotyczące tworzenia nowego tematu, zobacz Tworzenie tematu niestandardowego.

  1. Na stronie Podstawy kreatora Tworzenie tematu wypełnij wymagane pola, a następnie wybierz pozycję Dalej: Sieć.

    Obraz przedstawiający wybór łącza „Sieć” na dole strony.

  2. Aby zezwolić na dostęp do tematu usługi Event Grid za pośrednictwem prywatnego punktu końcowego, wybierz opcję Dostęp prywatny .

    Obraz przedstawia wybór opcji „Dostęp prywatny” na stronie „Sieć” kreatora „Tworzenie tematu”.

  3. W sekcji Połączenia prywatnych punktów końcowych wybierz przycisk + Prywatny punkt końcowy.

    Zrzut ekranu przedstawiający przycisk Prywatny punkt końcowy na stronie Tworzenie tematu.

  4. Na stronie Tworzenie prywatnego punktu końcowego wykonaj następujące kroki:

    1. W polu Nazwa wprowadź nazwę prywatnego punktu końcowego.
    2. Wybierz sieć wirtualną. Na liście rozwijanej są wyświetlane tylko sieci wirtualne w aktualnie wybranej subskrypcji i lokalizacji.
    3. Wybierz podsieć w wybranej sieci wirtualnej.
    4. Wybierz, czy prywatny punkt końcowy ma być zintegrowany z prywatną strefą DNS.
    5. Wybierz przycisk OK.

    Zrzut ekranu przedstawiający stronę „Tworzenie prywatnego punktu końcowego”.

  5. Teraz na stronie Utwórz temat wybierz pozycję Przejrzyj i utwórz u dołu strony.

  6. Na stronie Przeglądanie i tworzenie wybierz pozycję Utwórz.

W przypadku istniejącego tematu

  1. Zaloguj się do witryny Azure Portal i przejdź do tematu lub domeny.

  2. Przejdź do karty Sieć na stronie tematu. Na karcie Dostęp publiczny wybierz pozycję Tylko prywatne punkty końcowe.

    Zrzut ekranu przedstawiający stronę Dostęp do sieci publicznej z wybraną opcją Tylko prywatne punkty końcowe.

  3. Przejdź na kartę Połączenia prywatnych punktów końcowych, a następnie wybierz na pasku narzędzi opcję + Prywatny punkt końcowy.

    Zrzut ekranu przedstawiający wybór linku + Prywatny punkt końcowy na karcie Połączenie z prywatnym punktem końcowym.

  4. Na stronie Podstawowe wykonaj następujące kroki:

    1. Wybierz subskrypcję platformy Azure, w której chcesz utworzyć prywatny punkt końcowy.

    2. Wybierz grupę zasobów platformy Azure dla prywatnego punktu końcowego.

    3. Wprowadź nazwę punktu końcowego.

    4. W razie potrzeby zaktualizuj nazwę interfejsusieciowego.

    5. Wybierz region punktu końcowego. Prywatny punkt końcowy musi znajdować się w tym samym regionie co sieć wirtualna, ale może być w innym regionie niż zasób łącza prywatnego (w tym przykładzie temat Event Grid).

    6. Wybierz Dalej: Zasób >.

      Zrzut ekranu przedstawiający stronę „Podstawy” w kreatorze tworzenia prywatnego punktu końcowego.

  5. Na stronie Zasób upewnij się, że dla podzasobu docelowego wybrano temat, a następnie wybierz pozycję Dalej: Sieć wirtualna >.

    Zrzut ekranu przedstawiający stronę „Zasób” kreatora tworzenia prywatnego punktu końcowego.

  6. Na stronie Virtual Network wybierz podsieć w virtual network, w której chcesz wdrożyć prywatny punkt końcowy.

    1. Wybierz sieć wirtualną. Na liście rozwijanej są wyświetlane tylko sieci wirtualne w aktualnie wybranej subskrypcji i lokalizacji.

    2. Wybierz podsieć w wybranej sieci wirtualnej.

    3. Określ, czy adres IP ma być przydzielany statycznie, czy dynamicznie.

    4. Wybierz istniejącą grupę zabezpieczeń aplikacji lub utwórz grupę, a następnie skojarz z prywatnym punktem końcowym.

    5. Wybierz Dalej: DNS >.

      Zrzut ekranu przedstawiający stronę Sieć wirtualna w kreatorze Tworzenie prywatnego punktu końcowego.

  7. Na stronie DNS wybierz, czy prywatny punkt końcowy ma być zintegrowany z prywatną strefą DNS, a następnie wybierz pozycję Dalej: Tagi.

    Zrzut ekranu przedstawiający stronę ustawień DNS w kreatorze tworzenia prywatnego punktu końcowego.

  8. Na stronie Tagi utwórz wszystkie tagi (nazwy i wartości), które chcesz skojarzyć z zasobem prywatnego punktu końcowego. Następnie wybierz pozycję Przegląd + utwórz.

  9. W obszarze Przeglądanie + tworzenie przejrzyj wszystkie ustawienia i wybierz pozycję Utwórz , aby utworzyć prywatny punkt końcowy.

Podczas tworzenia prywatnego punktu końcowego połączenie musi zostać zatwierdzone. Jeśli zasób, dla którego tworzysz prywatny punkt końcowy, znajduje się w katalogu, możesz zatwierdzić żądanie połączenia, pod warunkiem, że masz wystarczające uprawnienia. Jeśli łączysz się z zasobem platformy Azure w innym katalogu, musisz poczekać, aż właściciel tego zasobu zatwierdzi żądanie połączenia.

Wyróżnia się cztery stany udostępniania:

Akcja w usłudze Stan prywatnego punktu końcowego odbiorcy usługi Opis
None Oczekiwanie Połączenie jest tworzone ręcznie i oczekuje na zatwierdzenie od właściciela zasobu private Link.
Zatwierdzanie Zatwierdzona Połączenie zostało automatycznie lub ręcznie zatwierdzone i jest gotowe do użycia.
Odrzuć Odrzucona Połączenie zostało odrzucone przez właściciela zasobu łącza prywatnego.
Usuń Odłączony Połączenie zostało usunięte przez właściciela zasobu Private Link; prywatny punkt końcowy ma już wyłącznie charakter informacyjny i należy go usunąć w ramach porządkowania.

Jak zarządzać połączeniem prywatnego punktu końcowego

W poniższych sekcjach pokazano, jak zatwierdzić lub odrzucić połączenie prywatnego punktu końcowego.

  1. Zaloguj się w witrynie Azure Portal.
  2. Na pasku wyszukiwania wprowadź tematy usługi Event Grid lub domeny usługi Event Grid.
  3. Wybierz temat lub domenę, którą chcesz zarządzać.
  4. Wybierz kartę Sieć.
  5. Jeśli istnieją oczekujące połączenia, zostanie wyświetlone połączenie z komunikatem Oczekujące w stanie aprowizacji.

Zatwierdzanie prywatnego punktu końcowego

Możesz zatwierdzić prywatny punkt końcowy, który znajduje się w stanie oczekiwania. Aby zatwierdzić, wykonaj następujące kroki:

Uwaga

Kroki przedstawione w tej sekcji dotyczą głównie tematów. Możesz użyć podobnych kroków, aby zatwierdzić prywatne punkty końcowe dla domen.

  1. Wybierz prywatny punkt końcowy , który chcesz zatwierdzić, a następnie wybierz pozycję Zatwierdź na pasku narzędzi.

    Zrzut ekranu przedstawiający połączenie prywatnego punktu końcowego w stanie Oczekiwanie na karcie Sieć.

  2. W oknie dialogowym Zatwierdzanie połączenia wprowadź komentarz (opcjonalnie) i wybierz pozycję Tak.

    Zrzut ekranu przedstawiający okno dialogowe Zatwierdzanie połączenia z polem komentarza i przyciskiem Tak.

  3. Upewnij się, że stan punktu końcowego jest wyświetlany jako Zatwierdzony.

    Zrzut ekranu przedstawiający połączenie prywatnego punktu końcowego ze stanem Zatwierdzone.

Odrzucić prywatny punkt końcowy

Możesz odrzucić prywatny punkt końcowy, który znajduje się w stanie oczekiwania lub zatwierdzonym. Aby odrzucić, wykonaj następujące kroki:

Uwaga

Kroki przedstawione w tej sekcji dotyczą tematów. Możesz użyć podobnych kroków, aby odrzucić prywatne punkty końcowe dla domen.

  1. Wybierz prywatny punkt końcowy , który chcesz odrzucić, a następnie wybierz pozycję Odrzuć na pasku narzędzi.

    Zrzut ekranu przedstawiający kartę Połączenia prywatnego punktu końcowego z zaznaczonym przyciskiem Odrzuć.

  2. W oknie dialogowym Odrzucanie połączenia wprowadź komentarz (opcjonalnie) i wybierz pozycję Tak.

    Zrzut ekranu przedstawiający okno dialogowe Odrzucanie połączenia z polem komentarza i przyciskiem Tak.

  3. Upewnij się, że stan punktu końcowego jest wyświetlany jako Odrzucone.

    Zrzut ekranu przedstawiający połączenie prywatnego punktu końcowego ze stanem Odrzucone.

    Uwaga

    Po odrzuceniu nie można zatwierdzić prywatnego punktu końcowego w portalu Azure.

Użyj Azure CLI

Wymagania wstępne

Zaktualizuj rozszerzenie usługi Azure Event Grid dla interfejsu wiersza polecenia, uruchamiając następujące polecenie:

az extension update -n eventgrid

Jeśli rozszerzenie nie jest zainstalowane, uruchom następujące polecenie, aby go zainstalować:

az extension add -n eventgrid

Tworzenie prywatnego punktu końcowego

Aby utworzyć prywatny punkt końcowy, użyj metody az network private-endpoint create , jak pokazano w poniższym przykładzie:

az network private-endpoint create \
    --resource-group <RESOURCE GROUP NAME> \
    --name <PRIVATE ENDPOINT NAME> \
    --vnet-name <VIRTUAL NETWORK NAME> \
    --subnet <SUBNET NAME> \
    --private-connection-resource-id "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventGrid/topics/<TOPIC NAME>" \
    --connection-name <PRIVATE LINK SERVICE CONNECTION NAME> \
    --location <LOCATION> \
    --group-ids topic

Opisy parametrów użytych w przykładzie można znaleźć w dokumentacji polecenia az network private-endpoint create. Oto kilka kwestii, które należy zauważyć w tym przykładzie:

  • W polu private-connection-resource-idokreśl identyfikator zasobu tematu lub domeny. W poprzednim przykładzie użyto typu: temat.
  • Dla group-ids określ topic lub domain. W poprzednim przykładzie topic jest używany.

Aby usunąć prywatny punkt końcowy, użyj metody az network private-endpoint delete , jak pokazano w poniższym przykładzie:

az network private-endpoint delete --resource-group <RESOURCE GROUP NAME> --name <PRIVATE ENDPOINT NAME>

Uwaga

Kroki przedstawione w tej sekcji dotyczą tematów. Możesz użyć podobnych kroków, aby utworzyć prywatne punkty końcowe dla domen.

Przykładowy skrypt

Oto przykładowy skrypt, który tworzy następujące zasoby platformy Azure:

  • Grupa zasobów
  • Sieć wirtualna
  • Podsieć w sieci wirtualnej
  • Temat usługi Azure Event Grid
  • Prywatny punkt końcowy dla tematu

Uwaga

Kroki przedstawione w tej sekcji dotyczą tematów. Możesz użyć podobnych kroków, aby utworzyć prywatne punkty końcowe dla domen.

subscriptionID="<AZURE SUBSCRIPTION ID>"
resourceGroupName="<RESOURCE GROUP NAME>"
location="<LOCATION>"
vNetName="<VIRTUAL NETWORK NAME>"
subNetName="<SUBNET NAME>"
topicName = "<TOPIC NAME>"
connectionName="<ENDPOINT CONNECTION NAME>"
endpointName=<ENDPOINT NAME>

# resource ID of the topic. replace <SUBSCRIPTION ID>, <RESOURCE GROUP NAME>, and <TOPIC NAME> 
# topicResourceID="/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventGrid/topics/<TOPIC NAME>"

# select subscription
az account set --subscription $subscriptionID

# create resource group
az group create --name $resourceGroupName --location $location

# create vnet 
az network vnet create \
    --resource-group $resourceGroupName \
    --name $vNetName \
    --address-prefix 10.0.0.0/16

# create subnet
az network vnet subnet create \
    --resource-group $resourceGroupName \
    --vnet-name $vNetName \
    --name $subNetName \
    --address-prefixes 10.0.0.0/24

# disable private endpoint network policies for the subnet
az network vnet subnet update \
    --resource-group $resourceGroupName \
    --vnet-name $vNetName \
    --name $subNetName \
    --disable-private-endpoint-network-policies true

# create event grid topic. update <LOCATION>
az eventgrid topic create \
    --resource-group $resourceGroupName \
    --name $topicName \
    --location $location

# verify that the topic was created.
az eventgrid topic show \
    --resource-group $resourceGroupName \
    --name $topicName

# create private endpoint for the topic you created
az network private-endpoint create \
    --resource-group $resourceGroupName \
    --name $endpointName \
    --vnet-name $vNetName \
    --subnet $subNetName \
    --private-connection-resource-id $topicResourceID \
    --connection-name $connectionName \
    --location $location \
    --group-ids topic

# get topic 
az eventgrid topic show \
    --resource-group $resourceGroupName \
    --name $topicName

Zatwierdź prywatny punkt końcowy

Poniższy przykładowy fragment kodu interfejsu wiersza polecenia pokazuje, jak zatwierdzić połączenie prywatnego punktu końcowego.

az eventgrid topic private-endpoint-connection approve \
    --resource-group $resourceGroupName \
    --topic-name $topicName \
    --name  $endpointName \
    --description "connection approved"

Odrzuć prywatny punkt końcowy

Poniższy przykładowy fragment kodu interfejsu wiersza polecenia pokazuje, jak odrzucić połączenie prywatnego punktu końcowego.

az eventgrid topic private-endpoint-connection reject \
    --resource-group $resourceGroupName \
    --topic-name $topicName \
    --name $endpointName \
    --description "Connection rejected"

Wyłączanie dostępu do sieci publicznej

Domyślnie dostęp do sieci publicznej jest włączony dla tematu lub domeny usługi Event Grid. Aby zezwolić na dostęp tylko za pośrednictwem prywatnych punktów końcowych, wyłącz dostęp do sieci publicznej, uruchamiając następujące polecenie:

az eventgrid topic update \
    --resource-group $resourceGroupName \
    --name $topicName \
    --public-network-access disabled

Użyj PowerShell

W tej sekcji pokazano, jak utworzyć prywatny punkt końcowy dla tematu lub domeny przy użyciu programu PowerShell. Oto przykładowy skrypt z komentarzami.


# name of an Azure resource group to be created
$resourceGroupName = "contosorg"

# location where you want the resources to be created
$location ="eastus"

# name of the VNet to be created
$vnetName = "contosovnet"

# name of the subnet to be created in the VNet
$subnetName = "example-privatelinksubnet"

# name of the Event Grid topic to be created
$egridTopicName = "contosotopic"

# name of the private link service connection to be created
$privateLinkServiceConnectionName = "spegridplsconn"

# name of the private endpoint connection to be created
$privateEndpointConnectionName = "spegridpe11"

#

# create resource group
New-AzResourceGroup -Name $resourceGroupName -Location $location

# create virtual network
$virtualNetwork = New-AzVirtualNetwork `
                    -ResourceGroupName $resourceGroupName `
                    -Location $location `
                    -Name $vnetName  `
                    -AddressPrefix 10.0.0.0/16

# create subnet with endpoint network policy disabled
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
                    -Name $subnetName `
                    -AddressPrefix 10.0.0.0/24 `
                    -PrivateEndpointNetworkPoliciesFlag "Disabled" `
                    -VirtualNetwork $virtualNetwork

# update virtual network
$virtualNetwork | Set-AzVirtualNetwork

# get virtual network (optional)
$virtualNetwork = Get-AzVirtualNetwork `
                    -ResourceGroupName $resourceGroupName `
                    -Name $vnetName 

# create an Event Grid topic with public network access disabled. 
$topic = New-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $egridTopicName -Location $location -PublicNetworkAccess disabled

# create a private link service connection to the Event Grid topic. 
# For topics, set GroupId to 'topic'. For domains, it's 'domain'
$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
                                -Name "privateLinkServiceConnectionName" `
                                -PrivateLinkServiceId $topic.id `
                                -GroupId "topic"

# get subnet info
$subnet = $virtualNetwork | Select -ExpandProperty subnets `
                             | Where-Object  {$_.Name -eq $subnetName }  

# now, you are ready to create a private endpoint 
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $resourceGroupName  `
                                        -Name privateEndpointConnectionName   `
                                        -Location $location `
                                        -Subnet  $subnet   `
                                        -PrivateLinkServiceConnection $privateEndpointConnection

# verify that the endpoint is created
Get-AzPrivateEndpoint -ResourceGroupName $resourceGroupName  -Name privateEndpointConnectionName  

Zatwierdź połączenie prywatnego punktu końcowego

Poniższy przykładowy fragment kodu programu PowerShell przedstawia sposób zatwierdzania prywatnego punktu końcowego.

Uwaga

Kroki przedstawione w tej sekcji dotyczą tematów. Możesz użyć podobnych kroków, aby zatwierdzić prywatne punkty końcowe dla domen.


# list all private endpoints for the topic
$topic = Get-AzEventGridTopic -ResourceGroup <RESOURCE GROUP NAME> - Name <TOPIC NAME>
$endpointList = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $topic.Id

# filter the private endpoints using a name
 $pseEndpoint = $endpointList | Where-Object {     $_.Name.StartsWith('<MYENDPOINTNAME>') }

# approve the endpoint connection
Approve-AzPrivateEndpointConnection -ResourceId $pseEndpoint.Id

# get the endpoint connection to verify that it's approved
Get-AzPrivateEndpointConnection -ResourceId $pseEndpoint.Id

Odrzuć połączenie prywatnego punktu końcowego

W poniższym przykładzie pokazano, jak odrzucić prywatny punkt końcowy przy użyciu programu PowerShell. Identyfikator GUID prywatnego punktu końcowego można pobrać z wyniku poprzedniego polecenia GET.

Uwaga

Kroki przedstawione w tej sekcji dotyczą tematów. Możesz użyć podobnych kroków, aby odrzucić prywatne punkty końcowe dla domen.

# list all private endpoints for the topic
$topic = Get-AzEventGridTopic -ResourceGroup <RESOURCE GROUP NAME> - Name <TOPIC NAME>
$endpointList = Get-AzPrivateEndpointConnection -PrivateLinkResourceId $topic.Id


# filter the private endpoints using a name
 $pseEndpoint = $endpointList | Where-Object {     $_.Name.StartsWith('<MYENDPOINT>') }

# deny or reject the private endpoint connection
Deny-AzPrivateEndpointConnection -ResourceId $pseEndpoint.Id

# get the endpoint connection to verify that it's rejected
Get-AzPrivateEndpointConnection -ResourceId $pseEndpoint.Id

Połączenie można zatwierdzić nawet po jego odrzuceniu za pośrednictwem interfejsu API. Jeśli używasz portalu Azure, nie możesz zatwierdzić punktu końcowego, który został odrzucony.