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

Pode utilizar pontos finais privados para permitir a ingestão de eventos diretamente da sua rede virtual para os seus tópicos e domínios personalizados, com segurança, 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 rede virtual para o seu tópico ou domínio personalizado. Para obter mais informações conceituais, consulte Segurança de rede.

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

Nota

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

Utilizar 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.

Nota

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

Para um novo tema

Esta seção mostra como habilitar o acesso à rede privada para um tópico de 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 Basics do assistente Criar tópico , preencha os campos necessários e depois selecione Próximo: Networking.

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

  2. Para permitir o acesso ao tópico 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ópicos.

  3. Na seção Private endpoint connections, selecione + Private endpoint button.

    Captura de ecrã que mostra o botão Ponto final privado na página Criar tópico.

  4. Na página Criar ponto de extremidade privado, siga estes passos:

    1. Em Nome, insira um nome para o ponto de extremidade privado.
    2. Selecione uma rede virtual. Apenas as redes virtuais na subscrição e localização atualmente selecionadas estão listadas na lista pendente.
    3. Selecione uma sub-rede na rede virtual selecionada.
    4. Selecione se deseja que o ponto de extremidade privado seja integrado a uma zona DNS privada.
    5. Selecione OK.

    Captura de ecrã a mostrar a página Criar ponto final privado.

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

  6. Na página Rever + criar, selecione Criar.

Para um tópico existente

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

  2. Mude para o separador Rede da sua página de 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 a opção Apenas pontos finais privados selecionada.

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

    Captura de ecrã que mostra a seleção de + Ligação de ponto final privado no separador Ligação de ponto final privado.

  4. Na página Noções básicas, siga estas etapas:

    1. Selecione uma assinatura do Azure na qual você deseja criar o ponto de extremidade privado.

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

    3. Introduza um nome para o endpoint.

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

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

    6. Selecionar Próximo: Recurso >.

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

  5. Na página de Recursos, confirme que o tema foi selecionado para o sub-recurso Alvo e depois selecione Próximo: Rede Virtual >.

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

  6. Na página da Rede Virtual, selecione a sub-rede numa virtual network onde pretende implementar o endpoint 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 selecionada.

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

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

    5. Selecionar Próximo: DNS >.

      Captura de ecrã que mostra a página Rede Virtual do assistente para criar um ponto final privado.

  7. Na página DNS , selecione se quer que o endpoint privado seja integrado com uma zona DNS privada e depois selecione Próximo: Tags.

    Captura de ecrã que mostra a página DNS do assistente Criar um endpoint privado.

  8. Na página Etiquetas, crie quaisquer etiquetas (nomes e valores) que pretenda associar ao recurso de ponto de extremidade privado. Em seguida, selecione Analisar + criar.

  9. No separador Rever e criar, reveja todas as definições e selecione Criar para criar o ponto final 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ê poderá aprovar a solicitação de conexão desde que tenha permissões suficientes. Se você estiver se conectando a um recurso do Azure em outro diretório, deverá aguardar que o proprietário desse recurso aprove sua solicitação de conexão.

Há quatro estados de provisionamento:

Ação de serviço Estado do ponto final privado do consumidor de serviço Descrição
None Pendente A conexão é criada manualmente e está pendente de aprovação do proprietário do recurso Link privado.
Aprovar Aprovado A conexão foi aprovada automática ou manualmente e está pronta para ser usada.
Rejeitar Rejeitado A conexão foi rejeitada pelo proprietário do recurso de link privado.
Remover Desconectado A ligação foi removida pelo proprietário do recurso de ligação privada; o ponto final privado passa a ser apenas informativo e deve ser eliminado para efeitos de limpeza.

Como gerir uma ligação de ponto final privado

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

  1. Inicie sessão no portal do Azure.
  2. Na barra de pesquisa, insira tópicos da Grelha de Eventos ou domínios da Grelha de Eventos.
  3. Selecione o tópico ou domínioque deseja gerenciar.
  4. Selecione o separador Ligação em rede.
  5. Se houver conexões pendentes, você verá uma conexão listada com Pendente no estado de provisionamento.

Para aprovar um ponto de extremidade privado

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

Nota

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

  1. Selecione o endpoint privado que quer aprovar e selecione Aprovar na barra de ferramentas.

    Captura de ecrã que mostra uma ligação privada ao endpoint em estado Pendente no separador de Rede.

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

    Captura de ecrã que mostra a caixa de diálogo Aprovar ligação com um campo de comentário e o botão Sim.

  3. Confirme que o estado do endpoint aparece como Aprovado.

    Captura de ecrã que mostra a ligação ao endpoint privado com o estado Aprovado.

Para rejeitar um ponto de extremidade privado

Você pode rejeitar um ponto de extremidade privado que esteja no estado pendente ou no estado aprovado. Para rejeitar, siga estes passos:

Nota

As etapas mostradas nesta seção são para tópicos. Pode utilizar passos semelhantes para rejeitar pontos finais privados para domínios.

  1. Seleciona o endpoint privado que queres rejeitar e seleciona Rejeitar na barra de ferramentas.

    Captura de ecrã a mostrar o separador de ligaçõ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 ecrã que mostra a caixa de diálogo Rejeitar ligação com um campo de comentário e o botão Sim.

  3. Confirme que o estado do endpoint aparece como Rejeitado.

    Captura de ecrã que mostra a ligação ao endpoint privado com o estado Rejeitado.

    Nota

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

Utilizar a CLI do Azure

Pré-requisitos

Atualize a extensão da Grade de Eventos do Azure para CLI executando 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, como 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 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 do recurso do tópico ou domínio. O exemplo anterior usa o type: topic.
  • Para group-ids, especifica topic ou domain. No exemplo anterior, topic é usado.

Para eliminar uma extremidade privada, 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

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

Script de exemplo

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

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

Nota

As etapas mostradas nesta seção são para tópicos. Você pode 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 ponto final privado

O exemplo de código da CLI seguinte mostra-lhe como aprovar uma ligação de extremidade privada.

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

Rejeitar um ponto de extremidade privado

O trecho de exemplo de CLI a seguir mostra como rejeitar uma conexão de ponto de extremidade privada.

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 padrão, o acesso à rede pública está habilitado para um tópico ou domínio da Grade de Eventos. Para permitir o acesso apenas através de pontos de extremidade privados, desative o acesso à rede pública executando o seguinte comando:

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

Utilizar o PowerShell

Esta seção mostra como criar um ponto de extremidade privado para um tópico ou domínio usando o PowerShell. Aqui está um exemplo de script 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 conexão de ponto de extremidade privada

O exemplo de código PowerShell seguinte mostra-lhe como aprovar um ponto final privado.

Nota

As etapas mostradas nesta seção são para tópicos. Você pode usar etapas semelhantes para aprovar pontos de extremidade 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 endpoint privado com o PowerShell. Pode obter o GUID para o ponto final privado no resultado do comando GET anterior.

Nota

As etapas mostradas nesta seção são para 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

Você pode aprovar a conexão mesmo depois que ela for rejeitada via API. Se usares o portal do Azure, não podes aprovar um endpoint que foi rejeitado.