HDInsight 클러스터에서 Private Link 사용

이 문서에서는 Azure Private Link를 사용하여 Microsoft 백본 네트워크를 통해 네트워크에서 비공개로 HDInsight 클러스터에 연결하는 방법을 알아봅니다. 이 문서는 퍼블릭 연결을 제한하는 데 중점을 두는 Azure HDInsight의 클러스터 연결 제한 문서의 확장입니다. HDInsight 클러스터 및 종속 리소스에 대한 퍼블릭 연결이나 내부에서 퍼블릭 연결을 원하는 경우 Azure HDInsight에서 네트워크 트래픽 제어의 지침에 따라 클러스터 연결을 제한하는 것이 좋습니다.

Private Link는 가상 네트워크 피어링이 제공되지 않거나 사용하도록 설정되지 않은 네트워크 간 시나리오에서 사용할 수 있습니다.

참고 항목

퍼블릭 연결을 제한하는 것은 Private Link를 사용하도록 설정하기 위한 필수 조건이며 동일한 기능으로 간주되어서는 안 됩니다.

Private Link를 사용하여 HDInsight 클러스터에 연결하는 것은 선택적 기능이며 기본적으로 사용하지 않도록 설정됩니다. 이 기능은 Azure HDInsight에서 클러스터 연결 제한 문서에 설명된 대로 resourceProviderConnection 네트워크 속성이 아웃바운드로 설정된 경우에만 사용할 수 있습니다.

privateLink사용으로 설정하면 내부 SLB(표준 부하 분산 장치)가 생성되고 SLB마다 Azure Private Link 서비스가 프로비전됩니다. Private Link 서비스를 사용하면 프라이빗 엔드포인트에서 HDInsight 클러스터에 액세스할 수 있습니다.

Private Link 클러스터를 성공적으로 만드는 데는 많은 단계가 사용되므로 여기에서 개략적으로 설명했습니다. 아래 각 단계를 수행하여 모든 항목이 올바르게 설정되었는지 확인합니다.

1단계: 필수 조건 만들기

시작하려면 다음 리소스를 배포합니다(아직 만들지 않은 경우). 아래와 같이 HDInsight 클러스터가 배포될 서브넷에 연결하기 위해 최소한 리소스 그룹 1개, 가상 네트워크 2개, 네트워크 보안 그룹이 있어야 합니다.

Type 이름 목적
Resource group hdi-privlink-rg 공용 리소스를 함께 유지하는 데 사용됨
가상 네트워크 hdi-privlink-cluster-vnet 클러스터를 배포할 VNET
가상 네트워크 hdi-privlink-client-vnet 클라이언트가 클러스터에 연결할 VNET
네트워크 보안 그룹 hdi-privlink-cluster-vnet-nsg 클러스터 배포에 필요한 기본 NSG

참고 항목

NSG(네트워크 보안 그룹)는 간단히 배포할 수 있으며 클러스터 배포에 대한 NSG 규칙을 수정할 필요가 없습니다.

2단계: HDInsight 서브넷 구성

  • 서브넷에서 privateLinkServiceNetworkPolicies를 사용하지 않도록 설정합니다. 프라이빗 링크 서비스의 원본 IP 주소를 선택하려면 서브넷에서 명시적 사용 한 함 설정 privateLinkServiceNetworkPolicies이 필요합니다. Private Link 서비스에 대한 네트워크 정책을 비활성화하려면 여기의 지침을 따르세요.
  • 서브넷에서 서비스 엔드포인트를 사용하도록 설정합니다. Private Link HDInsight 클러스터를 성공적으로 배포하려면 클러스터 배포 전에 Microsoft.SQL, Microsoft.StorageMicrosoft.KeyVault 서비스 엔드포인트를 서브넷에 추가하는 것이 좋습니다. 서비스 엔드포인트는 트래픽을 가상 네트워크에서 Microsoft Azure 백본 네트워크의 서비스로 직접 라우팅할 있습니다. 트래픽을 Azure 백본 네트워크에 유지하면 서비스 트래픽에 영향을 주지 않고 강제 터널링을 통해 가상 네트워크의 아웃바운드 인터넷 트래픽을 계속 감사하고 모니터링할 수 있습니다.

3단계: NAT Gateway 또는 방화벽 배포

표준 부하 분산 장치는 기본 부하 분산 장치와 마찬가지로 퍼블릭 아웃바운드 NAT를 자동으로 제공하지 않습니다. Private Link 클러스터는 표준 부하 분산 장치를 사용하므로 아웃바운드, 퍼블릭 HDInsight 종속성에 연결하려면 방화벽에서 제공하는 NAT 또는 NAT Gateway 등의 고유한 NAT 솔루션을 제공해야 합니다.

NAT Gateway 배포(옵션 1)

NAT에 대해 방화벽 또는 NVA(네트워크 가상 어플라이언스)를 구성하지 않으려면 NAT Gateway를 사용하도록 선택할 수 있습니다. 시작하려면 가상 네트워크의 구성된 서브넷에 NAT Gateway(가상 네트워크의 새 공용 IP 주소 포함)를 추가합니다. 이 게이트웨이는 트래픽이 가상 네트워크 외부로 이동해야 하는 경우 개인 내부 IP 주소를 퍼블릭 주소로 변환해야 합니다.

기본 설정을 시작하려면:

  1. Azure Portal에서 ‘NAT Gateway’를 검색하고 만들기를 클릭합니다.

  2. NAT Gateway에서 다음 구성을 사용합니다. (여기에 모든 구성이 포함되는 것은 아니므로 기본값을 사용할 수 있습니다.)

    Config
    NAT Gateway 이름 hdi-privlink-nat-gateway
    공용 IP 접두사 새 공용 IP 접두사 만들기
    공용 IP 접두사 이름 hdi-privlink-nat-gateway-prefix
    공용 IP 접두사 크기 /28(16개 주소)
    가상 네트워크 hdi-privlink-cluster-vnet
    서브넷 이름 default
  3. NAT Gateway 배포가 완료되면 다음 단계로 이동할 준비가 된 것입니다.

방화벽 구성(옵션 2)

기본 설정을 시작하려면:

  1. AzureFirewallSubnet이라는 새 서브넷을 가상 네트워크에 추가합니다.
  2. 새 서브넷을 사용하여 새 방화벽을 구성하고 방화벽 정책을 추가합니다.
  3. 경로 테이블의 nextHopIpAddress 값으로 새 방화벽의 개인 IP 주소를 사용합니다.
  4. 가상 네트워크의 구성된 서브넷에 경로 테이블을 추가합니다.

HDInsight 클러스터는 여전히 아웃바운드 종속성에 액세스해야 합니다. 이 아웃바운드 종속성이 허용되지 않으면 클러스터 만들기에 실패할 수 있습니다. 방화벽 설정에 관한 자세한 내용은 Azure HDInsight에서 네트워크 트래픽 제어를 참조하세요.

4단계: Private Link 클러스터 배포

이 시점에서 모든 필수 조건이 처리되어야 하며 Private Link 클러스터를 배포할 준비가 되었습니다. 다음 다이어그램에서는 클러스터를 만들기 전에 필요한 네트워킹 구성 예제를 보여 줍니다. 이 예제에서는 모든 아웃바운드 트래픽이 사용자 정의 경로를 통해 Azure Firewall에 적용됩니다. 필요한 아웃바운드 종속성은 클러스터를 만들기 전에 방화벽에서 허용되어야 합니다. Enterprise Security Package 클러스터의 경우 가상 네트워크 피어링은 Microsoft Entra Domain Services에 대한 네트워크 연결을 제공할 수 있습니다.

클러스터를 만들기 전의 Private Link 환경 다이어그램.

클러스터 만들기

다음 JSON 코드 조각에는 프라이빗 HDInsight 클러스터를 만들기 위해 Azure Resource Manager 템플릿에서 구성해야 하는 두 가지 네트워크 속성이 포함됩니다.

networkProperties: {
    "resourceProviderConnection": "Outbound",
    "privateLink": "Enabled"
}

Private Link를 포함하여 많은 HDInsight 엔터프라이즈 보안 기능이 있는 전체 템플릿은 HDInsight 엔터프라이즈 보안 템플릿을 참조하세요.

PowerShell을 사용하여 클러스터를 만들려면 예제를 참조하세요.

Azure CLI를 사용하여 클러스터를 만들려면 예제를 참조하세요.

5단계: 프라이빗 엔드포인트 만들기

Azure는 Private Link 클러스터 배포 중에 Ambari 및 SSH 부하 분산 장치에 대한 Private Link 서비스를 자동으로 만듭니다. 클러스터가 배포된 후 클라이언트 VNET에 두 개의 프라이빗 엔드포인트를 만들어야 합니다. 하나는 Ambari용이고 다른 하나는 SSH 액세스용입니다. 그런 다음, 해당 프라이빗 엔드포인트를 클러스터 배포의 일부로 생성된 Private Link 서비스에 연결합니다.

프라이빗 엔드포인트를 만들려면 다음을 수행합니다.

  1. Azure Portal을 열고 ‘프라이빗 링크’를 검색합니다.

  2. 결과에서 {b>프라이빗 링크

  3. ‘프라이빗 엔드포인트 만들기’를 클릭하고 다음 구성을 사용하여 Ambari 프라이빗 엔드포인트를 설정합니다.

    Config
    속성 hdi-privlink-cluster
    리소스 종류 Microsoft.Network/privateLinkServices
    리소스 gateway-*(이 값은 클러스터의 HDI 배포 ID(예: gateway-4eafe3a2a67e4cd88762c22a55fe4654)와 일치해야 합니다.)
    가상 네트워크 hdi-privlink-client-vnet
    서브넷 기본값

    Private Link 기본 탭의 다이어그램.Private Link 리소스 탭의 다이어그램.Private Link 가상 네트워크 탭의 다이어그램.Private Link DNS 엔드포인트 탭의 다이어그램.Private Link 태그 탭의 다이어그램.Private Link 검토 탭의 다이어그램.

  4. 프로세스를 반복하여 다음 구성으로 SSH 액세스를 위한 또 다른 프라이빗 엔드포인트를 만듭니다.

    Config
    속성 hdi-privlink-cluster-ssh
    리소스 종류 Microsoft.Network/privateLinkServices
    리소스 headnode-*(이 값은 클러스터의 HDI 배포 ID(예: headnode-4eafe3a2a67e4cd88762c22a55fe4654)와 일치해야 합니다.)
    가상 네트워크 hdi-privlink-client-vnet
    서브넷 default

Important

KafkaRestProxy HDInsight 클러스터를 사용하는 경우 이 추가 단계에 따라 프라이빗 엔드포인트를 사용하도록 설정합니다.

프라이빗 엔드포인트가 만들어지면 이 설정 단계를 완료한 것입니다. 엔드포인트에 할당된 개인 IP 주소를 기록해 두지 않은 경우 아래 단계를 수행합니다.

  1. Azure Portal에서 클라이언트 VNET을 엽니다.
  2. '프라이빗 엔드포인트' 탭을 클릭합니다.
  3. 나열된 Ambari 및 ssh 네트워크 인터페이스가 모두 표시되어야 합니다.
  4. 각각을 클릭하고 'DNS 구성' 블레이드로 이동하여 개인 IP 주소를 확인합니다.
  5. 이러한 IP 주소는 클러스터에 연결하고 DNS를 올바르게 구성하는 데 필요하므로 기록해 둡니다.

6단계: 프라이빗 엔드포인트를 통해 연결하도록 DNS 구성

프라이빗 클러스터에 액세스하려면 프라이빗 DNS 영역을 통해 DNS 확인을 구성할 수 있습니다. azurehdinsight.net이라는 Azure 관리형 퍼블릭 DNS 영역에서 만든 Private Link 항목은 다음과 같습니다.

<clustername>        CNAME    <clustername>.privatelink
<clustername>-int    CNAME    <clustername>-int.privatelink
<clustername>-ssh    CNAME    <clustername>-ssh.privatelink

다음 이미지는 피어링되지 않거나 클러스터에 직접 연결되지 않은 가상 네트워크에서 클러스터에 액세스할 수 있도록 구성된 프라이빗 DNS 항목의 예를 보여 줍니다. Azure DNS 프라이빗 영역을 사용하여 *.privatelink.azurehdinsight.net FQDN(정규화된 도메인 이름)을 재정의하고 클라이언트 네트워크에서 프라이빗 엔드포인트의 IP 주소를 확인할 수 있습니다. 이 구성은 예제에서 <clustername>.azurehdinsight.net에만 사용되지만 다른 클러스터 엔드포인트로도 확장됩니다.

Private Link 아키텍처 다이어그램.

프라이빗 DNS 영역을 통해 DNS 확인을 구성하려면:

  1. Azure 프라이빗 DNS 영역을 만듭니다. (여기에 모든 구성이 포함되는 것은 아니므로 다른 모든 구성은 기본값으로 남아 있음)

    Config
    속성 privatelink.azurehdinsight.net

    프라이빗 DNS 영역 다이어그램.

  2. Ambari의 프라이빗 DNS 영역에 레코드 집합을 추가합니다.

    Config
    속성 YourPrivateLinkClusterName
    Type A – IPv4 주소의 별칭 레코드
    TTL 1
    TTL 단위 시간
    IP 주소 Ambari 액세스를 위한 프라이빗 엔드포인트의 개인 IP

    프라이빗 DNS 영역 추가 레코드 다이어그램.

  3. SSH의 프라이빗 DNS 영역에 레코드 집합을 추가합니다.

    Config
    속성 YourPrivateLinkClusterName-ssh
    Type A – IPv4 주소의 별칭 레코드
    TTL 1
    TTL 단위 시간
    IP 주소 SSH 액세스를 위한 프라이빗 엔드포인트의 개인 IP

    프라이빗 링크 DNS 영역 추가 SSH 레코드 다이어그램.

Important

KafkaRestProxy HDInsight 클러스터를 사용하는 경우 이 추가 단계에 따라 프라이빗 엔드포인트를 통해 연결하도록 DNS를 구성합니다.

  1. Virtual Network 링크를 추가하여 프라이빗 DNS 영역을 클라이언트 VNET과 연결합니다.

    1. Azure Portal에서 프라이빗 DNS 영역을 엽니다.
    2. ‘가상 네트워크 링크’ 탭을 클릭합니다.
    3. ‘추가’ 단추를 클릭합니다.
    4. 세부 정보 입력: 링크 이름, 구독 및 Virtual Network(클라이언트 VNET)
    5. 저장을 클릭합니다.

    가상 네트워크 링크 다이어그램.

7단계: 클러스터 연결 확인

마지막 단계는 클러스터에 대한 연결을 테스트하는 것입니다. 이 클러스터는 격리되거나 프라이빗이므로 공용 IP 또는 FQDN을 사용하여 클러스터에 액세스할 수 없습니다. 대신 다음과 같은 몇 가지 옵션이 있습니다.

  • 온-프레미스 네트워크에서 클라이언트 VNET에 대한 VPN 액세스 설정
  • 클라이언트 VNET에 VM을 배포하고 이 VM에서 클러스터에 액세스

이 예제에서는 다음 구성으로 클라이언트 VNET에 VM을 배포하여 연결을 테스트합니다.

Config
가상 머신 이름 hdi-privlink-client-vm
이미지 Windows 10 Pro, 버전 2004 - Gen1
퍼블릭 인바운드 포트 선택한 포트 허용
인바운드 포트 선택 RDP(3389)
적합한 Windows 10 라이선스가 있음을 확인합니다... 선택
가상 네트워크 hdi-privlink-client-vnet
서브넷 default

클라이언트 VM이 배포되면 Ambari 및 SSH 액세스를 모두 테스트할 수 있습니다.

Ambari 액세스를 테스트하려면:

  1. VM에서 웹 브라우저를 엽니다.
  2. 클러스터의 일반 FQDN https://<clustername>.azurehdinsight.net으로 이동합니다.
  3. Ambari UI가 로드되면 Ambari 액세스에 대한 구성이 올바릅니다.

SSH 액세스를 테스트하려면:

  1. 명령 프롬프트를 열어 터미널 창을 표시합니다.
  2. 터미널 창에서 SSH ssh sshuser@<clustername>.azurehdinsight.net을 사용하여 클러스터에 연결해 봅니다(“sshuser”를 클러스터에 대해 만든 ssh 사용자로 바꾸기).
  3. 연결할 수 있는 경우 SSH 액세스에 대한 구성이 올바릅니다.

HDInsight에 대한 프라이빗 엔드포인트 관리

Azure HDInsight 클러스터에 대한 프라이빗 엔드포인트를 사용하면 가상 네트워크의 클라이언트가 Private Link를 통해 클러스터에 안전하게 액세스할 수 있습니다. 가상 네트워크의 클라이언트와 HDInsight 클러스터 간 네트워크 트래픽은 Microsoft 백본 네트워크를 통해 트래버스되어 퍼블릭 인터넷에서 노출되지 않습니다.

프라이빗 엔드포인트 관리 환경의 다이어그램.

Private Link 서비스 소비자(예: Azure Data Factory)는 다음 두 가지 연결 승인 방법 중에서 선택할 수 있습니다.

  • 자동: 서비스 소비자에게 HDInsight 리소스에 대한 Azure RBAC(역할 기반 액세스 제어) 권한이 있는 경우 소비자는 자동 승인 방법을 선택할 수 있습니다. 이 경우 요청이 HDInsight 리소스에 도달하면 HDInsight 리소스의 조치가 필요하지 않으며 연결이 자동으로 승인됩니다.
  • 수동: 서비스 소비자에게 HDInsight 리소스에 대한 Azure RBAC 권한이 없는 경우 소비자는 수동 승인 방법을 선택할 수 있습니다. 이 경우 연결 요청은 HDInsight 리소스에 보류 중으로 표시됩니다. HDInsight 리소스는 연결이 설정되기 전에 요청을 수동으로 승인해야 합니다.

프라이빗 엔드포인트를 관리하려면 Azure Portal의 클러스터 보기에서 보안 + 네트워킹 아래에 있는 네트워킹 섹션으로 이동합니다. 여기서는 모든 기존 연결, 연결 상태, 프라이빗 엔드포인트 세부 정보 등을 볼 수 있습니다.

기존 연결을 승인, 거부 또는 제거할 수도 있습니다. 프라이빗 연결을 만들 때 연결하려는 HDInsight 하위 리소스(예: 게이트웨이 또는 헤드 노드)를 지정할 수 있습니다.

다음 표에서는 다양한 HDInsight 리소스 작업과 프라이빗 엔드포인트의 결과 연결 상태를 보여 줍니다. HDInsight 리소스는 나중에 소비자 개입 없이 프라이빗 엔드포인트 연결의 연결 상태를 변경할 수도 있습니다. 이 작업은 소비자 측 엔드포인트의 상태를 업데이트합니다.

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

다음 단계