Configuración de puntos de conexión privados para temas o dominios personalizados 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 personalizados 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 personalizado. 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 personalizados.

Nota

Actualmente, los puntos de conexión privados no se admiten en los temas del sistema.

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

    Imagen que muestra la selección del enlace de red en la parte inferior de la página.

  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.

    Imagen que muestra la selección de la opción de acceso privado en la página de red del asistente de creación de temas.

  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.

    Captura de pantalla que muestra la página

  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.

    Captura de pantalla que muestra la selección del vínculo y del punto de conexión privado en la pestaña Conexión de punto de conexión privado.

  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. Actualice el nombre de la interfaz de red si fuera necesario.

    5. 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).

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

      En esta captura de pantalla se muestra la página Conceptos básicos del asistente Crear un punto de conexión privado.

  5. En la página Recurso, siga estos pasos, confirme que el tema esté seleccionado para el Subrecurso de destino y, a continuación, seleccione el botón Siguiente: Virtual Network > de la parte inferior de la página.

    En esta captura de pantalla se muestra la página Recurso del asistente Crear un punto de conexión privado.

  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. Especifique si desea que la dirección IP se asigne estática o dinámicamente.

    4. Seleccione un grupo de seguridad de aplicaciones existente o cree uno y, a continuación, asócielo al punto de conexión privado.

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

      Captura de pantalla que muestra la página Red del asistente Crear un punto de conexión privado.

  7. En la página DNS, seleccione si desea que el punto de conexión privado se integre con una zona DNS privada y, a continuación, seleccione Siguiente: etiquetas al final de la página.

    En esta captura de pantalla se muestra la página DNS del asistente Crear un punto de conexión privado.

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

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

    Punto de conexión privado: estado pendiente

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

    Punto de conexión privado: aprobación

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

    Punto de conexión privado: estado Aprobado

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.

    Captura de pantalla que muestra

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

    Punto de conexión privado: rechazo

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

    Punto de conexión privado: estado Rechazado

    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