Настройка частных конечных точек для Сетка событий Azure пользовательских разделов или доменов

Частные конечные точки можно использовать для безопасного входящего трафика событий непосредственно из виртуальной сети в пользовательские разделы и домены по приватному каналу без доступа к общедоступному Интернету. Частная конечная точка использует IP-адрес из адресного пространства виртуальной сети для пользовательского раздела или домена. Дополнительные сведения о принципах работы см. в разделе Безопасность сети.

В этой статье описывается настройка частных конечных точек для пользовательских разделов или доменов.

Примечание

В настоящее время частные конечные точки не поддерживаются для системных разделов.

Использование портала Azure

В этом разделе показано, как с помощью портала Azure создать частную конечную точку для раздела или домена.

Примечание

Действия, описанные в этом разделе, в основном предназначены для пользовательских разделов. Аналогичные действия можно выполнить для создания частных конечных точек для доменов.

Создание нового раздела

В этом разделе показано, как настроить доступ к частной сети для раздела или домена Сетки событий. Пошаговые инструкции по созданию нового раздела см. в статье Создание пользовательского раздела.

  1. На странице Основные сведения мастера создания раздела нажмите кнопку Далее: Сетевые подключения в нижней части страницы после заполнения обязательных полей.

    Изображение, показывающее выбор ссылки

  2. Чтобы разрешить доступ к разделу "Сетка событий" через частную конечную точку, выберите режим Частный доступ.

    Изображение, показывающее выбор параметра Частный доступ на странице Сеть мастера создания раздела.

  3. Инструкции по добавлению частной конечной точки см. в следующем разделе.

Для существующего раздела

  1. Войдите на портал Azure и перейдите к своему разделу или домену.

  2. Перейдите на вкладку Сеть на странице раздела. На вкладке Общий доступ выберите Только частные конечные точки.

    Снимок экрана: страница доступа к общедоступной сети, выбран вариант

  3. Перейдите на вкладку Подключения к частной конечной точке и выберите + Частная конечная точка на панели инструментов.

    Снимок экрана: выбор ссылки + Частная конечная точка на вкладке Подключение к частной конечной точке.

  4. На странице Базовые выполните следующие действия.

    1. Выберите подписку Azure, в которой нужно создать частную конечную точку.

    2. Выберите группу ресурсов Azure для частной конечной точки.

    3. Введите имяконечной точки.

    4. При необходимости обновите имясетевого интерфейса .

    5. Выберите регион для конечной точки. Частная конечная точка должна находиться в том же регионе, что и виртуальная сеть, но может находиться в другом регионе, отличном от региона ресурса приватного канала (в этом примере — раздел Сетки событий).

    6. Нажмите кнопку Далее: ресурс> в нижней части страницы.

      Снимок экрана: страница

  5. На странице Ресурс выполните следующие действия, убедитесь, что выбран раздел для целевого подресурса, а затем нажмите кнопку Далее: виртуальная сеть > в нижней части страницы.

    Снимок экрана: страница

  6. На странице Виртуальная сеть выберите подсеть в виртуальной сети, в которой требуется развернуть частную конечную точку.

    1. Выберите виртуальную сеть. В раскрывающемся списке отображаются только виртуальные сети в выбранных сейчас подписке и расположении.

    2. Выберите подсеть в выбранной виртуальной сети.

    3. Укажите, должен ли ip-адрес выделяться статически или динамически.

    4. Выберите существующую группу безопасности приложений или создайте ее, а затем свяжите ее с частной конечной точкой.

    5. Нажмите кнопку Далее: DNS> в нижней части страницы.

      Снимок экрана: страница

  7. На странице DNS выберите, должна ли частная конечная точка быть интегрирована с частной зоной DNS, а затем выберите Далее: теги в нижней части страницы.

    Снимок экрана: страница

  8. На странице Теги создайте теги (имена и значения), которые нужно связать с ресурсом частной конечной точки. В нижней части страницы нажмите на кнопку Просмотреть и создать.

  9. На странице Проверка и создание проверьте все параметры и нажмите Создать, чтобы создать частную конечную точку.

При создании частной конечной точки подключение должно быть утверждено. Если ресурс, для которого создается частная конечная точка, находится в вашем каталоге, вы можете утвердить запрос на подключение, если у вас есть необходимые разрешения. При подключении к ресурсу Azure в другом каталоге необходимо дождаться, пока владелец этого ресурса утвердит запрос на подключение.

Существует четыре состояния подготовки:

Действие в службе Состояние частной конечной точки объекта-получателя службы Описание
None Ожидает Подключение создается вручную и ожидает утверждения от владельца ресурса приватного канала.
Утверждение Approved Подключение утверждено автоматически или вручную и готово к использованию.
Reject Отклонено Подключение отклонил владелец ресурса Приватного канала.
Удалить Отключено Подключение удалил владелец ресурса Приватного канала. Частная конечная точка станет информативной и подлежит удалению для очистки.

Как управлять подключением к частной конечной точке

В следующих разделах показано, как утвердить или отклонить подключение к частной конечной точке.

  1. Войдите на портал Azure.
  2. В строке поиска введите Event Grid topics или Event Grid domains.
  3. Выберите раздел или домен, которым требуется управлять.
  4. Перейдите на вкладку Сеть.
  5. Если есть подключения в состоянии ожидания, вы увидите такое подключение в списке с состоянием В ожидании.

Утверждение частной конечной точки

Вы можете утвердить частную конечную точку, которая находится в состоянии ожидания. Для этого выполните следующие действия.

Примечание

Действия, приведенные в этом разделе, в основном предназначены для разделов. Аналогичные действия можно выполнить для утверждения частных конечных точек для доменов.

  1. Выберите частную конечную точку, которую вы хотите утвердить, и на панели инструментов выберите Утвердить.

    Частная конечная точка — состояние ожидания

  2. В диалоговом окне Утверждение подключения добавьте комментарий (необязательно) и нажмите кнопку Да.

    Частная конечная точка — утверждение

  3. Убедитесь, что конечная точка находится в состоянии Утверждено.

    Частная конечная точка — утвержденное состояние

Отклонение частной конечной точки

Вы можете отклонить частную конечную точку, находящиеся в состоянии ожидания или утвержденном состоянии. Для этого выполните приведенные ниже действия.

Примечание

Действия, приведенные в этом разделе, предназначены для разделов. Аналогичные действия можно выполнить для отклонения частных конечных точек для доменов.

  1. Выберите частную конечную точку, которую вы хотите отклонить, и на панели инструментов выберите Отклонить.

    Снимок экрана, на котором показана станица

  2. В диалоговом окне Отклонить подключение введите комментарий (необязательно) и нажмите кнопку Да.

    Частная конечная точка — отклонение

  3. Убедитесь, что конечная точка находится в состоянии Отклонено.

    Частная конечная точка — отклоненное состояние

    Примечание

    Невозможно утвердить частную конечную точку на портале Azure после ее отклонения.

Использование Azure CLI

Чтобы создать частную конечную точку, используйте команду az network private-endpoint create, как показано в следующем примере.

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

Описание параметров, используемых в примере, доступно в документации по команде az network private-endpoint create. В этом примере необходимо отметить несколько моментов.

  • Для private-connection-resource-id укажите идентификатор ресурса раздела или домена. В предшествующем примере используется type: topic.
  • Для group-ids следует задать значение topic или domain. В предшествующем примере используется topic.

Чтобы удалить частную конечную точку, используйте команду az network private-endpoint delete, как показано в следующем примере.

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

Примечание

Действия, приведенные в этом разделе, предназначены для разделов. Аналогичные действия можно выполнить для создания частных конечных точек для доменов.

Предварительные требования

Обновите расширение Сетки событий Azure для интерфейса командной строки, выполнив следующую команду:

az extension update -n eventgrid

Если расширение еще не установлено, выполните следующую команду, чтобы установить его:

az extension add -n eventgrid

Создание частной конечной точки

Чтобы создать частную конечную точку, используйте команду az network private-endpoint create, как показано в следующем примере.

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

Описание параметров, используемых в примере, доступно в документации по команде az network private-endpoint create. В этом примере необходимо отметить несколько моментов.

  • Для private-connection-resource-id укажите идентификатор ресурса раздела или домена. В предшествующем примере используется type: topic.
  • Для group-ids следует задать значение topic или domain. В предшествующем примере используется topic.

Чтобы удалить частную конечную точку, используйте команду az network private-endpoint delete, как показано в следующем примере.

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

Примечание

Действия, приведенные в этом разделе, предназначены для разделов. Аналогичные действия можно выполнить для создания частных конечных точек для доменов.

Пример скрипта

Ниже приведен пример сценария, который создает следующие ресурсы Azure:

  • Группа ресурсов
  • Виртуальная сеть
  • подсеть в виртуальной сети;
  • раздел Сетки событий Azure;
  • частная конечная точка для раздела.

Примечание

Действия, приведенные в этом разделе, предназначены для разделов. Аналогичные действия можно выполнить для создания частных конечных точек для доменов.

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

Утверждение частной конечной точки

В следующем фрагменте кода для интерфейса командной строки показано, как утвердить подключение к частной конечной точке.

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

Отклонение частной конечной точки

В следующем фрагменте кода для интерфейса командной строки показано, как отклонить подключение к частной конечной точке.

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

Отключение доступа из общедоступной сети

По умолчанию для раздела или домена Сетки событий включен доступ через общедоступную сеть. Чтобы разрешить доступ только через частные конечные точки, отключите доступ через общедоступную сеть, выполнив следующую команду:

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

Использование PowerShell

В этом разделе показано, как создать частную конечную точку для раздела или домена с помощью PowerShell. Ниже приведен пример скрипта с комментариями.


# 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  

Утверждение подключения частной конечной точки

В следующем фрагменте кода для PowerShell показано, как утвердить частную конечную точку.

Примечание

Действия, приведенные в этом разделе, предназначены для разделов. Аналогичные действия можно выполнить для утверждения частных конечных точек для доменов.


# 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

Отклонение подключения к частной конечной точке

В следующем примере показано, как отклонить частную конечную точку с помощью PowerShell. Идентификатор GUID для частной конечной точки можно получить из результата предыдущей команды GET.

Примечание

Действия, приведенные в этом разделе, предназначены для разделов. Аналогичные действия можно выполнить для отклонения частных конечных точек для доменов.

# 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

Вы можете утвердить подключение с помощью API даже после его отклонения. На портале Azure невозможно утвердить конечную точку, которая была отклонена.

Дальнейшие действия