Azure App Service 하이브리드 연결

하이브리드 연결은 Azure의 서비스인 동시에 Azure App Service의 기능입니다. 서비스로서, App Service에서 사용되는 것 이상의 기능과 용도가 있습니다. 하이브리드 연결 및 App Service 외부에서의 사용법을 자세히 알아보려면 Azure Relay 하이브리드 연결을 참조하세요.

App Service 내에서 하이브리드 연결을 사용하여 포트 443을 통해 Azure로 아웃바운드 호출을 수행할 수 있는 네트워크의 애플리케이션 리소스에 액세스할 수 있습니다. 하이브리드 연결은 앱에서 TCP 엔드포인트로의 액세스를 제공하며 앱에 액세스하는 새로운 방법을 사용하도록 설정하지 않습니다. App Service에서 사용되는 것처럼 각 하이브리드 연결은 단일 TCP 호스트 및 포트 조합에 상호 연결됩니다. 이 기능을 사용하면 앱이 TCP 엔드포인트인 경우 모든 OS의 리소스에 액세스할 수 있습니다. 하이브리드 연결 기능은 애플리케이션 프로토콜이 무엇인지 또는 사용자가 무엇에 액세스하고 있는지 인식하거나 상관하지 않습니다. 네트워크 액세스만 제공합니다.

작동 방법

하이브리드 연결에는 원하는 엔드포인트와 Azure에 연결할 수 있는 릴레이 에이전트가 배포되어야 합니다. 릴레이 에이전트인 하이브리드 연결 관리자(HCM)는 포트 443을 통해 Azure Relay를 호출합니다. 웹앱 사이트에서 App Service 인프라는 애플리케이션을 대신하여 Azure Relay에도 연결합니다. 조인된 연결을 통해 앱은 원하는 엔드포인트에 액세스할 수 있습니다. 연결은 인증 및 권한 부여를 위한 보안 및 SAS(공유 액세스 서명) 키에 TLS 1.2를 사용합니다.

Diagram of Hybrid Connection high-level flow.

앱이 구성된 하이브리드 연결 엔드포인트와 일치하는 DNS 요청을 실행하면 아웃바운드 TCP 트래픽이 하이브리드 연결을 통해 리디렉션됩니다.

참고 항목

이는 항상 하이브리드 연결에 DNS 이름을 사용해야 함을 의미합니다. 일부 클라이언트 소프트웨어는 엔드포인트에서 IP 주소를 사용하는 경우 DNS 조회를 수행하지 않습니다.

App Service 하이브리드 연결의 장점

하이브리드 연결 기능에는 다음과 같은 많은 장점이 있습니다.

  • 앱이 온-프레미스 시스템 및 서비스에 안전하게 액세스할 수 있습니다.
  • 이 기능에는 인터넷에 액세스할 수 있는 엔드포인트가 필요하지 않습니다.
  • 빠르고 쉽게 설정할 수 있습니다. 게이트웨이가 필요하지 않음
  • 각 하이브리드 연결이 단일 호스트:포트 조합과 일치하므로 보안에 도움이 됩니다.
  • 일반적으로 방화벽 구멍이 필요하지 않습니다. 연결은 모두 표준 웹 포트를 통한 아웃바운드입니다.
  • 기능이 네트워크 수준이므로 이는 앱에서 사용되는 언어 및 엔드포인트에서 사용되는 기술과 관계없음을 의미합니다.
  • 단일 앱에서 여러 네트워크에 액세스하는 데 사용될 수 있습니다.
  • Windows 앱 및 Linux 앱에 대해 GA로 지원됩니다. Windows 사용자 지정 컨테이너에는 지원되지 않습니다.

하이브리드 연결로 수행할 수 없는 작업

하이브리드 연결로 수행할 수 없는 작업에는 다음이 포함됩니다.

  • 드라이브를 탑재합니다.
  • UDP를 사용합니다.
  • FTP 수동 모드 또는 확장 수동 모드 같은 동적 포트를 사용하는 TCP 기반 서비스에 액세스합니다.
  • UDP가 필요할 수 있으므로 LDAP를 지원합니다.
  • App Service 작업자를 도메인에 가입할 수 없으므로 Active Directory를 지원합니다.

앱에 하이브리드 연결 추가 및 만들기

하이브리드 연결을 만들려면 Azure Portal로 이동하고 해당 앱을 선택합니다. 네트워킹>하이브리드 연결 엔드포인트 구성을 선택합니다. 여기에서 앱에 구성된 하이브리드 연결을 볼 수 있습니다.

Screenshot of Hybrid Connection list.

새 하이브리드 연결을 추가하려면 [+]하이브리드 연결 추가를 선택합니다. 이미 만든 하이브리드 연결 목록이 표시됩니다. 앱에 하나 이상을 추가하려면 원하는 항목을 선택한 다음 선택한 하이브리드 연결 추가를 선택합니다.

Screenshot of Hybrid Connection portal.

새 하이브리드 연결을 만들려면 새 하이브리드 연결 만들기를 선택합니다. 다음을 지정합니다.

  • 하이브리드 연결 이름
  • 엔드포인트 호스트 이름
  • 엔드포인트 포트
  • 사용할 Service Bus 네임스페이스

Screenshot of Create new hybrid connection dialog box.

모든 하이브리드 연결은 Service Bus 네임스페이스에 연결되고 각 Service Bus 네임스페이스는 Azure 지역에 있습니다. 네트워크로 인한 대기 시간을 피하려면 앱과 같은 지역에서 Service Bus 네임스페이스 사용을 시도하는 것이 중요합니다.

앱에서 하이브리드 연결을 제거하려면 해당 항목을 마우스 오른쪽 단추로 클릭하고 연결 끊기를 선택합니다.

하이브리드 연결이 앱에 추가되면 간단히 해당 항목을 선택하여 세부 정보를 볼 수 있습니다.

Screenshot of Hybrid connections details.

Azure Relay 포털에서 하이브리드 연결 만들기

앱 내의 포털 환경 외에도 Azure Relay 포털에서 하이브리드 연결을 만들 수 있습니다. 하이브리드 연결을 App Service에서 사용하려면:

  • 클라이언트 권한 부여가 필요합니다.
  • 호스트:포트 조합을 값으로 포함하는 엔드포인트라는 메타데이터 항목이 있어야 합니다.

하이브리드 연결 및 App Service 계획

App Service 하이브리드 연결은 기본, 표준, 프리미엄 및 격리 요금제 SKU에서만 사용할 수 있습니다. 사용량 계획의 함수 앱에는 하이브리드 연결을 사용할 수 없습니다. 요금제에는 연결된 제한이 있습니다.

요금제 요금제에서 사용 가능한 하이브리드 연결 수
기본 플랜당 5개
Standard 플랜당 25개
Premium(v1-v3) 앱당 220개
격리됨(v1-v2) 앱당 220개

App Service 계획 UI는 어떤 앱에서 얼마나 많은 하이브리드 연결을 사용하고 있는지 보여줍니다.

Screenshot of App Service plan properties.

세부 정보를 확인할 하이브리드 연결을 선택합니다. 앱 보기에서 확인한 모든 정보를 볼 수 있습니다. 동일한 계획에서 해당 하이브리드 연결을 사용하고 있는 다른 앱의 수도 확인할 수 있습니다.

App Service 요금제에 사용할 수 있는 하이브리드 연결 엔드포인트 수에는 제한이 있습니다. 하지만 사용된 각 하이브리드 연결은 해당 계획의 여러 앱에서 사용할 수 있습니다. 예를 들어 App Service 계획에서 5개의 개별 앱에 사용되는 단일 하이브리드 연결은 하나의 하이브리드 연결로 간주됩니다.

가격 책정

App Service 요금제 SKU 요구 사항을 충족해야 할 뿐만 아니라 하이브리드 연결을 사용할 때는 추가 비용도 발생합니다. 하이브리드 연결에서 사용되는 각 수신기에 대해 요금이 부과됩니다. 수신기는 하이브리드 연결 관리자입니다. 두 개의 하이브리드 연결 관리자가 5개의 하이브리드 연결을 지원하는 경우 수신기는 10개가 됩니다. 자세한 내용은 Service Bus 가격을 참조하세요.

하이브리드 연결 관리자

하이브리드 연결 기능에는 하이브리드 연결 엔드포인트를 호스트하는 네트워크의 릴레이 에이전트가 필요합니다. 이 릴레이 에이전트를 HCM(하이브리드 연결 관리자)이라고 합니다. HCM을 다운로드하려면 Azure Portal의 앱에서 네트워킹>하이브리드 연결 엔드포인트 구성을 선택합니다.

이 도구는 Windows Server 2012 이상에서 실행됩니다. HCM은 서비스로 실행되며, 포트 443에서 Azure Relay에 아웃바운드로 연결됩니다.

HCM을 설치한 후 HybridConnectionManagerUi.exe를 실행하여 도구의 UI를 사용할 수 있습니다. 이 파일은 하이브리드 연결 관리자 설치 디렉터리에 있습니다. Windows 10에서는 검색 상자에서 하이브리드 연결 관리자 UI를 검색할 수도 있습니다.

Screenshot of Hybrid Connection Manager.

HCM UI를 시작하면 가장 먼저 이 HCM 인스턴스로 구성된 하이브리드 연결을 모두 나열한 테이블이 표시됩니다. 변경하려는 경우 먼저 Azure로 인증합니다.

HCM에 하나 이상의 하이브리드 연결을 추가하려면 다음을 수행합니다.

  1. HCM UI를 시작합니다.

  2. 새 하이브리드 연결 추가를 선택합니다. Screenshot of Configure New Hybrid Connections.

  3. Azure 계정으로 로그인하여 구독에 제공되는 하이브리드 연결을 가져옵니다. HCM은 이 단계 이상으로 Azure 계정을 계속 사용하지 않습니다.

  4. 구독을 선택합니다.

  5. HCM이 릴레이할 하이브리드 연결을 선택합니다. Screenshot of Hybrid Connections.

  6. 저장을 선택합니다.

이제 추가한 하이브리드 연결을 볼 수 있습니다. 구성된 하이브리드 연결을 선택하여 세부 정보를 볼 수도 있습니다.

Screenshot of Hybrid Connection Details.

구성된 하이브리드 연결을 지원하려면 HCM에 다음이 필요합니다.

  • 포트 443을 통한 Azure에 대한 TCP 액세스
  • 하이브리드 연결 엔드포인트에 대한 TCP 액세스
  • 엔드포인트 호스트 및 Service Bus 네임스페이스에서 DNS 조회를 수행하는 기능 즉, Azure 릴레이 연결의 호스트 이름은 HCM을 호스팅하는 컴퓨터에서 확인할 수 있어야 합니다.

참고 항목

Azure Relay는 연결을 위해 웹 소켓을 사용합니다. 이 기능은 Windows Server 2012 이상에서만 사용할 수 있습니다. 따라서 HCM은 Windows Server 2012 이전 버전에서 지원되지 않습니다.

중복

각 HCM은 여러 하이브리드 연결을 지원할 수 있습니다. 특정 하이브리드 연결이 여러 HCM에서 지원될 수도 있습니다. 기본 동작은 특정 엔드포인트에 대해 구성된 HCM을 통해 트래픽을 라우팅하는 것입니다. 네트워크에서 하이브리드 연결에 대한 고가용성이 필요한 경우에는 개별 컴퓨터에서 여러 HCM을 실행합니다. Relay 서비스가 HCM에 트래픽을 분산하는 데 사용하는 부하 분산 알고리즘은 임의 할당입니다.

수동으로 하이브리드 연결 추가

구독 외부에서 사용자가 특정 하이브리드 연결에 대한 HCM 인스턴스를 호스트할 수 있도록 하려면 해당 하이브리드 연결에 대한 게이트웨이 연결 문자열을 공유합니다. Azure Portal의 하이브리드 연결 속성에서 게이트웨이 연결 문자열을 볼 수 있습니다. 이 문자열을 사용하려면 HCM에서 수동으로 입력을 선택하고 게이트웨이 연결 문자열에 붙여넣습니다.

Manually add a Hybrid Connection.

업그레이드

문제를 해결하거나 개선 기능을 제공하기 위해 하이브리드 연결 관리자가 정기적으로 업데이트됩니다. 업그레이드가 릴리스되면 HCM UI에 팝업이 표시됩니다. 업그레이드를 적용하면 변경 내용이 적용되고 HCM이 다시 시작됩니다.

프로그래밍 방식으로 앱에 하이브리드 연결 추가

하이브리드 연결에 대한 Azure CLI 지원이 있습니다. 제공된 명령은 앱과 App Service 요금제 수준 모두에서 작동합니다. 앱 수준 명령은 다음과 같습니다.

az webapp hybrid-connection

Group
    az webapp hybrid-connection : Methods that list, add and remove hybrid-connections from webapps.
        This command group is in preview. It may be changed/removed in a future release.
Commands:
    add    : Add a hybrid-connection to a webapp.
    list   : List the hybrid-connections on a webapp.
    remove : Remove a hybrid-connection from a webapp.

App Service 요금제 명령을 사용하면 지정된 하이브리드 연결에서 사용할 키를 설정할 수 있습니다. 각 하이브리드 연결에는 기본 및 보조라는 두 개의 키가 설정되어 있습니다. 아래 명령에서 기본 키 또는 보조 키를 사용하도록 선택할 수 있습니다. 이 옵션을 사용하면 정기적으로 키를 다시 생성하려는 경우 키를 교체할 수 있습니다.

az appservice hybrid-connection --help

Group
    az appservice hybrid-connection : A method that sets the key a hybrid-connection uses.
        This command group is in preview. It may be changed/removed in a future release.
Commands:
    set-key : Set the key that all apps in an appservice plan use to connect to the hybrid-
                connections in that appservice plan.

하이브리드 연결 보안

기본 Azure Service Bus Relay에 대한 충분한 권한이 있는 사용자가 기존 하이브리드 연결을 다른 App Service Web Apps에 추가할 수 있습니다. 다른 사용자가 동일한 하이브리드 연결을 다시 사용하지 못하도록 해야 하는 경우(예: 대상 리소스가 무단 액세스를 방지하는 다른 보안 조치가 마련되지 않은 서비스인 경우) Azure Service Bus Relay에 대한 액세스를 잠금 처리해야 합니다.

릴레이에 대한 Reader 액세스 권한이 있는 사용자는 Azure Portal의 Web App에 하이브리드 연결을 추가 하려고 할 때 하이브리드 연결을 수 있지만 릴레이 연결을 설정하는 데 사용되는 연결 문자열을 검색하는 권한이 없는 사용자는 이 연결을 추가할 수 없습니다. 하이브리드 연결을 추가하려면 listKeys 권한(Microsoft.Relay/namespaces/hybridConnections/authorizationRules/listKeys/action)이 있어야 합니다. Contributor 역할 또는 릴레이에 이 권한을 포함하는 다른 역할을 통해 사용자는 하이브리드 연결을 사용하고 이를 자체 Web Apps에 추가할 수 있습니다.

하이브리드 연결 관리

하이브리드 연결에 대한 엔드포인트 호스트 또는 포트를 변경해야 하는 경우 다음 단계를 따릅니다.

  1. 연결을 선택하고 하이브리드 연결 세부 정보 창의 왼쪽 상단에서 제거를 선택하여 로컬 컴퓨터의 하이브리드 연결 관리자에서 하이브리드 연결을 제거합니다.
  2. App Service 네트워킹 페이지에서 하이브리드 연결로 이동하여 App Service에서 하이브리드 연결을 해제합니다.
  3. 업데이트해야 하는 엔드포인트의 릴레이로 이동하고 왼쪽 탐색 메뉴의 엔티티에서 하이브리드 연결을 선택합니다.
  4. 업데이트할 하이브리드 연결을 선택하고 왼쪽 탐색 메뉴의 설정에서 속성을 선택합니다.
  5. 변경하고 상단의 변경 내용 저장을 누릅니다.
  6. App Service의 하이브리드 연결 설정으로 돌아가서 하이브리드 연결을 다시 추가합니다. 엔드포인트가 의도한 대로 업데이트되었는지 확인합니다. 목록에 하이브리드 연결이 표시되지 않으면 5~10분 후에 새로 고침합니다.
  7. 로컬 컴퓨터의 하이브리드 연결 관리자로 돌아가서 연결을 다시 추가합니다.

문제 해결

"연결됨" 상태는 하나 이상의 HCM이 해당 하이브리드 연결로 구성되어 Azure에 연결할 수 있음을 의미합니다. 하이브리드 연결 상태가 연결됨으로 표시되지 않으면 Azure에 액세스할 수 있는 HCM에 하이브리드 연결이 구성되지 않은 것입니다. HCM이 연결되지 않음으로 표시될 때 몇 가지 확인할 사항이 있습니다.

  • 호스트가 443 포트에서 Azure에 대한 아웃바운드 액세스를 보유합니까? PowerShell 명령 Test-NetConnection Destination -P Port를 사용하여 HCM 호스트에서 테스트할 수 있습니다

  • HCM이 잘못된 상태에 있을 수 있습니까? ‘Azure 하이브리드 연결 관리자 서비스" 로컬 서비스를 다시 시작해 보세요.

  • 충돌하는 소프트웨어가 설치되어 있나요? 하이브리드 연결 관리자는 Biztalk 하이브리드 연결 관리자 또는 Windows Server용 Service Bus와 함께 사용할 수 없습니다. HCM을 설치할 때 이러한 패키지의 모든 버전을 먼저 제거해야 합니다.

  • HCM 호스트와 Azure 사이에 방화벽이 있나요? 그런 경우 하이브리드 연결을 서비스하는 Service Bus 엔드포인트 URL Service Bus 게이트웨이 모두에 대한 아웃바운드 액세스를 허용해야 합니다.

    • 하이브리드 연결 관리자 UI에서 Service Bus 엔드포인트 URL을 찾을 수 있습니다.

    Screenshot of Hybrid Connection Service Bus endpoint.

    • Service Bus 게이트웨이는 요청을 하이브리드 연결에 받아들이고 Azure Relay를 통해 전달하는 리소스입니다. 128개의 게이트웨이를 모두 허용 목록에 추가해야 합니다. 게이트웨이는 G#-prod-[스탬프]-sb.servicebus.windows.net 형식입니다. 여기서 "#"은 0에서 127 사이의 숫자이고 "스탬프"는 Service Bus 엔드포인트가 있는 Azure 데이터 센터 내의 인스턴스 이름입니다.
      • 와일드카드를 사용할 수 있는 경우 "*.servicebus.windows.net"을 허용 목록에 추가할 수 있습니다.

      • 와일드카드를 사용할 수 없는 경우 128개 게이트웨이를 모두 허용 목록에 추가해야 합니다.

        Service Bus 엔드포인트 URL에서 "nslookup"을 사용하여 스탬프를 찾을 수 있습니다.

        Screenshot of terminal showing where to find the stamp name for the Service Bus.

        이 예제에서 스탬프는 "sn3-010"입니다. Service Bus 게이트웨이를 허용 목록에 추가하려면 다음 항목이 필요합니다.

        G0-prod-sn3-010-sb.servicebus.windows.net
        G1-prod-sn3-010-sb.servicebus.windows.net
        G2-prod-sn3-010-sb.servicebus.windows.net
        G3-prod-sn3-010-sb.servicebus.windows.net
        ...
        G126-prod-sn3-010-sb.servicebus.windows.net
        G127-prod-sn3-010-sb.servicebus.windows.net

상태가 연결됨이지만 앱에서 엔드포인트에 도달할 수 없는 경우 다음을 수행합니다.

  • 하이브리드 연결에서 DNS 이름을 사용하고 있는지 확인합니다. IP 주소를 사용하는 경우 필요한 클라이언트 DNS 조회가 발생하지 않을 수 있습니다. 웹앱에서 실행 중인 클라이언트가 DNS 조회를 수행하지 않으면 하이브리드 연결이 작동하지 않습니다.
  • 하이브리드 연결에 사용된 DNS 이름이 HCM 호스트에서 확인될 수 있는지 확인합니다. nslookup EndpointDNSname을 사용하여 확인을 점검합니다. 여기서 EndpointDNSname은 하이브리드 연결 정의에서 사용되는 것에 정확히 일치합니다.
  • PowerShell 명령 Test-NetConnection EndpointDNSname -P Port를 사용하여 HCM 호스트에서 엔드포인트로의 액세스를 테스트합니다. HCM 호스트에서 엔드포인트에 도달할 수 없는 경우 대상 호스트의 호스트 기반 방화벽을 포함하여 두 호스트 사이의 방화벽을 점검합니다.
  • App Service on Linux를 사용하는 경우 엔드포인트 호스트로 "localhost"를 사용하고 있지 않은지 확인합니다. 대신 로컬 컴퓨터의 리소스와 연결을 만들려는 경우 컴퓨터 이름을 사용합니다.

App Service에서 tcpping 명령줄 도구는 고급 도구(Kudu) 콘솔에서 호출할 수 있습니다. 이 도구를 통해 TCP 엔드포인트에 액세스할 수 있는지 알 수 있지만 하이브리드 연결 엔드포인트에 액세스할 수 있는지는 알 수 없습니다. 하이브리드 연결 엔드포인트에 대해 콘솔의 도구를 사용하면 호스트:포트 조합을 사용한다는 것만 확인하게 됩니다.

엔드포인트에 대한 명령줄 클라이언트가 있는 경우 앱 콘솔에서 연결을 테스트할 수 있습니다. 예를 들어, curl을 사용하여 웹 서버 엔드포인트에 대한 액세스를 테스트할 수 있습니다.