Configurar pontos de extremidade privados para tópicos personalizados ou domínios do Grade de Eventos do Azure

É possível usar pontos de extremidade privados para permitir o ingresso de eventos diretamente da sua rede virtual para seus tópicos personalizados e domínios com segurança por meio de um link privado, sem passar pela Internet pública. O ponto de extremidade privado usa um endereço IP do espaço de endereço da rede virtual para o domínio ou tópico personalizado. Para obter mais informações conceituais, consulte Segurança de rede.

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

Observação

Atualmente, não há suporte para pontos de extremidade privados em tópicos do sistema.

Usar o portal do Azure

Esta seção mostra como usar o portal do Azure para criar um ponto de extremidade privado para um tópico ou domínio.

Observação

As etapas mostradas nesta seção são principalmente para tópicos personalizados. É possível usar etapas semelhantes para criar pontos de extremidade privados para domínios.

Para um novo tópico

Esta seção mostra como habilitar o acesso à rede privada para um tópico da Grade de Eventos 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 , preencha os campos necessários e selecione Avançar: Rede.

    Imagem mostrando a seleção do link de Rede na parte inferior da página.

  2. Para permitir o acesso ao tópico da Grade de Eventos por meio de um ponto de extremidade privado, selecione a opção Acesso privado.

    Imagem que mostra a seleção da opção Acesso privado na página de Rede do assistente de criação de tópico.

  3. Na seção Conexões de pontos de extremidade privados, selecione o botão + Ponto de extremidade privado.

    Captura de tela mostrando o botão Private endpoint na página Criar tópico.

  4. Na página Criar ponto de extremidade privado, siga essas etapas:

    1. Em Nome, insira um nome para o ponto de extremidade privado.
    2. Selecione uma rede virtual. São listadas somente as redes virtuais na assinatura e na localização selecionadas no momento na lista suspensa.
    3. Selecione uma sub-rede na rede virtual que você selecionou.
    4. Selecione se deseja que o ponto de extremidade privado seja integrado a uma zona DNS privada.
    5. Selecione OK.

    Captura de tela mostrando a página Criar ponto de extremidade privado.

  5. Agora, na página Criar tópico, selecione Examinar + criar na parte inferior da página.

  6. Na página Examinar + criar escolha Criar.

Para um tópico existente

  1. Entre no portal do Azure e navegue até o tópico ou domínio.

  2. Mude para a aba Rede da página do seu tópico. Na guia Acesso Público , selecione somente pontos de extremidade privados.

    Captura de tela que mostra a página de acesso à rede pública com a opção Somente pontos de extremidade privados selecionada.

  3. Alterne para a guia Conexões de ponto de extremidade privado e, em seguida, selecione + Ponto de extremidade privado na barra de ferramentas.

    Captura de tela mostrando a seleção do link + Ponto de extremidade privado na guia Conexão de ponto de extremidade privado.

  4. Na página Básico, siga estas etapas:

    1. Selecione a Assinatura do Azure na qual deseja criar o ponto de extremidade privado.

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

    3. Insira um nome para o ponto de extremidade.

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

    5. Selecione a Região para o ponto de extremidade. Seu ponto de extremidade privado deve estar na mesma região que sua rede virtual, mas pode estar em uma região diferente do recurso de link privado (neste exemplo, um tópico da Grade de Eventos).

    6. Selecione Avançar: Recurso >.

      Captura de tela mostrando a página Noções básicas do assistente Criar um ponto de extremidade privado.

  5. Na página Recurso, confirme se o tópico está selecionado para o sub-recurso de destino e selecione Avançar: Rede Virtual >.

    Captura de tela mostrando a página Recursos do assistente Criar um ponto de extremidade privado.

  6. Na página Rede Virtual, selecione a sub-rede em um virtual network em que você deseja implantar o ponto de extremidade privado.

    1. Selecione uma rede virtual. São listadas somente as redes virtuais na assinatura e na localização selecionadas no momento na lista suspensa.

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

    3. Especifique se você deseja que o endereço IP seja alocado de forma estática ou dinâmica.

    4. Selecione um grupo de segurança de aplicativos existente ou crie um e associe-o ao ponto de extremidade privado.

    5. Selecione Avançar: DNS >.

      Captura de tela mostrando a página Rede Virtual do assistente Criar um ponto de extremidade privado.

  7. Na página DNS , selecione se deseja que o ponto de extremidade privado seja integrado a uma zona DNS privada e selecione Avançar: Marcas.

    Captura de tela mostrando a página DNS do assistente Criar um ponto de extremidade privado.

  8. Na página Marcas, crie quaisquer marcas (nomes e valores) que você deseja associar ao recurso de ponto de extremidade privado. Em seguida, selecione Examinar + criar.

  9. Em Revisar + criar, examine todas as configurações e selecione Criar para criar o ponto de extremidade privado.

Quando você cria um ponto de extremidade privado, a conexão deve ser aprovada. Se o recurso para o qual você está criando um ponto de extremidade privado estiver em seu diretório, você pode aprovar a solicitação de conexão desde que tenha permissões suficientes. Se estiver se conectando a um recurso do Azure em outro diretório, você deve aguardar o proprietário desse recurso aprovar a sua solicitação de conexão.

Há quatro estados de provisionamento:

Ação de serviço Estado de ponto de extremidade privado do consumidor do serviço Descrição
Nenhum Pendente A conexão é criada manualmente e está pendente de aprovação pelo proprietário do recurso do Link privado.
Aprovar Aprovado A conexão foi aprovada automaticamente ou manualmente e está pronta para ser usada.
Rejeitar Rejeitado A conexão foi rejeitada pelo proprietário do recurso do link privado.
Remover Desconectado A conexão foi removida pelo proprietário do recurso do link privado, o ponto de extremidade privado se torna informativo e deve ser excluído para limpeza.

Como gerenciar uma conexão de endpoint privado

As seções a seguir mostram como aprovar ou rejeitar uma conexão de ponto de extremidade privado.

  1. Entre no portal do Azure.
  2. Na barra de pesquisa, insira tópicos da Grade de Eventos ou domínios da Grade de Eventos.
  3. Selecione o tópico ou domínio que deseja gerenciar.
  4. Selecione a guia Rede.
  5. Se houver conexões pendentes, será exibida uma lista de conexões com estado de provisionamento Pendente.

Para aprovar um ponto de extremidade privado

É possível aprovar um ponto de extremidade privado no estado pendente. Para aprovar, siga estas etapas:

Observação

As etapas mostradas nesta seção são principalmente para tópicos. Você pode usar etapas semelhantes para aprovar endpoints privados para domínios.

  1. Selecione o ponto de extremidade privado que você deseja aprovar e selecione Aprovar na barra de ferramentas.

    Captura de tela mostrando uma conexão de ponto de extremidade privado no estado Pendente na guia Rede.

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

    Captura de tela mostrando a caixa de diálogo Aprovar conexão com um campo de comentário e o botão Sim.

  3. Confirme se o status do endpoint aparece como Aprovado.

    Captura de tela mostrando a conexão de endpoint privado com status Aprovado.

Para rejeitar um ponto de extremidade privado

É possível rejeitar um ponto de extremidade privado que esteja nos estados pendente ou aprovado. Para rejeitar, siga estas etapas:

Observação

As etapas mostradas nesta seção são para tópicos. Você pode usar etapas semelhantes para rejeitar endpoints privados de domínios.

  1. Selecione o ponto de extremidade privado que você deseja rejeitar e selecione Rejeitar na barra de ferramentas.

    Captura de tela mostrando a guia Conexões de endpoint privado com o botão Rejeitar selecionado.

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

    Captura de tela mostrando a caixa de diálogo Rejeitar conexão com um campo de comentário e o botão Sim.

  3. Confirme se o status do endpoint aparece como Rejeitado.

    Captura de tela mostrando a conexão de ponto de extremidade privado com o status Rejeitado.

    Observação

    Não é possível aprovar um ponto de extremidade privado no portal do Azure depois que ele for rejeitado.

Usar a CLI do Azure

Pré-requisitos

Atualizar a extensão da Grade de Eventos do Azure para a CLI, executando o seguinte comando:

az extension update -n eventgrid

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

az extension add -n eventgrid

Criar um endpoint privado

Para criar um ponto de extremidade privado, use o método az network private-endpoint create, conforme mostrado no exemplo a seguir:

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 usados no exemplo, consulte a documentação para az network private-endpoint create. Alguns pontos a serem observados neste exemplo são:

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

Para excluir um ponto de extremidade privado, use o método az network private-endpoint delete, conforme mostrado no exemplo a seguir:

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

Observação

As etapas mostradas nesta seção são para tópicos. É possível usar etapas semelhantes para criar pontos de extremidade privados para domínios.

Exemplo de script

Aqui está um script de exemplo que cria os seguintes recursos do Azure:

  • Grupo de recursos
  • Rede virtual
  • Sub-rede na rede virtual
  • Tópico do Grade de Eventos do Azure
  • Ponto de extremidade privado para o tópico

Observação

As etapas mostradas nesta seção são para tópicos. É possível usar etapas semelhantes para criar pontos de extremidade 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 endpoint privado

O exemplo de trecho de CLI a seguir mostra como aprovar uma conexão de endpoint privado.

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

Rejeitar um endpoint privado

O trecho de código de exemplo da CLI a seguir mostra como rejeitar uma conexão de endpoint privado.

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

Desabilitar o acesso de redes públicas

Por padrão, o acesso à rede pública é habilitado para um tópico ou domínio da Grade de Eventos. Para permitir o acesso somente por meio de pontos de extremidade privados, desabilite o acesso à rede pública executando o seguinte comando:

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

Usar o PowerShell

Esta seção mostra como criar um ponto de extremidade privado para um tópico ou domínio usando o PowerShell. Veja aqui 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  

Aprovação de uma conexão de ponto de extremidade privado

O snippet de código de exemplo do PowerShell a seguir mostra como aprovar uma conexão de ponto de extremidade privado.

Observação

As etapas mostradas nesta seção são para tópicos. Você pode usar etapas semelhantes para aprovar endpoints 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

Rejeição de uma conexão de ponto de extremidade privado

O exemplo a seguir mostra como rejeitar um ponto de extremidade privado usando o PowerShell. É possível obter o GUID do endpoint privado a partir do resultado do comando GET anterior.

Observação

As etapas mostradas nesta seção são para tópicos. Você pode seguir etapas semelhantes para rejeitar endpoints privados de 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

É possível aprovar a conexão mesmo depois que ela for rejeitada via API. Se usar portal do Azure, não poderá aprovar um ponto de extremidade que foi rejeitado.