특정 가상 네트워크에서 Azure Event Hubs 네임스페이스에 대한 액세스 허용

VNet(Virtual Network) 서비스 엔드포인트와 Event Hubs를 통합하면 양쪽 엔드에서 네트워크 트래픽 경로를 보호하여 가상 네트워크에 바인딩된 가상 머신과 같은 워크로드의 메시징 기능에 대한 액세스를 보호할 수 있습니다.

하나 이상의 가상 네트워크 서브넷 서비스 엔드포인트에 바인딩하도록 구성되면 해당 Event Hubs 네임스페이스는 더 이상 가상 네트워크의 권한이 부여된 서브넷을 제외한 모든 위치에서 트래픽을 허용하지 않습니다. 가상 네트워크 큐브 뷰에서 Event Hubs 네임스페이스를 서비스 엔드포인트에 바인딩하면 가상 네트워크 서브넷에서 메시징 서비스로 격리된 네트워킹 터널을 구성합니다.

그 결과, 메시징 서비스 엔드포인트의 관찰 가능한 네트워크 주소가 공용 IP 범위에 있음에도 불구하고 서브넷과 해당 Event Hubs 네임스페이스에 바인딩된 워크로드 간의 프라이빗 및 격리된 관계가 생성됩니다. 이 동작에는 예외가 있습니다. 기본적으로 서비스 엔드포인트를 사용하도록 설정하면 가상 네트워크와 연결된 IP 방화벽에서 규칙을 사용하도록 설정합니다denyall. IP 방화벽의 특정 IP 주소를 추가하여 Event Hubs 퍼블릭 엔드포인트에 액세스할 수 있습니다.

중요 사항

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

VNet 통합에서 사용하도록 설정된 고급 보안 시나리오

엄격하게 분류된 보안이 필요한 솔루션은 일반적으로 해당 구획에 위치한 서비스 간에 통신 경로가 필요합니다. 해당 솔루션에서 가상 네트워크 서브넷은 분류된 서비스를 서로 구분합니다.

TCP/IP를 통해 HTTPS를 운반하는 것을 포함하여 구획 간의 즉각적인 IP 경로는 네트워크 계층에서 취약성을 악용할 위험이 있습니다. 메시징 서비스는 격리된 통신 경로를 제공합니다. 여기서 메시지는 항목을 전환할 때 디스크에도 작성됩니다. 동일한 Event Hubs 인스턴스에 바인딩된 두 개의 고유한 가상 네트워크의 워크로드는 메시지를 통해 효율적이고 안정적으로 통신할 수 있는 반면, 각 네트워크 격리 경계 무결성은 유지됩니다.

즉, 보안에 민감한 클라우드 솔루션은 Azure 업계 최고의 안정적이고 확장 가능한 비동기 메시징 기능에 액세스할 수 있을 뿐만 아니라 이제 메시징을 사용하여 HTTPS 및 기타 TLS 보안 소켓 프로토콜을 비롯한 피어 투 피어 통신 모드에서 달성할 수 있는 것보다 본질적으로 더 안전한 보안 솔루션 구획 간에 통신 경로를 만들 수 있습니다.

가상 네트워크에 이벤트 허브 바인딩

가상 네트워크 규칙은 Azure Event Hubs 네임스페이스가 특정 가상 네트워크 서브넷의 연결을 허용하는지 여부를 제어하는 방화벽 보안 기능입니다.

Event Hubs 네임스페이스를 가상 네트워크에 바인딩하는 것은 2단계 프로세스입니다. 먼저 가상 네트워크의 서브넷에 가상 네트워크 서비스 엔드포인트를 만들고 서비스 엔드포인트 개요 문서에 설명된 대로 Microsoft.EventHub사용하도록 설정해야 합니다. 서비스 엔드포인트를 추가한 후에는 가상 네트워크 규칙을 사용하여 Event Hubs 네임스페이스를 바인딩합니다.

가상 네트워크 규칙은 가상 네트워크 서브넷을 사용하는 Event Hubs 네임스페이스의 연결입니다. 규칙이 있는 동안 서브넷에 바인딩된 모든 워크로드에는 Event Hubs 네임스페이스에 대한 액세스 권한이 부여됩니다. Event Hubs 자체는 아웃바운드 연결을 설정하지 않으며, 액세스 권한을 얻을 필요가 없으므로 이 규칙을 사용하도록 설정하여 서브넷에 대한 액세스 권한을 부여하지 않습니다.

Azure Portal 사용

네임스페이스를 만들 때는 공용만(모든 네트워크에서) 또는 프라이빗만(프라이빗 엔드포인트를 통해서만) 네임스페이스에 대한 액세스를 허용할 수 있습니다. 네임스페이스가 만들어지면 특정 IP 주소 또는 특정 가상 네트워크(네트워크 서비스 엔드포인트 사용)에서 액세스를 허용할 수 있습니다.

네임스페이스를 만들 때 공용 액세스 구성

공용 액세스를 사용하도록 설정하려면 네임스페이스 만들기 마법사의 네트워킹 페이지에서 공용 액세스를 선택합니다.

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

네임스페이스를 만든 후 Service Bus 네임스페이스 페이지의 왼쪽 메뉴에서 네트워킹선택합니다. 모든 네트워크 옵션이 선택된 것을 볼 수 있습니다. 선택한 네트워크 옵션을 선택하고 특정 IP 주소 또는 특정 가상 네트워크에서의 액세스를 허용할 수 있습니다. 다음 섹션에서는 액세스가 허용되는 네트워크를 지정하는 데 대한 세부 정보를 제공합니다.

기존 네임스페이스에 대해 선택한 네트워크 구성

이 섹션에서는 Azure Portal을 사용하여 가상 네트워크 서비스 엔드포인트를 추가하는 방법을 보여 줍니다. 액세스를 제한하려면 이 Event Hubs 네임스페이스에 대한 가상 네트워크 서비스 엔드포인트를 통합해야 합니다.

  1. Azure Portal에서 Event Hubs 네임스페이스이동합니다.

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

  3. 네트워킹 페이지에서 공용 네트워크 액세스에 대해 다음 세 가지 옵션 중 하나를 설정할 수 있습니다. 특정 가상 네트워크에서만 액세스를 허용하려면 선택한 네트워크 옵션을 선택합니다.

    공용 네트워크 액세스 페이지에서 사용할 수 있는 옵션에 대한 자세한 내용은 다음과 같습니다.

    • Disabled. 이 옵션은 네임스페이스에 대한 모든 공용 액세스를 사용하지 않도록 설정합니다. 네임스페이스는 프라이빗 엔드포인트를 통해 서만 액세스할 수 있습니다.

    • 선택한 네트워크. 이 옵션은 선택한 네트워크의 액세스 키를 사용하여 네임스페이스에 대한 공용 액세스를 사용하도록 설정합니다.

      Important

      선택한 네트워크를 선택하는 경우 네임스페이스에 액세스할 수 있는 가상 네트워크 또는 IP 방화벽 규칙을 하나 이상 추가합니다. 프라이빗 엔드포인트를 통해서만 이 네임스페이스에 대한 모든 트래픽을 제한하려면 사용하지 않도록 설정를 선택합니다.

    • 모든 네트워크(기본값). 이 옵션은 액세스 키를 사용하여 모든 네트워크에서 공용 액세스를 사용하도록 설정합니다. 모든 네트워크 옵션을 선택하면 이벤트 허브는 액세스 키를 사용하여 모든 IP 주소의 연결을 허용합니다. 이 설정은 0.0.0.0/0 IP 주소 범위를 허용하는 규칙과 동일합니다.

  4. 특정 네트워크에 대한 액세스를 제한하려면 아직 선택하지 않은 경우 페이지 상단에서 선택한 네트워크 옵션을 선택합니다.

  5. 페이지의 가상 네트워크 섹션에서 +기존 가상 네트워크 추가*를 선택합니다. 새 VNet을 만들려면 + 새 가상 네트워크 만들기를 선택합니다.

    Selection of Add existing virtual network menu item.

    Important

    선택한 네트워크를 선택하는 경우 네임스페이스에 액세스할 수 있는 가상 네트워크 또는 IP 방화벽 규칙을 하나 이상 추가합니다. 프라이빗 엔드포인트를 통해서만 이 네임스페이스에 대한 모든 트래픽을 제한하려면 사용하지 않도록 설정를 선택합니다.

  6. 가상 네트워크 목록에서 가상 네트워크를 선택하고 서브넷을 선택합니다. 가상 네트워크를 목록에 추가하기 전에 서비스 엔드포인트를 사용하도록 설정해야 합니다. 서비스 엔드포인트를 사용하도록 설정하지 않으면 포털에서 사용하도록 설정하라는 메시지가 표시됩니다.

    Image showing the selection of a subnet.

  7. 서브넷의 서비스 엔드포인트를 Microsoft.EventHub에 사용하도록 설정하고 나면 다음과 같은 성공 메시지가 표시되어야 합니다. 페이지 아래쪽에서 추가를 선택하여 네트워크를 추가합니다.

    Image showing the selection of a subnet and enabling an endpoint.

    참고 항목

    서비스 엔드포인트를 사용하도록 설정할 수 없는 경우 Resource Manager 템플릿을 사용하여 누락된 가상 네트워크 서비스 엔드포인트를 무시할 수 있습니다. 이 기능은 포털에서 사용할 수 없습니다.

  8. 신뢰할 수 있는 Microsoft 서비스가 이 방화벽을 바이패스하도록 허용할지 여부를 지정합니다. 자세한 내용은 신뢰할 수 있는 Microsoft 서비스 참조하세요.

  9. 도구 모음에서 저장을 선택하여 설정을 저장합니다. 포털 알림에 확인이 표시될 때가지 몇 분 정도 기다립니다.

    Image showing the saving of virtual network.

    참고 항목

    특정 IP 주소 또는 범위에 대한 액세스를 제한하려면 특정 IP 주소 또는 범위에서 액세스 허용을 참조 하세요.

신뢰할 수 있는 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 Hub에 시스템 할당 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 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

Resource Manager 템플릿 사용

다음 샘플 Resource Manager 템플릿은 기존 Event Hubs 네임스페이스에 가상 네트워크 규칙을 추가합니다. 네트워크 규칙의 경우 가상 네트워크에 있는 서브넷의 ID를 지정합니다.

ID는 가상 네트워크 서브넷에 대한 정규화된 Resource Manager 경로입니다. 예를 들어 가상 /subscriptions/{id}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/default 네트워크의 기본 서브넷의 경우입니다.

가상 네트워크 또는 방화벽 규칙을 추가할 때 값을 defaultActionDeny.로 설정합니다.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "eventhubNamespaceName": {
        "type": "string",
        "metadata": {
          "description": "Name of the Event Hubs namespace"
        }
      },
      "virtualNetworkName": {
        "type": "string",
        "metadata": {
          "description": "Name of the Virtual Network Rule"
        }
      },
      "subnetName": {
        "type": "string",
        "metadata": {
          "description": "Name of the Virtual Network Sub Net"
        }
      },
      "location": {
        "type": "string",
        "metadata": {
          "description": "Location for Namespace"
        }
      }
    },
    "variables": {
      "namespaceNetworkRuleSetName": "[concat(parameters('eventhubNamespaceName'), concat('/', 'default'))]",
      "subNetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets/', parameters('virtualNetworkName'), parameters('subnetName'))]"
    },
    "resources": [
      {
        "apiVersion": "2018-01-01-preview",
        "name": "[parameters('eventhubNamespaceName')]",
        "type": "Microsoft.EventHub/namespaces",
        "location": "[parameters('location')]",
        "sku": {
          "name": "Standard",
          "tier": "Standard"
        },
        "properties": { }
      },
      {
        "apiVersion": "2017-09-01",
        "name": "[parameters('virtualNetworkName')]",
        "location": "[parameters('location')]",
        "type": "Microsoft.Network/virtualNetworks",
        "properties": {
          "addressSpace": {
            "addressPrefixes": [
              "10.0.0.0/23"
            ]
          },
          "subnets": [
            {
              "name": "[parameters('subnetName')]",
              "properties": {
                "addressPrefix": "10.0.0.0/23",
                "serviceEndpoints": [
                  {
                    "service": "Microsoft.EventHub"
                  }
                ]
              }
            }
          ]
        }
      },
      {
        "apiVersion": "2018-01-01-preview",
        "name": "[variables('namespaceNetworkRuleSetName')]",
        "type": "Microsoft.EventHub/namespaces/networkruleset",
        "dependsOn": [
          "[concat('Microsoft.EventHub/namespaces/', parameters('eventhubNamespaceName'))]"
        ],
        "properties": {
          "publicNetworkAccess": "Enabled",
          "defaultAction": "Deny",
          "virtualNetworkRules": 
          [
            {
              "subnet": {
                "id": "[variables('subNetId')]"
              },
              "ignoreMissingVnetServiceEndpoint": false
            }
          ],
          "ipRules":[],
          "trustedServiceAccessEnabled": false
        }
      }
    ],
    "outputs": { }
  }

템플릿을 배포하려면 Azure Resource Manager에 대한 지침을 따릅니다.

Important

IP 및 가상 네트워크 규칙이 없으면 모든 트래픽이 네임스페이스 defaultActiondeny로 흐릅니다. 네임스페이스는 공용 인터넷을 통해 액세스할 수 있습니다(액세스 키 사용). 지정된 IP 주소 또는 가상 네트워크의 서브넷에서만 트래픽을 허용하도록 네임스페이스에 대해 하나 이상의 IP 규칙 또는 가상 네트워크 규칙을 지정합니다.

Azure CLI 사용

추가, 나열, 업데이트 및 제거 명령을 사용하여 az eventhubs namespace network-rule-set Service Bus 네임스페이스에 대한 가상 네트워크 규칙을 관리합니다.

Azure PowerShell 사용

다음 Azure PowerShell 명령을 사용하여 Service Bus 네임스페이스에 대한 네트워크 규칙을 추가, 나열, 제거, 업데이트 및 삭제합니다.

기본 작업 및 공용 네트워크 액세스

REST API

defaultAction 속성의 기본값은 API 버전 2021-01-01-preview 이하의 경우 Deny입니다. 그러나 IP 필터 또는 VNet(가상 네트워크) 규칙을 설정하지 않으면 거부 규칙이 적용되지 않습니다. 즉, IP 필터 또는 VNet 규칙이 없는 경우 Allow로 처리됩니다.

API 버전 2021-06-01-preview부터 서비스 측 적용을 정확하게 반영하기 위해 defaultAction 속성의 기본값은 Allow입니다. 기본 작업이 Deny로 설정된 경우 IP 필터 및 VNet 규칙이 적용됩니다. 기본 작업이 Allow로 설정된 경우 IP 필터 및 VNet 규칙이 적용되지 않습니다. 서비스는 규칙을 껐다가 다시 켤 때 규칙을 기억합니다.

API 버전 2021-06-01-preview 이상에는 publicNetworkAccess라는 새 속성도 도입되었습니다. Disabled로 설정하면 작업이 프라이빗 링크로만 제한됩니다. Enabled로 설정하면 공용 인터넷을 통한 작업이 허용됩니다.

이러한 속성에 대한 자세한 내용은 네트워크 규칙 집합 만들기 또는 업데이트프라이빗 엔드포인트 연결 만들기 또는 업데이트를 참조하세요.

참고 항목

위의 설정은 SAS 또는 Microsoft Entra 인증을 통해 클레임의 유효성 검사를 우회하지 않습니다. 인증 유효성 검사는 항상 서비스가 defaultAction, publicNetworkAccess, privateEndpointConnections 설정으로 구성된 네트워크 유효성 검사의 유효성을 검사한 후에 실행됩니다.

Azure Portal

Azure Portal은 항상 최신 API 버전을 사용하여 속성을 가져오고 설정합니다. 이전에 defaultActionDeny로 설정하고 2021-01-01-preview 및 이전 버전을 사용하여 네임스페이스를 구성하고 0 IP 필터 및 VNet 규칙을 지정한 경우 포털은 이전에 네임스페이스의 네트워킹 페이지에서 선택한 네트워크를 확인했을 것입니다. 이제 모든 네트워크 옵션을 확인합니다.

Screenshot that shows the Public access page with the All networks option selected.

다음 단계

가상 네트워크에 대한 자세한 내용은 다음 링크를 참조하세요.