Configurar pontos finais privados para Azure Event Grid tópicos ou domínios personalizados

Pode utilizar pontos finais privados para permitir a entrada de eventos diretamente da sua rede virtual para os seus tópicos e domínios personalizados de forma segura através de uma ligação privada sem passar pela Internet pública. O ponto final privado utiliza um endereço IP do espaço de endereços da VNet para o seu tópico ou domínio personalizado. Para obter mais informações conceptuais, veja Segurança de rede.

Este artigo descreve como configurar pontos finais privados para domínios ou tópicos personalizados.

Nota

Atualmente, os pontos finais privados não são suportados para tópicos de sistema.

Utilizar o portal do Azure

Esta secção mostra-lhe como utilizar o portal do Azure para criar um ponto final privado para um tópico ou domínio.

Nota

Os passos apresentados nesta secção destinam-se principalmente a tópicos personalizados. Pode utilizar passos semelhantes para criar pontos finais privados para domínios.

Ao criar um novo tópico

Esta secção mostra-lhe como ativar o acesso à rede privada para um tópico do Event Grid ou um domínio. Para obter instruções passo a passo para criar um novo tópico, consulte Criar um tópico personalizado.

  1. Na página Noções básicas do assistente Criar tópico , selecione Seguinte: Rede na parte inferior da página depois de preencher os campos necessários.

    Imagem a mostrar a seleção da ligação Rede na parte inferior da página.

  2. Para permitir o acesso ao tópico do Event Grid através de um ponto final privado, selecione a opção Acesso privado .

    Imagem a mostrar a seleção da opção Acesso privado na página Rede do assistente Criar tópico.

  3. Veja a secção seguinte para obter os passos para adicionar um ponto final privado.

Para um tópico existente

  1. Inicie sessão no portal do Azure e navegue para o seu tópico ou domínio.

  2. Mude para o separador Rede da página do tópico. No separador Acesso público , selecione Apenas pontos finais privados.

    Captura de ecrã que mostra a página Acesso à rede pública com apenas a opção Pontos finais privados selecionada.

  3. Mude para o separador Ligações de ponto final privado e, em seguida, selecione + Ponto final privado na barra de ferramentas.

    Captura de ecrã a mostrar a seleção da ligação + Ponto final privado no separador Ligação de ponto final privado.

  4. Na página Noções básicas , siga estes passos:

    1. Selecione uma subscrição do Azure na qual pretende criar o ponto final privado.

    2. Selecione um grupo de recursos do Azure para o ponto final privado.

    3. Introduza um nome para o ponto final.

    4. Atualize o nome da interface de rede , se necessário.

    5. Selecione a região para o ponto final. O ponto final privado tem de estar na mesma região que a sua rede virtual, mas pode, numa região diferente do recurso de ligação privada (neste exemplo, um tópico do Event Grid).

    6. Em seguida, selecione Seguinte: botão Recurso > na parte inferior da página.

      Captura de ecrã a mostrar a página Noções básicas do assistente Criar um ponto final privado.

  5. Na página Recurso, siga estes passos, confirme que o tópico está selecionado para Sub-recurso de destino e, em seguida, selecione Seguinte: Rede Virtual > botão na parte inferior da página.

    Captura de ecrã a mostrar a página Recurso do assistente Criar um ponto final privado.

  6. Na página Rede Virtual, selecione a sub-rede numa rede virtual para onde pretende implementar o ponto final privado.

    1. Selecione uma rede virtual. Apenas as redes virtuais na subscrição e localização atualmente selecionadas estão listadas na lista pendente.

    2. Selecione uma sub-rede na rede virtual que selecionou.

    3. Especifique se pretende que o endereço IP seja alocado estaticamente ou dinamicamente.

    4. Selecione um grupo de segurança de aplicações existente ou crie um e, em seguida, associe ao ponto final privado.

    5. Selecione Seguinte: botão DNS > na parte inferior da página.

      Captura de ecrã a mostrar a página Rede do assistente Criar um ponto final privado.

  7. Na página DNS , selecione se pretende que o ponto final privado seja integrado numa zona DNS privada e, em seguida, selecione Seguinte: Etiquetas na parte inferior da página.

    Captura de ecrã a mostrar a página DNS do assistente Criar um ponto final privado.

  8. Na página Etiquetas , crie quaisquer etiquetas (nomes e valores) que pretenda associar ao recurso de ponto final privado. Em seguida, selecione Rever + criar botão na parte inferior da página.

  9. Na opção Rever + criar, reveja todas as definições e selecione Criar para criar o ponto final privado.

Quando cria um ponto final privado, a ligação tem de ser aprovada. Se o recurso para o qual está a criar um ponto final privado estiver no seu diretório, pode aprovar o pedido de ligação desde que tenha permissões suficientes. Se estiver a ligar a um recurso do Azure noutro diretório, tem de aguardar que o proprietário desse recurso aprove o seu pedido de ligação.

Existem quatro estados de aprovisionamento:

Ação do serviço Estado do ponto final privado do consumidor do serviço Descrição
Nenhum Pendente A ligação é criada manualmente e está pendente da aprovação do proprietário do recurso private Link.
Aprovar Aprovado A ligação foi aprovada automaticamente ou manualmente e está pronta para ser utilizada.
Rejeitar Rejeitado A ligação foi rejeitada pelo proprietário do recurso de ligação privada.
Remover Desligado A ligação foi removida pelo proprietário do recurso de ligação privada, o ponto final privado torna-se informativo e deve ser eliminado para limpeza.

Como gerir uma ligação de ponto final privado

As secções seguintes mostram-lhe como aprovar ou rejeitar uma ligação de ponto final privado.

  1. Inicie sessão no Portal do Azure.
  2. Na barra de pesquisa, escreva tópicos do Event Grid ou domínios do Event Grid.
  3. Selecione o tópico ou domínio que pretende gerir.
  4. Selecione o separador Rede.
  5. Se existirem ligações pendentes, verá uma ligação listada com Pendente no estado de aprovisionamento.

Para aprovar um ponto final privado

Pode aprovar um ponto final privado que esteja no estado pendente. Para aprovar, siga estes passos:

Nota

Os passos apresentados nesta secção destinam-se principalmente a tópicos. Pode utilizar passos semelhantes para aprovar pontos finais privados para domínios.

  1. Selecione o ponto final privado que pretende aprovar e selecione Aprovar na barra de ferramentas.

    Ponto final privado - estado pendente

  2. Na caixa de diálogo Aprovar ligação , introduza um comentário (opcional) e selecione Sim.

    Ponto final privado - aprovar

  3. Confirme que vê o estado do ponto final como Aprovado.

    Ponto final privado - estado aprovado

Para rejeitar um ponto final privado

Pode rejeitar um ponto final privado que esteja no estado pendente ou no estado aprovado. Para rejeitar, siga estes passos:

Nota

Os passos apresentados nesta secção destinam-se a tópicos. Pode utilizar passos semelhantes para rejeitar pontos finais privados para domínios.

  1. Selecione o ponto final privado que pretende rejeitar e selecione Rejeitar na barra de ferramentas.

    Captura de ecrã que mostra as

  2. Na caixa de diálogo Rejeitar ligação , introduza um comentário (opcional) e selecione Sim.

    Ponto final privado - rejeitar

  3. Confirme que vê o estado do ponto final como Rejeitado.

    Ponto final privado - estado rejeitado

    Nota

    Não pode aprovar um ponto final privado no portal do Azure uma vez rejeitado.

Utilizar a CLI do Azure

Para criar um ponto final privado, utilize o método az network private-endpoint create , conforme mostrado no exemplo seguinte:

az network private-endpoint create \
    --resource-group <RESOURECE 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

Para obter descrições dos parâmetros utilizados no exemplo, veja documentação para az network private-endpoint create. Alguns pontos a ter em conta neste exemplo são:

  • Para private-connection-resource-id, especifique o ID de recurso do tópico ou domínio. O exemplo anterior utiliza o tipo: tópico.
  • para group-ids, especifique topic ou domain. No exemplo anterior, topic é utilizado.

Para eliminar um ponto final privado, utilize o método az network private-endpoint delete , conforme mostrado no exemplo seguinte:

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

Nota

Os passos apresentados nesta secção destinam-se a tópicos. Pode utilizar passos semelhantes para criar pontos finais privados para domínios.

Pré-requisitos

Atualize a extensão Azure Event Grid da CLI ao executar o seguinte comando:

az extension update -n eventgrid

Se a extensão não estiver instalada, execute o seguinte comando para instalá-la:

az extension add -n eventgrid

Criar um ponto final privado

Para criar um ponto final privado, utilize o método az network private-endpoint create , conforme mostrado no exemplo seguinte:

az network private-endpoint create \
    --resource-group <RESOURECE 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

Para obter descrições dos parâmetros utilizados no exemplo, veja documentação para az network private-endpoint create. Alguns pontos a ter em conta neste exemplo são:

  • Para private-connection-resource-id, especifique o ID de recurso do tópico ou domínio. O exemplo anterior utiliza o tipo: tópico.
  • para group-ids, especifique topic ou domain. No exemplo anterior, topic é utilizado.

Para eliminar um ponto final privado, utilize o método az network private-endpoint delete , conforme mostrado no exemplo seguinte:

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

Nota

Os passos apresentados nesta secção destinam-se a tópicos. Pode utilizar passos semelhantes para criar pontos finais privados para domínios.

Script de exemplo

Eis um script de exemplo que cria os seguintes recursos do Azure:

  • Grupo de recursos
  • Rede virtual
  • Sub-rede na rede virtual
  • tópico Azure Event Grid
  • Ponto final privado para o tópico

Nota

Os passos apresentados nesta secção destinam-se a tópicos. Pode utilizar passos semelhantes para criar pontos finais privados para domínios.

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

Aprovar um ponto final privado

O fragmento da CLI de exemplo seguinte mostra-lhe como aprovar uma ligação de ponto final privado.

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

Rejeitar um ponto final privado

O fragmento da CLI de exemplo seguinte mostra-lhe como rejeitar uma ligação de ponto final privado.

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

Desativar o acesso à rede pública

Por predefinição, o acesso à rede pública está ativado para um tópico ou domínio do Event Grid. Para permitir o acesso apenas através de pontos finais privados, desative o acesso à rede pública ao executar o seguinte comando:

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

Utilizar o PowerShell

Esta secção mostra-lhe como criar um ponto final privado para um tópico ou domínio com o PowerShell. Eis um script de exemplo com comentários.


# 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  

Aprovar uma ligação de ponto final privado

O fragmento de exemplo seguinte do PowerShell mostra-lhe como aprovar um ponto final privado.

Nota

Os passos apresentados nesta secção destinam-se a tópicos. Pode utilizar passos semelhantes para aprovar pontos finais privados para domínios.


# 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

Rejeitar uma ligação de ponto final privado

O exemplo seguinte mostra como rejeitar um ponto final privado com o PowerShell. Pode obter o GUID para o ponto final privado a partir do resultado do comando GET anterior.

Nota

Os passos apresentados nesta secção destinam-se a tópicos. Pode utilizar passos semelhantes para rejeitar pontos finais privados para domínios.

# 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

Pode aprovar a ligação mesmo depois de ser rejeitada através da API. Se utilizar portal do Azure, não poderá aprovar um ponto final que tenha sido rejeitado.

Passos seguintes