Azure Private Link와 Azure Relay 통합

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

프라이빗 엔드포인트는 가상 네트워크에서 실행 중인 워크로드가 프라이빗 링크 리소스가 있는 서비스(예: 릴레이 네임스페이스)에 비공개로 안전하게 연결할 수 있도록 하는 네트워크 인터페이스입니다. 프라이빗 엔드포인트는 VNet의 개인 IP 주소를 사용하여 서비스를 VNet으로 효과적으로 가져옵니다. 서비스에 대한 모든 트래픽은 프라이빗 엔드포인트를 통해 라우팅할 수 있으므로 게이트웨이, NAT 디바이스, ExpressRoute, VPN 연결 또는 공용 IP 주소가 필요하지 않습니다. 가상 네트워크와 서비스 간의 트래픽은 Microsoft 백본 네트워크를 통해 이동하여 공용 인터넷에서 노출을 제거합니다. 특정 Azure Relay 네임스페이스에 대한 연결을 허용하여 액세스 제어 수준을 세분화할 수 있습니다.

참고 항목

프라이빗 링크를 통해 릴레이 수신기를 사용하는 경우 표준 릴레이 포트와 함께 발신 통신용 포트 9400-9599를 엽니다. 릴레이 수신기에 대해서만 이 단계를 수행해야 합니다.

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

필수 조건

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

  • Azure Relay 네임스페이스
  • Azure 가상 네트워크
  • 가상 네트워크의 서브넷
  • 가상 네트워크에 대한 소유자 또는 기여자 권한

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

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

Relay 네임스페이스에 대한 개인 액세스 구성

다음 절차에서는 릴레이 네임스페이스에 공용 액세스를 사용하지 않도록 설정한 다음 네임스페이스에 개인 엔드포인트를 추가하는 단계별 지침을 제공합니다.

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

  2. 검색 창에서 릴레이를 입력합니다.

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

  4. 왼쪽 메뉴의 설정 아래에서 네트워킹 탭을 선택합니다.

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

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

    공용 네트워크 액세스가 사용 안 함으로 설정되어 있는 네트워킹 페이지의 스크린샷.

  7. 페이지 위쪽에서 프라이빗 엔드포인트 연결 탭을 선택합니다.

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

    네트워킹 페이지의 프라이빗 엔드포인트 연결 탭에서 프라이빗 엔드포인트 추가 버튼의 선택을 보여주는 스크린샷.

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

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

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

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

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

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

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

      프라이빗 엔드포인트 만들기 마법사의 기본 페이지를 보여 주는 스크린샷

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

    프라이빗 엔드포인트 만들기 마법사의 리소스 페이지를 보여 주는 스크린샷

  11. Virtual Network 페이지에서 프라이빗 엔드포인트를 배포할 가상 네트워크서브넷을 선택합니다. 드롭다운 목록에 현재 선택한 구독 및 위치의 가상 네트워크만 나열됩니다.

    프라이빗 엔드포인트 만들기 마법사의 Virtual Network 페이지를 보여주는 스크린샷.

    IP 주소를 동적으로 할당할지 아니면 프라이빗 엔드포인트에 IP 주소정적으로 할당할지를 구성할 수 있습니다.

    신규 또는 기존 애플리케이션 보안 그룹을 프라이빗 엔드포인트에 연결할 수도 있습니다.

  12. 다음: DNS를 선택하여 마법사의 DNS 페이지로 이동합니다. DNS 페이지에서 프라이빗 DNZ 영역과 통합 설정은 기본적으로 사용하도록 설정됩니다(권장). 사용하지 않도록 설정하는 옵션이 있습니다.

    프라이빗 엔드포인트 만들기 마법사의 DNS 페이지를 보여주는 스크린샷.

    프라이빗 엔드포인트와 비공개로 연결하려면 DNS 레코드가 필요합니다. 프라이빗 엔드포인트를 프라이빗 DNS 영역과 통합하는 것이 좋습니다. 자체 DNS 서버를 활용하거나 가상 머신의 호스트 파일을 사용하여 DNS 레코드를 작성할 수도 있습니다. 자세한 내용은 Azure 프라이빗 엔드포인트 DNS 구성을 참조하세요.

  13. 페이지 하단에서 다음: 태그 > 단추를 선택합니다.

  14. 태그 페이지에서 프라이빗 엔드포인트 및 프라이빗 DNS 영역(옵션을 활성화한 경우)과 연결하려는 태그(이름 및 값)를 만듭니다. 그런 다음, 검토 + 만들기 단추를 페이지 아래쪽에서 선택합니다.

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

  16. 프라이빗 엔드포인트 페이지에서 프라이빗 엔드포인트 연결의 상태를 볼 수 있습니다. 릴레이 네임스페이스의 소유자이거나 이에 대한 액세스를 관리하고 내 디렉터리에서 Azure 리소스에 연결연결 방법에서 선택한 경우 엔드포인트 연결은 자동 승인되어야 합니다. 보류 중 상태인 경우 Azure Portal을 사용하여 프라이빗 엔드포인트 관리 섹션을 참조하세요.

    Azure Portal의 프라이빗 엔드포인트 페이지를 보여주는 스크린샷.

  17. 네임스페이스네트워킹 페이지로 다시 이동하여 프라이빗 엔드포인트 연결 탭으로 전환합니다. 생성된 프라이빗 엔드포인트가 표시됩니다.

    방금 만든 프라이빗 엔드포인트가 있는 네트워킹 페이지의 프라이빗 엔드포인트 연결 탭을 보여주는 스크린샷.

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

다음 예제에서는 Azure PowerShell을 사용하여 Azure Relay에 대한 프라이빗 엔드포인트 연결을 만드는 방법을 보여 줍니다.

프라이빗 엔드포인트와 가상 네트워크는 동일한 지역에 있어야 합니다. Azure Relay 네임스페이스는 다른 지역에 있을 수 있습니다. 또한 프라이빗 엔드포인트는 가상 네트워크에서 개인 IP 주소를 사용합니다.


$rgName = "<RESOURCE GROUP NAME>"
$vnetlocation = "<VNET 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 a relay namespace
$namespaceResource = New-AzResource -Location $namespaceLocation -ResourceName $namespaceName -ResourceGroupName $rgName -Properties @{} -ResourceType "Microsoft.Relay/namespaces" 

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

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

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


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

프라이빗 엔드포인트를 만들 때 연결이 승인되어야 합니다. 프라이빗 엔드포인트를 만드는 리소스(릴레이 네임스페이스)가 사용자 디렉터리에 있는 경우 릴레이 네임스페이스에 대한 관리 권한이 있다면 연결 요청을 승인할 수 있습니다. 관리 액세스 권한이 없는 릴레이 네임스페이스에 연결하는 경우 해당 리소스의 소유자가 연결 요청을 승인할 때까지 기다려야 합니다.

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

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

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

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

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

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

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

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

    선택한 프라이빗 엔드포인트에 대한 명령 모음의 승인 버튼을 보여주는 스크린샷.

  4. 연결 승인 페이지에서 선택적으로 주석을 추가하고 를 선택합니다. 아니요를 선택하면 아무 작업도 수행되지 않습니다.

    확인을 요청하는 연결 승인 페이지를 보여주는 스크린샷.

  5. 목록에서 연결의 상태가 승인됨으로 변경되어 있어야 합니다.

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

  1. 이전에 승인된 기존 연결이든 아니면 보류 중인 요청이든지 거부하려는 프라이빗 엔드포인트 연결이 있는 경우 엔드포인트 연결을 선택하고 거부 단추를 선택합니다.

    선택한 프라이빗 엔드포인트에 대한 명령 모음의 거부 버튼을 보여주는 스크린샷.

  2. 연결 거부 페이지에서 선택적으로 주석을 추가하고 를 선택합니다. 아니요를 선택하면 아무 작업도 수행되지 않습니다.

    확인을 요청하는 연결 거부 페이지를 보여주는 스크린샷.

  3. 목록에서 연결의 상태가 거부됨으로 변경되어 있어야 합니다.

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

  1. 프라이빗 엔드포인트 연결을 제거하려면 목록에서 해당 연결을 선택하고 도구 모음에서 제거를 선택합니다.

    선택한 프라이빗 엔드포인트에 대한 명령 모음의 제거 버튼을 보여주는 스크린샷.

  2. 연결 삭제 페이지에서 를 선택하여 프라이빗 엔드포인트의 삭제를 확인합니다. 아니요를 선택하면 아무 작업도 수행되지 않습니다.

    확인을 요청하는 연결 삭제 페이지를 보여주는 스크린샷.

  3. 상태가 연결 끊김으로 변경되어 있어야 합니다. 그러면 목록에 엔드포인트가 표시되지 않습니다.

프라이빗 엔드포인트의 가상 네트워크 내의 리소스가 개인 IP 주소를 통해 Azure Relay 네임스페이스에 연결되어 있는지 확인해야 합니다.

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

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

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

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

nslookup <your-relay-namespace-name>.servicebus.windows.net

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

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

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

디자인 고려 사항

제한 사항

  • Azure Relay 네임스페이스당 최대 프라이빗 엔드포인트 수:64.
  • 구독당 프라이빗 엔드포인트가 포함된 최대 Azure Relay 네임스페이스 수: 64.
  • NSG(네트워크 보안 그룹) 규칙 및 사용자 정의 경로는 프라이빗 엔드포인트에 적용되지 않습니다. 자세한 내용은 Azure Private Link 서비스: 제한 사항을 참조하세요.

신뢰할 수 있는 Microsoft 서비스

신뢰할 수 있는 Microsoft 서비스에서 이 방화벽을 무시하도록 허용 설정을 사용하도록 설정하면 다음 서비스에 Azure Relay 리소스에 대한 액세스 권한이 부여됩니다.

신뢰할 수 있는 서비스 지원되는 사용 시나리오
Azure Machine Learning AML Kubernetes는 Azure Relay를 사용하여 AML 서비스와 Kubernetes 클러스터 간의 통신을 용이하게 합니다. Azure Relay는 서로 다른 네트워크에서 호스트되는 애플리케이션 간에 안전한 양방향 통신을 제공하는 완전 관리형 서비스입니다. 따라서 Azure 리소스와 온-프레미스 리소스 간의 통신이 제한되는 프라이빗 링크 환경에서 사용하기에 적합합니다.
Azure Arc 위의 리소스 공급자와 연결된 Azure Arc 지원 서비스는 Azure Relay 네임스페이스에 설정된 IP 방화벽 규칙에 의해 차단되지 않고 Azure Relay 네임스페이스의 하이브리드 연결에 발신자로 연결할 수 있습니다. Microsoft.Hybridconnectivity 서비스는 Azure Relay 네임스페이스에 하이브리드 연결을 만들고 시나리오에 따라 관련 Arc 서비스에 연결 정보를 제공합니다. 이러한 서비스는 Azure Arc를 다음 Azure 서비스와 함께 사용하는 경우에만 Azure Relay 네임스페이스와 통신합니다.

- Azure Kubernetes
- Azure Machine Learning
- Microsoft Purview

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

  • Azure Event Grid
  • Azure IoT Hub
  • Azure Stream Analytics
  • Azure Monitor
  • Azure API Management
  • Azure Synapse
  • Azure Data Explorer
  • Azure IoT Central
  • Azure Healthcare Data Services
  • Azure Digital Twins

참고 항목

Microsoft Relay SDK의 2021-11-01 버전 이상에서는 Microsoft.Relay/namespaces/networkRuleSets 속성에서 "trustedServiceAccessEnabled" 속성을 사용하여 신뢰할 수 있는 서비스 액세스를 사용하도록 설정할 수 있습니다.

Azure Resource Manager 템플릿에서 신뢰할 수 있는 서비스를 허용하려면 템플릿에 다음 속성을 포함합니다.

"trustedServiceAccessEnabled": "True"

예를 들어 위에 제공된 ARM 템플릿에 따라 신뢰할 수 있는 서비스를 사용하도록 이 네트워크 규칙 집합 속성을 포함하도록 수정할 수 있습니다.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "namespaces_name": {
            "defaultValue": "contosorelay0215",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Relay/namespaces",
            "apiVersion": "2021-11-01",
            "name": "[parameters('namespaces_name')]",
            "location": "East US",
            "sku": {
                "name": "Standard",
                "tier": "Standard"
            },
            "properties": {}
        },
        {
            "type": "Microsoft.Relay/namespaces/authorizationrules",
            "apiVersion": "2021-11-01",
            "name": "[concat(parameters('namespaces_sprelayns0215_name'), '/RootManageSharedAccessKey')]",
            "location": "eastus",
            "dependsOn": [
                "[resourceId('Microsoft.Relay/namespaces', parameters('namespaces_sprelayns0215_name'))]"
            ],
            "properties": {
                "rights": [
                    "Listen",
                    "Manage",
                    "Send"
                ]
            }
        },
        {
            "type": "Microsoft.Relay/namespaces/networkRuleSets",
            "apiVersion": "2021-11-01",
            "name": "[concat(parameters('namespaces_sprelayns0215_name'), '/default')]",
            "location": "East US",
            "dependsOn": [
                "[resourceId('Microsoft.Relay/namespaces', parameters('namespaces_sprelayns0215_name'))]"
            ],
            "properties": {
                "trustedServiceAccessEnabled": "True",
                "publicNetworkAccess": "Enabled",
                "defaultAction": "Deny",
                "ipRules": [
                    {
                        "ipMask": "172.72.157.204",
                        "action": "Allow"
                    },
                    {
                        "ipMask": "10.1.1.1",
                        "action": "Allow"
                    },
                    {
                        "ipMask": "11.0.0.0/24",
                        "action": "Allow"
                    }
                ]
            }
        }
    ]
}

다음 단계