Configuración de puntos de conexión privados para temas o dominios de Azure Event Grid

Puede usar puntos de conexión privados para permitir la entrada de eventos directamente desde su red virtual a sus temas y dominios de forma segura a través de un vínculo privado sin tener que ir a la red pública de Internet. El punto de conexión privado usa una dirección IP del espacio de direcciones de la red virtual para el tema o dominio. Para más información conceptual, consulte Seguridad de las redes.

En este artículo se describe cómo configurar los puntos de conexión privados para los temas o dominios.

Usar Azure Portal

En esta sección se muestra cómo usar Azure Portal para crear un punto de conexión privado para un tema o dominio.

Nota

Los pasos que se muestran en esta sección son principalmente para los temas. Puede usar pasos similares para crear puntos de conexión privados para dominios.

Al crear un nuevo tema

En esta sección se muestra cómo habilitar el acceso a la red privada para un tema Event Grid o un dominio. Para obtener instrucciones paso a paso para crear un nuevo tema, consulte Creación de un tema personalizado.

  1. En la página Aspectos básicos del asistente para Crear tema, seleccione Siguiente: Redes en la parte inferior de la página después de rellenar los campos necesarios.

    Image showing the selection of Networking link at the bottom of the page.

  2. Para permitir el acceso al tema de Event Grid a través de un punto de conexión privado, seleccione la opción Acceso privado.

    Image showing the selection of Private access option on the Networking page of the Create topic wizard.

  3. Consulte la sección siguiente para ver los pasos para agregar un punto de conexión privado.

Para un tema existente

  1. Inicie sesión en Azure Portal y vaya al tema o dominio.

  2. Cambie a la pestaña redes de la página del tema. En la pestaña Acceso público, seleccione Solo puntos de conexión privados.

    Screenshot that shows the Public network access page with Private endpoints only option selected.

  3. Cambie a la pestaña Conexiones de punto de conexión privado y seleccione + Punto de conexión privado en la barra de herramientas.

    Screenshot showing the selection of + Private endpoint link on the Private endpoint connection tab.

  4. En la página Conceptos básicos, siga estos pasos:

    1. Seleccione la suscripción de Azure donde desea crear el punto de conexión privado.

    2. Seleccione un grupo de recursos de Azure para el punto de conexión privado.

    3. Escriba un nombre para el punto de conexión.

    4. Seleccione la región del punto de conexión. El punto de conexión privado debe estar en la misma región que la red virtual, pero puede estar en otra región distinta de la del recurso de Private Link (en este ejemplo, un tema de Event Grid).

    5. A continuación, seleccione el botón Siguiente: Recurso > en la parte inferior de la página.

      Screenshot showing the Basics page of the Create a private endpoint wizard.

  5. En la página Recurso, siga estos pasos:

    1. Como método de conexión, si selecciona Conectarse a un recurso de Azure en mi directorio. , siga estos pasos. En este ejemplo se muestra cómo conectarse a un recurso de Azure de su directorio.
      1. Seleccione la suscripción de Azure en la que existe el tema o dominio.

      2. En Tipo de recurso, seleccione Microsoft.EventGrid/topics o Microsoft.EventGrid/domains como tipo de recurso.

      3. En Recurso, seleccione un tema o dominio de la lista desplegable.

      4. Confirme que el subrecurso de destino está establecido en tema o dominio (según el tipo de recurso que haya seleccionado).

      5. Seleccione el botón Siguiente: Virtual Network> en la parte inferior de la página.

        Screenshot showing the Resource page of the Create a private endpoint wizard.

    2. Si selecciona Connect to a resource using a resource ID or an alias (Conectarse a un recurso mediante un id. de recurso o un alias), siga estos pasos:
      1. Especifique el identificador del recurso. Por ejemplo: /subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventGrid/topics/<EVENT GRID TOPIC NAME>.

      2. En Recurso, escriba tema o dominio.

      3. (Opcional) Agregue un mensaje de solicitud.

      4. Seleccione el botón Siguiente: Virtual Network> en la parte inferior de la página.

        Screenshot showing the Resource page with resource ID specified.

  6. En la página Virtual Network, seleccione la subred de una red virtual en la que desee implementar el punto de conexión privado.

    1. Seleccione una red virtual. En la lista desplegable, solo se muestran las redes virtuales de la suscripción y la ubicación seleccionadas actualmente.

    2. Seleccione una subred de la red virtual que seleccionó.

    3. Seleccione el botón Siguiente: Etiquetas situado en la parte inferior de la página.

      Screenshot showing the Networking page of the Creating a private endpoint wizard

  7. En la página Etiquetas, cree cualquier etiqueta (nombres y valores) que desee asociar al recurso de punto de conexión privado. Después, en la parte inferior de la página, seleccione el botón Revisar y crear.

  8. En Revisar y crear, revise toda la configuración y seleccione Crear para crear el punto de conexión privado.

Cuando se crea un punto de conexión privado, se debe aprobar la conexión. Si el recurso para el que va a crear un punto de conexión privado está en el directorio, puede aprobar la solicitud de conexión siempre que tenga permisos suficientes. Si se va a conectar a un recurso de Azure en otro directorio, debe esperar a que el propietario de ese recurso apruebe la solicitud de conexión.

Hay cuatro estados de aprovisionamiento:

Acción del servicio Estado de punto de conexión privado del consumidor del servicio Descripción
None Pending La conexión se crea manualmente y está pendiente de aprobación por parte del propietario del recurso de Private Link.
Aprobación Aprobado La conexión se aprobó de forma automática o manual y está lista para usarse.
Reject Rechazada El propietario del recurso de vínculo privado rechazó la conexión.
Remove Escenario desconectado El propietario del recurso del vínculo privado quitó la conexión, el punto de conexión privado se vuelve informativo y debe eliminarse para la limpieza.

Administración de una conexión de punto de conexión privado

En las secciones siguientes se muestra cómo aprobar o rechazar una conexión de punto de conexión privado.

  1. Inicie sesión en Azure Portal.
  2. En la barra de búsqueda, escriba Temas de Event Grid o Dominios de Event Grid.
  3. Seleccione el tema o dominio que desea administrar.
  4. Seleccione la pestaña Redes.
  5. Si hay alguna conexión pendiente, verá una conexión que aparece con el estado Pendiente como estado de aprovisionamiento.

Aprobación de un punto de conexión privado

Puede aprobar un punto de conexión privado que esté pendiente. Para aprobarlo, siga estos pasos:

Nota

Los pasos que se muestran en esta sección son principalmente para los temas. Puede usar pasos similares para aprobar puntos de conexión privados para dominios.

  1. Seleccione el punto de conexión privado que desea aprobar y seleccione Aprobar en la barra de herramientas.

    Private endpoint - pending state

  2. En el cuadro de diálogo Aprobación de la conexión, escriba un comentario (opcional), y seleccione .

    Private endpoint - approve

  3. Confirme que el estado del punto de conexión privado aparece como Aprobado.

    Private endpoint - approved state

Rechazo de un punto de conexión privado

Puede rechazar un punto de conexión privado que tenga el estado Pendiente o Aprobado. Para rechazarlo, siga estos pasos:

Nota

Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para rechazar puntos de conexión privados para dominios.

  1. Seleccione el punto de conexión privado que desea rechazar y seleccione Rechazar en la barra de herramientas.

    Screenshot that shows the

  2. En el cuadro de diálogo Rechazo de la conexión, escriba un comentario (opcional), y seleccione .

    Private endpoint - reject

  3. Confirme que el estado del punto de conexión privado aparece como Rechazado.

    Private endpoint - rejected state

    Nota

    No se puede aprobar un punto de conexión privado en Azure Portal una vez rechazado.

Uso de CLI de Azure

Para crear un punto de conexión privado, use el método az network private-endpoint create que se indica en el siguiente ejemplo:

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 obtener descripciones de los parámetros utilizados en el ejemplo, consulte la documentación de az network private-endpoint create. Tenga en cuenta los siguientes puntos de este ejemplo:

  • Para private-connection-resource-id, especifique el identificador del recurso del tema o dominio. En el ejemplo anterior se utiliza el tipo "tema".
  • Para group-ids, especifique topic o domain. En el ejemplo anterior, se usa topic.

Para eliminar un punto de conexión privado, use el método az network private-endpoint delete que se indica en el siguiente ejemplo:

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

Nota

Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para crear puntos de conexión privados para dominios.

Requisitos previos

Actualice la extensión de Azure Event Grid para la CLI mediante el siguiente comando:

az extension update -n eventgrid

Si la extensión no está instalada, ejecute el siguiente comando para instalarla:

az extension add -n eventgrid

Creación de un punto de conexión privado

Para crear un punto de conexión privado, use el método az network private-endpoint create que se indica en el siguiente ejemplo:

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 obtener descripciones de los parámetros utilizados en el ejemplo, consulte la documentación de az network private-endpoint create. Tenga en cuenta los siguientes puntos de este ejemplo:

  • Para private-connection-resource-id, especifique el identificador del recurso del tema o dominio. En el ejemplo anterior se utiliza el tipo "tema".
  • Para group-ids, especifique topic o domain. En el ejemplo anterior, se usa topic.

Para eliminar un punto de conexión privado, use el método az network private-endpoint delete que se indica en el siguiente ejemplo:

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

Nota

Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para crear puntos de conexión privados para dominios.

Script de ejemplo

Este es un script de ejemplo que crea los siguientes recursos de Azure:

  • Resource group
  • Virtual network
  • Una subred en la red virtual
  • Tema de Azure Event Grid
  • Un punto de conexión privado para el tema

Nota

Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para crear puntos de conexión privados para dominios.

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

Aprobación de un punto de conexión privado

En el siguiente ejemplo de fragmento de código de la CLI se muestra cómo aprobar una conexión de punto de conexión privado.

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

Rechazo de un punto de conexión privado

En el siguiente ejemplo de fragmento de código de la CLI se muestra cómo rechazar una conexión de punto de conexión privado.

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

Deshabilitación del acceso a una red pública

De forma predeterminada, el acceso a la red pública está habilitado para un tema o dominio de Event Grid. Para permitir el acceso a través de puntos de conexión privados únicamente, deshabilite el acceso a la red pública con el siguiente comando:

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

Uso de PowerShell

En esta sección se muestra cómo crear un punto de conexión privado para un tema o dominio mediante PowerShell. Este es un script de ejemplo con comentarios.


# 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  

Aprobación de una conexión de punto de conexión privado

En el siguiente ejemplo de fragmento de código de PowerShell se muestra cómo aprobar un punto de conexión privado.

Nota

Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para aprobar puntos de conexión privados para dominios.


# 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

Rechazo de una conexión de punto de conexión privado

En el siguiente ejemplo se muestra cómo rechazar un punto de conexión privado mediante PowerShell. Puede obtener el GUID del punto de conexión privado a partir del resultado del comando GET anterior.

Nota

Los pasos que se muestran en esta sección son para los temas. Puede usar pasos similares para rechazar puntos de conexión privados para dominios.

# 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

Puede aprobar la conexión incluso después de que esta se haya rechazado mediante la API. Si usa Azure Portal, no puede aprobar un punto de conexión que se haya rechazado.

Pasos siguientes