Configurare endpoint privati per argomenti personalizzati o domini personalizzati di Griglia di eventi di Azure

È possibile usare endpoint privati per consentire l'ingresso di eventi direttamente dalla rete virtuale agli argomenti e ai domini personalizzati in modo sicuro tramite un collegamento privato senza passare attraverso la rete Internet pubblica. L'endpoint privato usa un indirizzo IP dallo spazio indirizzi della rete virtuale per l'argomento o il dominio personalizzato. Per altre informazioni concettuali, vedere Sicurezza di rete.

Questo articolo descrive come configurare endpoint privati per argomenti o domini personalizzati.

Nota

Attualmente, gli endpoint privati non sono supportati per gli argomenti di sistema.

Usare il portale di Azure

Questa sezione illustra come usare il portale di Azure per creare un endpoint privato per un argomento o un dominio.

Nota

I passaggi illustrati in questa sezione riguardano principalmente gli argomenti personalizzati. È possibile usare passaggi simili per creare endpoint privati per i domini.

Per un nuovo argomento

Questa sezione illustra come abilitare l'accesso alla rete privata per un argomento di Griglia di eventi o un dominio. Per istruzioni dettagliate su come creare un nuovo argomento, vedere Creare un argomento personalizzato.

  1. Nella pagina Informazioni di base della procedura guidata Crea argomento, compila i campi obbligatori e quindi seleziona Avanti: Rete.

    Immagine che mostra la selezione del collegamento Rete nella parte inferiore della pagina.

  2. Per consentire l'accesso all'argomento di Griglia di eventi tramite un endpoint privato, selezionare l'opzione Accesso privato.

    Immagine che mostra la selezione dell'opzione Accesso privato nella pagina Rete della procedura guidata Crea argomento.

  3. Nella sezione Connessioni di endpoint privato, selezionare il pulsante + Endpoint privato.

    Screenshot che mostra il pulsante Endpoint privato nella pagina Crea argomento.

  4. Nella pagina Crea endpoint privato seguire questa procedura:

    1. In Nome immettere un nome per l'endpoint privato.
    2. Selezionare una rete virtuale. Nell'elenco a discesa sono elencate solo le reti virtuali nella sottoscrizione e nella località attualmente selezionate.
    3. Selezionare una subnet nella rete virtuale selezionata.
    4. Selezionare se si vuole integrare l'endpoint privato con una zona DNS privata.
    5. Seleziona OK.

    Screenshot della pagina Crea endpoint privato.

  5. Nella pagina Crea argomento selezionare Rivedi e crea nella parte inferiore della pagina.

  6. Nella pagina Rivedi e crea selezionare Crea.

Per un argomento esistente

  1. Accedere al portale di Azure e passare all'argomento o al dominio.

  2. Passa alla scheda Rete della pagina dell'argomento. Nella scheda Accesso pubblico selezionare Solo endpoint privati.

    Screenshot che mostra la pagina Accesso alla rete pubblica con l'opzione Solo endpoint privati selezionata.

  3. Passare alla scheda Connessioni endpoint privato, quindi selezionare + Endpoint privato nella barra degli strumenti.

    Screenshot che mostra la selezione del collegamento + Endpoint privato nella scheda Connessioni endpoint privato.

  4. Nella pagina Informazioni di base seguire questa procedura:

    1. Selezionare una sottoscrizione di Azure in cui si vuole creare l'endpoint privato.

    2. Selezionare un gruppo di risorse di Azure per l'endpoint privato.

    3. Immetti un nome per l'endpoint.

    4. Aggiornare il nome per l'interfaccia di rete, se necessario.

    5. Seleziona la regione per l'endpoint. L'endpoint privato deve trovarsi nella stessa area della rete virtuale, ma può trovarsi in un'area diversa rispetto alla risorsa private link (in questo esempio, un argomento di Event Grid).

    6. Selezionare Avanti: Risorsa >.

      Schermata che mostra la pagina Nozioni di base della procedura guidata Crea un endpoint privato.

  5. Nella pagina Risorsa verificare che l'argomento sia selezionato per Sotto-risorsa di destinazione e quindi selezionare Avanti: Rete virtuale >.

    Screenshot che mostra la pagina Risorsa della procedura guidata Crea un endpoint privato.

  6. Nella pagina Rete virtuale, selezionare la subnet in una rete virtuale in cui si desidera distribuire l'endpoint privato.

    1. Selezionare una rete virtuale. Nell'elenco a discesa sono elencate solo le reti virtuali nella sottoscrizione e nella località attualmente selezionate.

    2. Selezionare una subnet nella rete virtuale selezionata.

    3. Specificare se si vuole che l'indirizzo IP venga allocato in modo statico o dinamico.

    4. Selezionare un gruppo di sicurezza delle applicazioni esistente o crearne uno e quindi associarsi all'endpoint privato.

    5. Selezionare Avanti: DNS >.

      Schermata che mostra la pagina di Rete virtuale nella procedura guidata per creare un endpoint privato.

  7. Nella pagina DNS selezionare se si vuole che l'endpoint privato sia integrato con una zona DNS privata e quindi selezionare Avanti: Tag.

    Schermata che mostra la pagina DNS della procedura guidata per la creazione di un endpoint privato.

  8. Nella pagina Tag, creare tutti i tag (nomi e valori) che si desidera associare alla risorsa dell'endpoint privato. Selezionare quindi Rivedi + crea.

  9. In Rivedi e crea rivedere tutte le impostazioni e selezionare Crea per creare l'endpoint privato.

Quando si crea un endpoint privato, la connessione deve essere approvata. Se la risorsa per cui si sta creando un endpoint privato si trova nella propria directory, è possibile approvare la richiesta di connessione purché si abbiano autorizzazioni sufficienti. Se ci si sta connettendo a una risorsa di Azure in un'altra directory, è necessario attendere che il proprietario della risorsa approvi la richiesta di connessione.

Sono disponibili quattro stati di provisioning:

Azione di servizio Stato dell'endpoint privato del consumer del servizio Descrizione
Nessuna In sospeso La connessione viene creata manualmente ed è in attesa di approvazione dal proprietario della risorsa collegamento privato.
Approvazione Approvato La connessione è stata approvata automaticamente o manualmente ed è pronta per essere usata.
Rifiuto Rifiutato La connessione è stata rifiutata dal proprietario della risorsa di collegamento privato.
Rimuovi Disconnesso La connessione è stata rimossa dal proprietario della risorsa di collegamento privato, l'endpoint privato diventa informativo e deve essere eliminato per la pulizia.

Come gestire una connessione a un endpoint privato

Le sezioni seguenti mostrano come approvare o rifiutare una connessione a un endpoint privato.

  1. Accedere al portale di Azure.
  2. Nella barra di ricerca immettere argomenti di Griglia di eventi o domini di Griglia di eventi.
  3. Selezionare l'argomento o il dominio che si vuole gestire.
  4. Selezionare la scheda Rete.
  5. Se sono presenti connessioni in sospeso, verrà visualizzata una connessione elencata con In sospeso nello stato di provisioning.

Per approvare un endpoint privato

È possibile approvare un endpoint privato nello stato in sospeso. Per approvare, seguire questa procedura:

Nota

I passaggi illustrati in questa sezione riguardano principalmente gli argomenti. È possibile usare passaggi simili per approvare gli endpoint privati per i domini.

  1. Selezionare l'endpoint privato da approvare e selezionare Approva sulla barra degli strumenti.

    Schermata che mostra una connessione a un endpoint privato nello stato In sospeso nella scheda Rete.

  2. Nella finestra di dialogo Approva connessione immettere un commento (facoltativo) e selezionare .

    Screenshot che mostra la finestra di dialogo Approva connessione con un campo commento e un pulsante Sì.

  3. Verificare che lo stato dell'endpoint sia approvato.

    Screenshot che mostra la connessione all'endpoint privato con stato Approvato.

Per rifiutare un endpoint privato

È possibile rifiutare un endpoint privato nello stato in sospeso o approvato. Per rifiutare, seguire questa procedura:

Nota

I passaggi illustrati in questa sezione sono relativi agli argomenti. È possibile usare passaggi simili per rifiutare gli endpoint privati per i domini.

  1. Selezionare l'endpoint privato da rifiutare e selezionare Rifiuta sulla barra degli strumenti.

    Schermata che mostra la scheda Connessioni endpoint privati con il pulsante Rifiuta selezionato.

  2. Nella finestra di dialogo Rifiuta connessione immettere un commento (facoltativo) e selezionare .

    Screenshot che mostra la finestra di dialogo Rifiuta connessione con un campo commento e un pulsante Sì.

  3. Verificare che lo stato dell'endpoint sia Rifiutato.

    Screenshot che mostra la connessione all'endpoint privato con stato Rifiutato.

    Nota

    Non è possibile approvare un endpoint privato nel portale di Azure una volta rifiutato.

Utilizzare l'interfaccia della riga di comando di Azure

Prerequisiti

Aggiornare l'estensione Griglia di eventi di Azure per l'interfaccia della riga di comando eseguendo il comando seguente:

az extension update -n eventgrid

Se l'estensione non è installata, eseguire il comando seguente per installarla:

az extension add -n eventgrid

Creare un endpoint privato

Per creare un endpoint privato, usare il metodo az network private-endpoint create , come illustrato nell'esempio seguente:

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

Per le descrizioni dei parametri usati nell'esempio, vedere la documentazione per az network private-endpoint create. Alcuni punti da notare in questo esempio sono:

  • Per private-connection-resource-id, specificare l'ID della risorsa dell'argomento o del dominio. Nell'esempio precedente viene usato il tipo: argomento .
  • Per group-ids, specificare topic o domain. Nell'esempio topic precedente viene usato .

Per eliminare un endpoint privato, usare il metodo az network private-endpoint delete , come illustrato nell'esempio seguente:

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

Nota

I passaggi illustrati in questa sezione sono relativi agli argomenti. È possibile usare passaggi simili per creare endpoint privati per i domini.

Script di esempio

Ecco uno script di esempio che crea le risorse di Azure seguenti:

  • Gruppo di risorse
  • Rete virtuale
  • Subnet nella rete virtuale
  • argomento di Griglia di eventi di Azure
  • Endpoint privato per l'argomento

Nota

I passaggi illustrati in questa sezione sono relativi agli argomenti. È possibile usare passaggi simili per creare endpoint privati per i domini.

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

Approva un endpoint privato

Il seguente frammento CLI di esempio mostra come approvare una connessione a un endpoint privato.

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

Rifiutare un endpoint privato

Il seguente esempio di frammento CLI mostra come rifiutare una connessione a un endpoint privato.

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

Disabilitare l'accesso alla rete pubblica

Per impostazione predefinita, l'accesso alla rete pubblica è abilitato per un argomento o un dominio di Griglia di eventi. Per consentire l'accesso solo tramite endpoint privati, disabilitare l'accesso alla rete pubblica eseguendo il comando seguente:

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

Utilizzare PowerShell

Questa sezione illustra come creare un endpoint privato per un argomento o un dominio usando PowerShell. Ecco uno script di esempio con commenti.


# 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  

Approvare una connessione a un endpoint privato

Il frammento di codice di PowerShell di esempio seguente illustra come approvare un endpoint privato.

Nota

I passaggi illustrati in questa sezione sono relativi agli argomenti. È possibile usare passaggi simili per approvare gli endpoint privati per i domini.


# 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

Rifiutare una connessione a un endpoint privato

L'esempio seguente illustra come rifiutare un endpoint privato usando PowerShell. È possibile ottenere il GUID per l'endpoint privato dal risultato del comando GET precedente.

Nota

I passaggi illustrati in questa sezione sono relativi agli argomenti. È possibile usare passaggi simili per rifiutare gli endpoint privati per i domini.

# 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

È possibile approvare la connessione anche dopo che è stata rifiutata tramite API. Se si usa il portale di Azure, non è possibile approvare un endpoint rifiutato.