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.
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.
Para permitir o acesso ao tópico do Event Grid através de um ponto final privado, selecione a opção Acesso privado .
Veja a secção seguinte para obter os passos para adicionar um ponto final privado.
Para um tópico existente
Inicie sessão no portal do Azure e navegue para o seu tópico ou domínio.
Mude para o separador Rede da página do tópico. No separador Acesso público , selecione Apenas pontos finais privados.
Mude para o separador Ligações de ponto final privado e, em seguida, selecione + Ponto final privado na barra de ferramentas.
Na página Noções básicas , siga estes passos:
Selecione uma subscrição do Azure na qual pretende criar o ponto final privado.
Selecione um grupo de recursos do Azure para o ponto final privado.
Introduza um nome para o ponto final.
Atualize o nome da interface de rede , se necessário.
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).
Em seguida, selecione Seguinte: botão Recurso > na parte inferior da página.
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.
Na página Rede Virtual, selecione a sub-rede numa rede virtual para onde pretende implementar o ponto final privado.
Selecione uma rede virtual. Apenas as redes virtuais na subscrição e localização atualmente selecionadas estão listadas na lista pendente.
Selecione uma sub-rede na rede virtual que selecionou.
Especifique se pretende que o endereço IP seja alocado estaticamente ou dinamicamente.
Selecione um grupo de segurança de aplicações existente ou crie um e, em seguida, associe ao ponto final privado.
Selecione Seguinte: botão DNS > na parte inferior da página.
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.
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.
Na opção Rever + criar, reveja todas as definições e selecione Criar para criar o ponto final privado.
Gerir ligação de ligação privada
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.
- Inicie sessão no Portal do Azure.
- Na barra de pesquisa, escreva tópicos do Event Grid ou domínios do Event Grid.
- Selecione o tópico ou domínio que pretende gerir.
- Selecione o separador Rede.
- 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.
Selecione o ponto final privado que pretende aprovar e selecione Aprovar na barra de ferramentas.
Na caixa de diálogo Aprovar ligação , introduza um comentário (opcional) e selecione Sim.
Confirme que vê o estado do ponto final como 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.
Selecione o ponto final privado que pretende rejeitar e selecione Rejeitar na barra de ferramentas.
Na caixa de diálogo Rejeitar ligação , introduza um comentário (opcional) e selecione Sim.
Confirme que vê o estado do ponto final como 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 <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
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
, especifiquetopic
oudomain
. 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 <RESOURCE 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 <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
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
, especifiquetopic
oudomain
. 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 <RESOURCE 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
- Para saber como configurar as definições da firewall de IP, veja Configurar a firewall de IP para Azure Event Grid tópicos ou domínios.
- Para resolver problemas de conectividade de rede, veja Resolver problemas de conectividade de rede