Azure Relay 하이브리드 연결 만들기

완료됨

Azure Relay는 보안 설정을 다시 구성할 필요 없이 네트워크 경계와 방화벽 전체에 서비스를 연결하는 방법을 제공합니다.

금융 기관의 모든 시스템을 클라우드로 이동하려고 합니다. 그러나 관할 당국의 규정에 따라 신용 조회 서비스를 마이그레이션할 수 없습니다. 이 서비스는 데이터 보호를 위해 온-프레미스로 유지되어야 합니다. 클라우드 서비스를 신용 조회 서비스에 연결하는 방법이 필요합니다. 온-프레미스 방화벽에서 추가 포트를 열거나 VPN(가상 사설망)을 구축하지 않는 것이 가장 바람직해 보입니다.

이 단원에서는 Azure Relay가 이러한 연결을 제공하는 방법을 알아봅니다.

Azure Relay란?

많은 조직에서 시스템을 클라우드로 마이그레이션하고 있습니다. 이 프로세스는 흔히 단계별 접근 방식으로 구성 요소별로 수행됩니다. 이러한 접근 방식으로 마이그레이션 중에 발생할 수 있는 문제의 영향을 제한할 수 있지만 해결해야 할 다른 문제도 있습니다. 예를 들어 새로 마이그레이션한 클라우드 구성 요소는 온-프레미스에 남아 있지만 방화벽이나 기타 보안 시스템으로 보호되는 다른 구성 요소와 통신해야 하는 경우가 많습니다.

또 온-프레미스 서비스를 클라우드로 마이그레이션할 수 없다는 사실을 알게 되는 경우도 있습니다. 예를 들어 관할 당국이 클라우드 시스템에서 준수할 수 없는 보안 요구 사항을 금융 시스템에 추가 적용할 수 있습니다.

이와 같은 상황에서 온-프레미스 서비스는 인터넷 클라이언트 또는 클라우드 구성 요소에서 주소를 지정할 수 있어야 합니다. 이 통신을 사용하도록 설정하기 위해 방화벽 포트를 열 수 있지만 이러한 방법으로 의도하지 않은 결과가 발생할 수 있습니다. 예를 들어 의도한 것과 다른 서비스를 실수로 노출할 수 있습니다. 규모가 큰 조직에서는 방화벽 관리 권한이 없을 수 있습니다. 보안 체계를 변경하려면 가져오는 데 시간이 소요되는 높은 수준의 권한 부여가 필요할 수 있습니다.

Azure Relay는 클라우드에서 온-프레미스 및 인터넷 기반 구성 요소를 연결할 수 있는 지점을 제공하여 이러한 종류의 문제를 해결합니다. 온-프레미스 시스템에서 이 연결을 시작하기 때문에 어떤 방식으로든 방화벽 포트를 열거나 온-프레미스 네트워크를 다시 구성할 필요가 없습니다.

하이브리드 연결 및 Windows Communication Foundation 연결

Azure Relay는 Azure 함수 및 온-프레미스 서비스와 같은 두 구성 요소 사이의 연결을 설정합니다. 연결이 설정되면 직접 연결된 것처럼 릴레이를 통해 요청 및 응답을 교환할 수 있습니다. Azure Relay에서 다음과 같은 두 가지 유형의 연결을 만들 수 있습니다.

  • 하이브리드 연결: 하이브리드 연결은 WebSocket 또는 HTTP 표준을 사용하는 이진 데이터의 양방향 스트림입니다. 이러한 연결은 개방형 표준을 기반으로 하기 때문에 거의 모든 언어 또는 코딩 프레임워크에서 사용할 수 있습니다. 예를 들어 이를 사용하여 온-프레미스 Node.js 서버를 C# 및 .NET Framework에 작성된 Azure 웹 작업에 연결할 수 있습니다.
  • WCF 연결: 일부 개발자는 WCF(Windows Communication Foundation)를 사용하여 원격 프로시저 호출을 사용하도록 설정합니다. WCF는 이전 버전의 .NET Framework와의 네트워크 통신에 일반적으로 사용됩니다. WCF는 이제 레거시 프로토콜로 간주되지만 이전 애플리케이션에서는 아직 흔히 사용됩니다. Azure Relay는 WCF를 지원하기 때문에 구성 요소를 다시 작성할 필요 없이 이 표준을 사용하는 기존 .NET Framework 구성 요소와 함께 사용할 수 있습니다.

WCF를 사용하는 기존 .NET Framework 구성 요소를 지원하지 않는 한 하이브리드 연결을 사용합니다.

WebSocket 연결 및 HTTP 연결

하이브리드 연결은 다음 프로토콜 중 하나를 사용할 수 있습니다.

  • HTTP: 이 상태 비저장 프로토콜은 GET 및 POST와 같은 요청으로 구성되며 웹 서버와 브라우저 간에 웹 페이지를 전송하는 데 사용됩니다. 일반적으로 HTTP는 SSL(Secure Sockets Layer)을 통해 요청이 보호되는 경우 TCP 포트 80 또는 443을 사용합니다. 이 프로토콜은 광범위하게 지원되며 코드 작성이 쉽습니다. 그러나 이 프로토콜은 상태 비저장이므로 지속적인 통신을 위한 효율성이 낮습니다.
  • WebSocket: 이 프로토콜은 상태 비저장 HTTP 프로토콜보다 더 효율적인 포트 80 또는 443을 통해 전체 이중 통신 채널을 만듭니다. WebSocket 연결은 단일 요청 및 응답만이 아닌 많은 메시지로 구성된 통신인 경우 특히 효율적입니다.

이 모듈에서 프로세스는 단일 응답이 발생하는 신용 조회에 대한 간단한 요청이므로 하이브리드 연결과 HTTP 프로토콜을 사용합니다.

Azure Relay 작동 방식

클라우드 호스팅 및 온-프레미스 구성 요소 모두 Azure Relay에 대한 연결을 시작하기 때문에 온-프레미스 방화벽은 개입하지 않습니다. 연결이 설정되면 양방향으로 통신을 보낼 수 있습니다.

다음 다이어그램에서는 연결을 만드는 방법을 보여 줍니다.

Diagram showing how Azure Relay exchanges messages.

  1. 수신 클라이언트에서 Azure Relay 서비스에 수신 요청을 보냅니다. Azure Load Balancer에서 이 요청을 게이트웨이 노드 중 하나로 라우팅합니다.
  2. Azure Relay 서비스에서 게이트웨이 저장소에 릴레이를 만듭니다.
  3. 송신 클라이언트에서 수신 서비스에 연결하라는 요청을 보냅니다.
  4. 요청을 수신한 게이트웨이에서 게이트웨이 저장소에 있는 릴레이를 조회합니다.
  5. 게이트웨이에서 연결 요청을 게이트웨이 저장소에 언급된 올바른 게이트웨이로 전달합니다.
  6. 게이트웨이에서 송신 클라이언트에 가장 가까운 게이트웨이 노드에 대한 임시 채널을 만들도록 요구하는 요청을 수신 클라이언트에 보냅니다.
  7. 수신 클라이언트는 송신 클라이언트에서 가장 가까운 게이트웨이에 대한 임시 채널을 만듭니다. 이제 게이트웨이를 통해 클라이언트 간의 연결이 수립되었으므로 클라이언트가 서로 메시지를 교환할 수 있습니다.
  8. 게이트웨이는 메시지를 송신 클라이언트에서 수신 대기 클라이언트로 전달합니다.
  9. 게이트웨이는 메시지를 송신 클라이언트에서 수신 대기 클라이언트로 전달합니다.

릴레이를 만드는 방법

릴레이를 만들려면 servicebus.windows.net 도메인 내에 고유한 네임스페이스가 필요합니다. 또한 릴레이에 대한 구독, 리소스 그룹, 위치를 지정합니다. 이러한 지정은 대부분의 클라이언트에 가깝게 이루어져야 합니다.

클라이언트에서 연결할 때 수행할 수 있는 작업을 제어하려면 공유 액세스 정책을 사용합니다. 이러한 정책을 사용하여 클라이언트가 릴레이에 메시지를 보낼 수 있는지, 아니면 릴레이에서 메시지를 읽을 수 있는지의 허용 여부를 지정할 수 있습니다. 각 공유 액세스 정책에는 기본 키와 보조 키가 있습니다. 릴레이에 연결하려면 각 클라이언트가 이러한 키 중 하나를 제공해야 합니다.

마지막으로 네임스페이스에 연결을 만들어야 합니다. 이는 하이브리드 연결 또는 WCF 연결일 수 있습니다.