다음을 통해 공유


Azure Event Grid 사용자 지정 토픽 또는 도메인의 프라이빗 엔드포인트 구성

프라이빗 엔드포인트를 사용하여 퍼블릭 인터넷을 통해 이동하지 않고도 프라이빗 링크를 통해 안전하게 가상 네트워크에서 사용자 지정 토픽 및 도메인으로 직접 이벤트를 수신할 수 있습니다. 프라이빗 엔드포인트는 사용자 지정 토픽 또는 도메인에 대해 VNet 주소 공간의 IP 주소를 사용합니다. 자세한 개념 정보는 네트워크 보안을 참조하세요.

이 문서에서는 사용자 지정 토픽 또는 도메인에 대해 프라이빗 엔드포인트를 구성하는 방법을 설명합니다.

참고 항목

현재 프라이빗 엔드포인트는 시스템 토픽은 지원되지 않습니다.

Azure Portal 사용

이 섹션에서는 Azure Portal을 사용하여 토픽 또는 도메인의 프라이빗 엔드포인트를 만드는 방법을 보여 줍니다.

참고 항목

이 섹션에 표시된 단계는 대부분 사용자 지정 토픽에 해당합니다. 비슷한 단계를 사용하여 도메인의 프라이빗 엔드포인트를 만들 수 있습니다.

새로운 토픽을 만들 때

이 섹션에서는 Event Grid 토픽 또는 도메인에 대한 개인 네트워크 액세스를 사용하도록 설정하는 방법을 보여 줍니다. 새 토픽을 만드는 단계별 지침은 사용자 지정 토픽 만들기를 참조하세요.

  1. 토픽 만들기 마법사의 기본 사항 페이지에서 필요한 필드를 채운 후 페이지 아래쪽에서 다음: 네트워킹을 선택합니다.

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

  2. 프라이빗 엔드포인트를 통해 Event Grid 토픽에 대한 액세스를 허용하려면 프라이빗 액세스 옵션을 선택합니다.

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

  3. 프라이빗 엔드포인트를 추가하는 단계는 다음 섹션을 참조하세요.

기존 토픽의 경우

  1. Azure Portal에 로그인하고 토픽 또는 도메인으로 이동합니다.

  2. 토픽 페이지의 네트워킹 탭으로 전환합니다. 공용 액세스 탭에서 프라이빗 엔드포인트만을 선택합니다.

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

  3. 프라이빗 엔드포인트 연결 탭으로 전환한 다음 도구 모음에서 + 프라이빗 엔드포인트를 선택합니다.

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

  4. 기본 페이지에서 다음 단계를 수행합니다.

    1. 프라이빗 엔드포인트를 만들려는 Azure 구독을 선택합니다.

    2. 프라이빗 엔드포인트의 Azure 리소스 그룹을 선택합니다.

    3. 엔드포인트이름을 입력합니다.

    4. 필요한 경우 네트워크 인터페이스이름을 업데이트합니다.

    5. 엔드포인트의 지역을 선택합니다. 프라이빗 엔드포인트는 가상 네트워크와 동일한 지역에 있어야 하지만 프라이빗 링크 리소스와는 다른 지역에 있을 수 있습니다(이 예제에서는 이벤트 그리드 토픽).

    6. 그런 다음, 페이지 아래쪽에서 다음: 리소스 > 단추를 선택합니다.

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

  5. 리소스 페이지에서 다음 단계를 수행하고 대상 하위 리소스에 대해 토픽이 선택되어 있는지 확인한 다음 페이지 아래쪽에서 다음: Virtual Network> 단추를 선택합니다.

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

  6. Virtual Network 페이지에서 프라이빗 엔드포인트를 배포할 가상 네트워크의 서브넷을 선택합니다.

    1. 가상 네트워크를 선택합니다. 드롭다운 목록에 현재 선택한 구독 및 위치의 가상 네트워크만 나열됩니다.

    2. 선택한 가상 네트워크의 서브넷을 선택합니다.

    3. IP 주소를 정적으로 할당할지 동적으로 할당할지 여부를 지정합니다.

    4. 기존 애플리케이션 보안 그룹을 선택하거나 만든 다음 프라이빗 엔드포인트와 연결합니다.

    5. 페이지 하단에서 다음: DNS > 단추를 선택합니다.

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

  7. DNS 페이지에서 프라이빗 엔드포인트를 프라이빗 DNS 영역과 통합할지 여부를 선택한 후 다음: 태그를 선택합니다.

    Screenshot showing the DNS page of the Creating a private endpoint wizard.

  8. 태그 페이지에서 프라이빗 엔드포인트 리소스와 연결하려는 태그(이름 및 값)를 만듭니다. 그런 다음, 검토 + 만들기 단추를 페이지 아래쪽에서 선택합니다.

  9. 검토 + 만들기에서 모든 설정을 검토하고 만들기를 선택하여 프라이빗 엔드포인트를 만듭니다.

프라이빗 엔드포인트를 만들 때 연결이 승인되어야 합니다. 프라이빗 엔드포인트를 만드는 리소스가 디렉터리에 있는 경우 충분한 사용 권한이 있다면 연결 요청을 승인할 수 있습니다. 다른 디렉터리의 Azure 리소스에 연결하는 경우 해당 리소스의 소유자가 연결 요청을 승인할 때까지 기다려야 합니다.

다음 네 가지 프로비저닝 상태가 있습니다.

서비스 작업 서비스 소비자 프라이빗 엔드포인트 상태 설명
None 보류 중 연결이 수동으로 만들어지고, 프라이빗 링크 리소스 소유자의 승인이 보류 중입니다.
승인 승인됨 연결이 자동 또는 수동으로 승인되었으며, 사용할 준비가 되었습니다.
거부 거부됨 Private Link 리소스 소유자가 연결을 거부했습니다.
제거 연결 끊김 Private Link 리소스 소유자가 연결을 제거했습니다. 프라이빗 엔드포인트는 정보를 제공하므로 정리를 위해 삭제해야 합니다.

프라이빗 엔드포인트 연결을 관리하는 방법

다음 섹션에서는 프라이빗 엔드포인트 연결을 승인하거나 거부하는 방법을 보여 줍니다.

  1. Azure Portal에 로그인합니다.
  2. 검색 표시줄에 Event Grid 토픽 또는 Event Grid 도메인을 입력합니다.
  3. 관리하려는 토픽 또는 도메인을 선택합니다.
  4. 네트워킹 탭을 선택합니다.
  5. 보류 중인 연결이 있으면 프로비저닝 상태가 보류 중인 연결이 나열됩니다.

프라이빗 엔드포인트를 승인하려면

보류 중 상태인 프라이빗 엔드포인트를 승인할 수 있습니다. 승인하려면 다음 단계를 수행합니다.

참고 항목

이 섹션에 표시된 단계는 대부분 토픽에 해당합니다. 비슷한 단계를 사용하여 도메인의 프라이빗 엔드포인트를 승인할 수 있습니다.

  1. 승인하려는 프라이빗 엔드포인트를 선택하고 도구 모음에서 승인을 선택합니다.

    Private endpoint - pending state

  2. 연결 승인 대화 상자에서 설명(선택 사항)을 입력하고 를 선택합니다.

    Private endpoint - approve

  3. 엔드포인트 상태가 승인됨으로 표시되는지 확인합니다.

    Private endpoint - approved state

프라이빗 엔드포인트를 거부하려면

보류 중 상태 또는 승인됨 상태인 프라이빗 엔드포인트를 거부할 수 있습니다. 거부하려면 다음 단계를 수행합니다.

참고 항목

이 섹션에 표시된 단계는 토픽과 관련됩니다. 비슷한 단계를 사용하여 도메인의 프라이빗 엔드포인트를 거부할 수 있습니다.

  1. 거부하려는 프라이빗 엔드포인트를 선택하고 도구 모음에서 거부를 선택합니다.

    Screenshot that shows the

  2. 연결 거부 대화 상자에서 설명(선택 사항)을 입력하고 를 선택합니다.

    Private endpoint - reject

  3. 엔드포인트 상태가 거부됨으로 표시되는지 확인합니다.

    Private endpoint - rejected state

    참고 항목

    프라이빗 엔드포인트가 거부된 후에는 Azure Portal에서 프라이빗 엔드포인트를 승인할 수 없습니다.

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의 경우 토픽 또는 도메인의 리소스 ID를 지정합니다. 이전 예제에서는 토픽 형식을 사용합니다.
  • group-ids의 경우 topic 또는 domain을 지정합니다. 앞의 예에서는 topic이 사용됩니다.

프라이빗 엔드포인트를 삭제하려면 다음 예제와 같이 az network private-endpoint delete 메서드를 사용합니다.

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

참고 항목

이 섹션에 표시된 단계는 토픽과 관련됩니다. 비슷한 단계를 사용하여 도메인의 프라이빗 엔드포인트를 만들 수 있습니다.

필수 조건

다음 명령을 실행하여 CLI의 Azure Event Grid 확장을 업데이트합니다.

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의 경우 토픽 또는 도메인의 리소스 ID를 지정합니다. 이전 예제에서는 토픽 형식을 사용합니다.
  • 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 리소스를 만드는 샘플 스크립트가 있습니다.

  • Resource group
  • 가상 네트워크
  • 가상 네트워크의 서브넷
  • Azure Event Grid 토픽
  • 토픽의 프라이빗 엔드포인트

참고 항목

이 섹션에 표시된 단계는 토픽과 관련됩니다. 비슷한 단계를 사용하여 도메인의 프라이빗 엔드포인트를 만들 수 있습니다.

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

프라이빗 엔드포인트 승인

다음 샘플 CLI 코드 조각은 프라이빗 엔드포인트 연결을 승인하는 방법을 보여 줍니다.

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

프라이빗 엔드포인트 거부

다음 샘플 CLI 코드 조각은 프라이빗 엔드포인트 연결을 거부하는 방법을 보여 줍니다.

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

공용 네트워크 액세스 사용 안 함

기본적으로 공용 네트워크 액세스는 Event Grid 토픽 또는 도메인에 대해 사용하도록 설정됩니다. 프라이빗 엔드포인트를 통해 액세스를 허용하려면 다음 명령을 실행하여 공용 네트워크 액세스를 사용하지 않도록 설정합니다.

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을 사용하여 프라이빗 엔드포인트를 거부하는 방법을 보여 줍니다. 이전 GET 명령의 결과에서 프라이빗 엔드포인트의 GUID를 가져올 수 있습니다.

참고 항목

이 섹션에 표시된 단계는 토픽과 관련됩니다. 비슷한 단계를 사용하여 도메인의 프라이빗 엔드포인트를 거부할 수 있습니다.

# 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 Portal을 사용하는 경우에는 거부된 엔드포인트를 승인할 수 없습니다.

다음 단계