프라이빗 엔드포인트를 통한 Azure Event Hubs 네임스페이스 액세스 허용

Azure Private Link Service를 사용하면 가상 네트워크의 프라이빗 엔드포인트를 통해 Azure 서비스(예: Azure Event Hubs, Azure Storage 및 Azure Cosmos DB)와 Azure 호스팅 고객/파트너 서비스에 액세스할 수 있습니다.

프라이빗 엔드포인트는 Azure Private Link가 제공하는, 서비스에 비공개로 안전하게 연결하는 네트워크 인터페이스입니다. 프라이빗 엔드포인트는 가상 네트워크의 개인 IP 주소를 사용하여 서비스를 가상 네트워크에 효과적으로 제공합니다. 서비스에 대한 모든 트래픽은 프라이빗 엔드포인트를 통해 라우팅할 수 있으므로 게이트웨이, NAT 디바이스, ExpressRoute 또는 VPN 연결 또는 공용 IP 주소가 필요하지 않습니다. 가상 네트워크와 서비스 간의 트래픽은 Microsoft 백본 네트워크를 통해 이동하여 공용 인터넷에서 노출을 제거합니다. Azure 리소스의 인스턴스에 연결하여 액세스 제어에서 가장 높은 수준의 세분성을 제공할 수 있습니다.

자세한 내용은 Azure Private Link란?을 참조하세요.

중요 사항

  • 이 기능은 기본 계층에서 지원되지 않습니다.
  • 프라이빗 엔드포인트를 사용하여 다른 Azure 서비스가 Event Hubs와 상호 작용하지 않도록 할 수 있습니다. 차단되는 요청에는 다른 Azure 서비스, Azure Portal, 로깅 및 메트릭 서비스 등이 포함됩니다. 예외적으로 프라이빗 엔드포인트가 활성화된 경우에도 특정 신뢰할 수 있는 서비스에서 Event Hubs 리소스에 대한 액세스를 허용할 수 있습니다. 신뢰할 수 있는 서비스 목록은 신뢰할 수 있는 서비스를 참조하세요.
  • 지정된 IP 주소 또는 가상 네트워크의 서브넷에서만 트래픽을 허용하도록 네임스페이스에 대해 하나 이상의 IP 규칙 또는 가상 네트워크 규칙을 지정합니다. IP 및 가상 네트워크 규칙이 없는 경우 액세스 키를 사용하여 퍼블릭 인터넷을 통해 네임스페이스에 액세스할 수 있습니다.

Azure Portal을 사용하여 프라이빗 엔드포인트 추가

필수 조건

Event Hubs 네임스페이스를 Azure Private Link와 통합하려면 다음 엔터티 또는 사용 권한이 필요합니다.

  • Event Hubs 네임스페이스.
  • Azure 가상 네트워크
  • 가상 네트워크의 서브넷 기본 서브넷을 사용할 수 있습니다.
  • 네임스페이스 및 가상 네트워크 모두에 대한 소유자 또는 기여자 권한

프라이빗 엔드포인트와 가상 네트워크는 동일한 지역에 있어야 합니다. 포털을 사용하여 프라이빗 엔드포인트에 대한 영역을 선택하면 해당 지역에 있는 가상 네트워크만 자동으로 필터링됩니다. 네임스페이스는 다른 지역에 있을 수 있습니다.

프라이빗 엔드포인트는 가상 네트워크에서 개인 IP 주소를 사용합니다.

네임스페이스를 만들 때 프라이빗 액세스 구성

네임스페이스를 만들 때 네임스페이스에 대한 퍼블릭 전용(모든 네트워크에서) 또는 프라이빗 전용(프라이빗 엔드포인트를 통해서만) 액세스를 허용할 수 있습니다.

네임스페이스 만들기 마법사의 네트워킹 페이지에서 프라이빗 액세스 옵션을 선택하는 경우 + 프라이빗 엔드포인트 단추를 선택하여 페이지에 프라이빗 엔드포인트를 추가할 수 있습니다. 프라이빗 엔드포인트를 추가하는 자세한 단계는 다음 섹션을 참조하세요.

Screenshot showing the Networking page of the Create namespace wizard with Private access option selected.

기존 네임스페이스에 대한 프라이빗 액세스 구성

Event Hubs 네임스페이스가 이미 있는 경우 다음 단계에 따라 Private Link 연결을 만들 수 있습니다.

  1. Azure Portal에 로그인합니다.

  2. 검색 표시줄에 event hubs를 입력합니다.

  3. 목록에서 프라이빗 엔드포인트를 추가하려는 네임스페이스를 선택합니다.

  4. 네트워킹 페이지의 공용 네트워크 액세스에 대해 프라이빗 엔드포인트를 통해서만 네임스페이스에 액세스하려면 사용 안 함을 선택합니다.

  5. 신뢰할 수 있는 Microsoft 서비스가 이 방화벽을 우회하도록 허용하려면 신뢰할 수 있는 Microsoft 서비스가 이 방화벽을 우회하도록 허용에 대해 를 선택합니다.

    Screenshot of the Networking page with public network access as Disabled.

  6. 프라이빗 엔드포인트 연결 탭으로 전환합니다.

  7. 페이지 위쪽에서 + 프라이빗 엔드포인트 단추를 선택합니다.

    Networking page - Private endpoint connections tab - Add private endpoint link.

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

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

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

    3. 프라이빗 엔드포인트에 대한 이름을 입력합니다.

    4. 네트워크 인터페이스의 이름을 입력합니다.

    5. 프라이빗 엔드포인트에 대한 지역을 선택합니다. 프라이빗 엔드포인트는 가상 네트워크와 동일한 영역에 있어야 하지만 연결할 프라이빗 링크 리소스와 다른 영역에 있을 수 있습니다.

    6. 페이지 하단에서 다음: 리소스 > 단추를 선택합니다.

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

  9. 리소스 페이지에서 설정을 검토하고 다음: Virtual Network를 선택합니다.

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

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

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

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

    3. 프라이빗 엔드포인트에 대한 네트워크 정책이 비활성화되어 있습니다. 이를 사용하도록 설정하려면 편집을 선택하고 설정을 업데이트하고 저장을 선택합니다.

    4. 개인 IP 구성에는 기본적으로 동적으로 IP 주소 할당 옵션이 선택되어 있습니다. 고정 IP 주소를 할당하려면 고정적으로 IP 주소 할당*을 선택합니다.

    5. 애플리케이션 보안 그룹의 경우 기존 애플리케이션 보안 그룹을 선택하거나 프라이빗 엔드포인트와 연결할 애플리케이션 보안 그룹을 만듭니다.

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

      Screenshot showing the Virtual Network page of the Create private endpoint wizard.

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

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

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

    Create Private Endpoint - Review and Create page

  14. 만든 프라이빗 엔드포인트 연결이 엔드포인트 목록에 표시되는지 확인합니다. 이 예에서는 디렉터리의 Azure 리소스에 연결할 수 있고 충분한 사용 권한이 있으므로 프라이빗 엔드포인트가 자동으로 승인됩니다.

    Private endpoint created

신뢰할 수 있는 Microsoft 서비스

신뢰할 수 있는 Microsoft 서비스에서 이 방화벽을 무시하도록 허용 설정을 사용하면 동일한 테넌트 내의 다음 서비스에 Event Hubs 리소스에 대한 액세스 권한이 부여됩니다.

신뢰할 수 있는 서비스 지원되는 사용 시나리오
Azure Event Grid Azure Event Grid에서 Event Hubs 네임스페이스의 이벤트 허브로 이벤트를 보낼 수 있습니다. 다음 단계도 수행해야 합니다.
  • 항목 또는 도메인에 대해 시스템이 할당한 ID 사용
  • Event Hubs 네임스페이스에서 Azure Event Hubs 데이터 보낸 사람 역할에 ID를 추가합니다.
  • 그런 다음, 시스템 할당 ID를 사용하도록 이벤트 허브를 엔드포인트로 사용하는 이벤트 구독을 구성합니다.

자세한 내용은 관리 ID를 사용한 이벤트 전달을 참조하세요.

Azure Stream Analytics Azure Stream Analytics 작업이 Event Hubs 네임스페이스의 이벤트 허브에서 데이터를 읽거나(입력) 데이터를 작성(출력)할 수 있습니다.

중요: 관리 ID를 사용하여 이벤트 허브에 액세스하도록 Stream Analytics 작업을 구성해야 합니다. 자세한 내용은 관리 ID를 사용하여 Azure Stream Analytics 작업에서 이벤트 허브에 액세스(미리 보기)를 참조하세요.

Azure IoT Hub IoT Hub가 Event Hubs 네임스페이스의 이벤트 허브로 메시지를 보낼 수 있습니다. 다음 단계도 수행해야 합니다.
  • IoT 허브에 대해 시스템 할당 ID 사용
  • Event Hubs 네임스페이스에서 Azure Event Hubs 데이터 보낸 사람 역할에 ID를 추가합니다.
  • 그런 다음, ID 기반 인증을 사용하도록 이벤트 허브를 사용자 지정 엔드포인트로 사용하는 IoT Hub를 구성합니다.
Azure API Management

API Management 서비스를 사용하면 Event Hubs 네임스페이스의 이벤트 허브로 이벤트를 보낼 수 있습니다.

Azure Monitor(진단 설정 및 작업 그룹) Azure Monitor가 Event Hubs 네임스페이스의 이벤트 허브에 진단 정보 및 경고 알림을 보낼 수 있도록 합니다. Azure Monitor는 이벤트 허브에서 읽고 이벤트 허브에 데이터를 쓸 수도 있습니다.
Azure Synapse Azure Synapse가 Synapse 작업 영역 관리 ID를 사용하여 이벤트 허브에 연결할 수 있습니다. Event Hubs 네임스페이스의 ID에 Azure Event Hubs 데이터 보낸 사람, 받는 사람 또는 소유자 역할을 추가합니다.
Azure Data Explorer Azure Data Explorer가 클러스터의 관리 ID를 사용하여 이벤트 허브에서 이벤트를 수신할 수 있습니다. 다음 단계를 수행해야 합니다.
  • Azure Data Explorer에서 관리 ID 구성
  • 이벤트 허브의 ID에 Azure Event Hubs 데이터 수신기 역할을 부여합니다.
 
Azure IoT Central

IoT Central이 Event Hubs 네임스페이스의 이벤트 허브로 데이터를 내보낼 수 있습니다. 다음 단계도 수행해야 합니다.

  • IoT Central 애플리케이션에 대해 시스템 할당 ID를 사용하도록 설정합니다.
  • Event Hubs 네임스페이스에서 Azure Event Hubs 데이터 보낸 사람 역할에 ID를 추가합니다.
  • 그런 다음 ID 기반 인증을 사용하도록 Event Hubs IoT Central 애플리케이션의 내보내기 대상을 구성합니다.
Azure Health Data Services Healthcare API IoT 커넥터가 Event Hubs 네임스페이스에서 의료 디바이스 데이터를 수집하고 구성된 FHIR®(Fast Healthcare Interoperability Resources) 서비스에 데이터를 유지할 수 있도록 허용합니다. 관리 ID를 사용하여 이벤트 허브에 액세스하도록 IoT 커넥터를 구성해야 합니다. 자세한 내용은 IoT 커넥터 시작 - Azure Healthcare API를 참조하세요.
Azure Digital Twins Azure Digital Twins가 Event Hubs 네임스페이스의 이벤트 허브로 데이터를 송신할 수 있습니다. 다음 단계도 수행해야 합니다.

  • Azure Digital Twins 인스턴스에 대해 시스템 할당 ID를 사용하도록 설정합니다.
  • Event Hubs 네임스페이스에서 Azure Event Hubs 데이터 보낸 사람 역할에 ID를 추가합니다.
  • 그런 다음, 시스템 할당 ID를 사용하여 인증하는 Azure Digital Twins 엔드포인트 또는 Azure Digital Twins 데이터 기록 연결을 구성합니다. Azure Digital Twins에서 Event Hubs 리소스로 엔드포인트 및 이벤트 경로를 구성하는 방법에 대한 자세한 내용은 Azure Digital Twins 이벤트 라우팅Azure Digital Twins에서 엔드포인트 만들기를 참조하세요.

Azure Event Hubs에 대한 다른 신뢰할 수 있는 서비스는 아래에서 찾을 수 있습니다.

  • Azure Arc
  • Azure Kubernetes
  • Azure Machine Learning
  • Microsoft Purview

신뢰할 수 있는 서비스가 네임스페이스에 액세스할 수 있도록 하려면 네트워킹 페이지에서 공용 액세스 탭으로 전환하고 신뢰할 수 있는 Microsoft 서비스가 이 방화벽을 우회하도록 허용하시겠습니까?에 대해 를 선택합니다.

PowerShell을 사용하여 프라이빗 엔드포인트 추가

다음 예에서는 Azure PowerShell을 사용하여 프라이빗 엔드포인트 연결을 만드는 방법을 보여 줍니다. 자동으로 전용 클러스터를 만들지 않습니다. 이 문서의 단계에 따라 전용 Event Hubs 클러스터를 만듭니다.

$rgName = "<RESOURCE GROUP NAME>"
$vnetlocation = "<VIRTUAL NETWORK LOCATION>"
$vnetName = "<VIRTUAL NETWORK NAME>"
$subnetName = "<SUBNET NAME>"
$namespaceLocation = "<NAMESPACE LOCATION>"
$namespaceName = "<NAMESPACE NAME>"
$peConnectionName = "<PRIVATE ENDPOINT CONNECTION NAME>"

# create resource group
New-AzResourceGroup -Name $rgName -Location $vnetLocation 

# create virtual network
$virtualNetwork = New-AzVirtualNetwork `
                    -ResourceGroupName $rgName `
                    -Location $vnetlocation `
                    -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

# create an event hubs namespace in a dedicated cluster
$namespaceResource = New-AzResource -Location $namespaceLocation `
                                    -ResourceName $namespaceName `
                                    -ResourceGroupName $rgName `
                                    -Sku @{name = "Standard"; capacity = 1} `
                                    -Properties @{clusterArmId = "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/clusters/<EVENT HUBS CLUSTER NAME>"} `
                                    -ResourceType "Microsoft.EventHub/namespaces" -ApiVersion "2018-01-01-preview"

# create private endpoint connection
$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
                                -Name $peConnectionName `
                                -PrivateLinkServiceId $namespaceResource.ResourceId `
                                -GroupId "namespace"

# get subnet object that you'll use later
$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName  $rgName -Name $vnetName
$subnet = $virtualNetwork | Select -ExpandProperty subnets `
                                | Where-Object  {$_.Name -eq $subnetName}  
   
# create a private endpoint   
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $rgName  `
                                -Name $vnetName   `
                                -Location $vnetlocation `
                                -Subnet  $subnet   `
                                -PrivateLinkServiceConnection $privateEndpointConnection

(Get-AzResource -ResourceId $namespaceResource.ResourceId -ExpandProperties).Properties


프라이빗 DNS 영역 구성

Event Hubs 도메인에 대한 프라이빗 DNS 영역을 만들고, Virtual Network와의 연결 링크를 만듭니다.

$zone = New-AzPrivateDnsZone -ResourceGroupName $rgName `
                            -Name "privatelink.servicebus.windows.net" 
 
$link  = New-AzPrivateDnsVirtualNetworkLink -ResourceGroupName $rgName `
                                            -ZoneName "privatelink.servicebus.windows.net" `
                                            -Name "mylink" `
                                            -VirtualNetworkId $virtualNetwork.Id  
 
$networkInterface = Get-AzResource -ResourceId $privateEndpoint.NetworkInterfaces[0].Id -ApiVersion "2019-04-01" 
 
foreach ($ipconfig in $networkInterface.properties.ipConfigurations) { 
    foreach ($fqdn in $ipconfig.properties.privateLinkConnectionProperties.fqdns) { 
        Write-Host "$($ipconfig.properties.privateIPAddress) $($fqdn)"  
        $recordName = $fqdn.split('.',2)[0] 
        $dnsZone = $fqdn.split('.',2)[1] 
        New-AzPrivateDnsRecordSet -Name $recordName -RecordType A -ZoneName "privatelink.servicebus.windows.net"  `
                                -ResourceGroupName $rgName -Ttl 600 `
                                -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address $ipconfig.properties.privateIPAddress)  
    } 
}

Azure Portal을 사용하여 프라이빗 엔드포인트 관리

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

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

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

프라이빗 엔드포인트 연결 승인, 거부 또는 제거

  1. Azure Portal에 로그인합니다.
  2. 검색 표시줄에 event hubs를 입력합니다.
  3. 관리하려는 네임스페이스를 선택합니다.
  4. 네트워킹 탭을 선택합니다.
  5. 승인, 거부 또는 제거하려는 작업에 따라 다음 해당 섹션으로 이동합니다.

프라이빗 엔드포인트 연결 승인

  1. 보류 중인 연결이 있으면 프로비전 상태가 보류 중인 연결이 나열됩니다.

  2. 승인하려는 프라이빗 엔드포인트를 선택합니다.

  3. 승인 단추를 선택합니다.

    Approve private endpoint

  4. 연결 승인 페이지에서 설명(선택 사항)을 추가하고 를 선택합니다. 아니요를 선택하면 아무 작업도 수행되지 않습니다.

  5. 목록에서 프라이빗 엔드포인트 연결의 상태가 승인됨으로 변경되어 있어야 합니다.

프라이빗 엔드포인트 연결 거부

  1. 보류 중인 요청 또는 기존 연결인지 여부에 관계없이 거부하려는 프라이빗 엔드포인트 연결이 있으면 연결을 선택하고 거부 단추를 선택합니다.

    Reject private endpoint

  2. 연결 거부 페이지에서 설명(선택 사항)을 입력하고 를 선택합니다. 아니요를 선택하면 아무 작업도 수행되지 않습니다.

  3. 목록에서 프라이빗 엔드포인트 연결 상태가 거부됨으로 변경되어 있어야 합니다.

프라이빗 엔드포인트 연결 제거

  1. 프라이빗 엔드포인트 연결을 제거하려면 목록에서 해당 연결을 선택하고 도구 모음에서 제거를 선택합니다.
  2. 연결 삭제 페이지에서 를 선택하여 프라이빗 엔드포인트의 삭제를 확인합니다. 아니요를 선택하면 아무 작업도 수행되지 않습니다.
  3. 상태가 연결 끊김으로 변경되어 있어야 합니다. 그러면 목록에서 엔드포인트가 사라지게 됩니다.

프라이빗 엔드포인트의 가상 네트워크 내에 있는 리소스가 개인 IP 주소를 통해 Event Hubs 네임스페이스에 연결되고 올바른 프라이빗 DNS 영역 통합이 있는지 확인해야 합니다.

먼저 Azure Portal에서 Windows 가상 머신 만들기의 단계에 따라 가상 머신을 만듭니다.

네트워킹 탭에서 다음을 수행합니다.

  1. 가상 네트워크서브넷을 지정합니다. 프라이빗 엔드포인트를 배포한 가상 네트워크를 선택해야 합니다.
  2. 공용 IP 리소스를 지정합니다.
  3. NIC 네트워크 보안 그룹없음을 선택합니다.
  4. 부하 분산아니요를 선택합니다.

VM에 연결하고 명령줄을 열어 다음 명령을 실행합니다.

nslookup <event-hubs-namespace-name>.servicebus.windows.net

결과가 다음과 같이 표시됩니다.

Non-authoritative answer:
Name:    <event-hubs-namespace-name>.privatelink.servicebus.windows.net
Address:  10.0.0.4 (private IP address associated with the private endpoint)
Aliases:  <event-hubs-namespace-name>.servicebus.windows.net

제한 사항 및 디자인 고려 사항

  • 가격 책정 정보는 Azure Private Link 가격 책정을 참조하세요.
  • 이 기능은 모든 Azure 퍼블릭 지역에서 사용할 수 있습니다.
  • Event Hubs 네임스페이스당 최대 프라이빗 엔드포인트 수: 120
  • 트래픽은 TCP 계층이 아닌 애플리케이션 계층에서 차단됩니다. 따라서 공용 액세스가 사용하지 않도록 설정되어 있어도 퍼블릭 엔드포인트에 대해 TCP 연결 또는 nslookup 작업이 성공하는 것을 볼 수 있습니다.

자세한 내용은 Azure Private Link 서비스: 제한 사항을 참조하세요.

다음 단계