다음을 통해 공유


Azure HDInsight ID Broker(HIB)

이 문서에서는 Azure HDInsight ID Broker 기능을 설정하고 사용하는 방법을 설명합니다. 이 기능을 사용하면 Microsoft Entra Domain Services에서 레거시 암호 해시 없이 다단계 인증을 적용하면서 Apache Ambari에 대한 최신 OAuth 인증을 가져올 수 있습니다.

개요

HDInsight ID Broker는 다음과 같은 시나리오에서 복잡한 인증 설정을 간소화합니다.

  • 조직에서는 페더레이션을 사용하여 클라우드 리소스에 액세스하도록 사용자를 인증합니다. 이전에는 HDInsight Enterprise Security Package 클러스터를 사용하려면 온-프레미스 환경에서 Microsoft Entra ID로 암호 해시 동기화를 사용하도록 설정해야 했습니다. 일부 조직에서는 이 요구 사항이 어렵거나 바람직하지 않을 수 있습니다.
  • 조직에서 Apache Ambari 및 기타 클러스터 리소스에 대한 웹 기반 또는 HTTP 기반 액세스를 위한 다단계 인증을 적용하려고 합니다.

HDInsight ID 브로커는 암호 해시를 Microsoft Entra Domain Services에 동기화할 필요 없이 OAuth(최신)에서 Kerberos(레거시)로 프로토콜을 전환할 수 있는 인증 인프라를 제공합니다. 이 인프라는 클러스터 게이트웨이 노드와 함께 HDInsight ID Broker 노드가 사용 설정된 Windows Server 가상 머신(VM)에서 실행되는 구성 요소로 구성됩니다.

다음 표를 사용하여 조직의 요구 사항에 가장 부합하는 인증 옵션을 확인하세요.

인증 옵션 HDInsight 구성 고려해야 할 요소
완전 OAuth Enterprise Security Package + HDInsight ID Broker 가장 안전한 옵션입니다. (다단계 인증이 지원됩니다.) 암호 해시 동기화는 필요하지 않습니다. Microsoft Entra Domain Services에 암호 해시가 없는 온-프레미스 계정에 대한 ssh/kinit/keytab 액세스는 없습니다. 클라우드 전용 계정은 여전히 ssh/kinit/keytab을 통해 연결할 수 있습니다. OAuth를 통한 Ambari에 대한 웹 기반 액세스입니다. OAuth를 지원하려면 레거시 앱(예: JDBC/ODBC)을 업데이트해야 합니다.
OAuth + 기본 인증 Enterprise Security Package + HDInsight ID Broker OAuth를 통한 Ambari에 대한 웹 기반 액세스입니다. 레거시 앱은 기본 인증을 계속 사용합니다. 기본 인증 액세스를 위해서는 다단계 인증을 사용하지 않도록 설정해야 합니다. 암호 해시 동기화는 필요하지 않습니다. Microsoft Entra Domain Services에 암호 해시가 없는 온-프레미스 계정에 대한 ssh/kinit/keytab 액세스는 없습니다. 클라우드 전용 계정은 여전히 ssh/kinit를 통해 연결할 수 있습니다.
완전 기본 인증 엔터프라이즈 보안 패키지 온-프레미스 설정과 가장 유사합니다. Microsoft Entra Domain Services에 대한 암호 해시 동기화가 필요합니다. 온-프레미스 계정은 ssh/kinit 또는 keytab을 통해 연결할 수 있습니다. 백업 스토리지가 Azure Data Lake Storage Gen2인 경우 다단계 인증을 사용하지 않도록 설정해야 합니다.

다음 다이어그램은 HDInsight ID Broker를 사용하도록 설정한 후 페더레이션된 사용자를 포함하여 모든 사용자에 대한 최신 OAuth 기반 인증 흐름을 보여 줍니다.

HDInsight ID Broker의 인증 흐름을 보여 주는 다이어그램

이 다이어그램에서 클라이언트(브라우저 또는 앱)는 먼저 OAuth 토큰을 획득해야 합니다. 그런 다음 HTTP 요청에서 게이트웨이에 토큰을 제공합니다. Azure Portal과 같은 다른 Azure 서비스에 이미 로그인한 경우 Single Sign-On 환경을 사용하여 HDInsight 클러스터에 로그인할 수 있습니다.

기본 인증(즉, 사용자 이름 및 암호)만 지원하는 많은 레거시 애플리케이션이 있을 수 있습니다. 이와 같은 시나리오의 경우 여전히 HTTP 기본 인증을 사용하여 클러스터 게이트웨이에 연결할 수 있습니다. 이 설정에서는 게이트웨이 노드에서 직접 시야를 확보할 수 있도록 게이트웨이 노드에서 AD FS(Active Directory Federation Services) 엔드포인트로의 네트워크 연결을 확인해야 합니다.

다음 다이어그램은 페더레이션된 사용자에 대한 기본 인증 흐름을 보여 줍니다. 먼저 게이트웨이는 ROPC 흐름을 사용하여 인증을 완료하려고 시도합니다. Microsoft Entra ID에 동기화된 암호 해시가 없는 경우 AD FS 엔드포인트를 다시 검색하고 AD FS 엔드포인트에 액세스하여 인증을 완료합니다.

기본 인증을 사용하는 아키텍처를 보여 주는 다이어그램

HDInsight ID Broker 사용

HDInsight ID 브로커가 사용 설정된 Enterprise Security Package 클러스터를 만들려면

  1. Azure Portal에 로그인합니다.
  2. Enterprise Security Package 클러스터에 대한 기본 만들기 단계를 수행합니다. 자세한 내용은 Enterprise Security Package로 HDInsight 클러스터 만들기를 참조하세요.
  3. HDInsight ID Broker 사용을 선택합니다.

HDInsight ID Broker 기능은 클러스터에 하나의 추가 VM을 추가합니다. 이 VM은 HDInsight ID Broker 노드이며 인증을 지원하는 서버 구성 요소를 포함합니다. HDInsight ID 브로커 노드는 Microsoft Entra Domain Services 도메인에 가입된 도메인입니다.

HDInsight ID Broker를 사용하도록 설정하는 옵션을 보여 주는 다이어그램

Azure 리소스 관리자 템플릿 사용

다음 특성이 있는 idbrokernode라는 새 역할을 템플릿의 컴퓨팅 프로필에 추가하면 HDInsight ID 브로커 노드가 사용 설정된 클러스터가 생성됩니다.

.
.
.
"computeProfile": {
    "roles": [
        {
            "autoscale": null,
            "name": "headnode",
           ....
        },
        {
            "autoscale": null,
            "name": "workernode",
            ....
        },
        {
            "autoscale": null,
            "name": "idbrokernode",
            "targetInstanceCount": 2,
            "hardwareProfile": {
                "vmSize": "Standard_A2_V2"
            },
            "virtualNetworkProfile": {
                "id": "string",
                "subnet": "string"
            },
            "scriptActions": [],
            "dataDisksGroups": null
        }
    ]
}
.
.
.

ARM 템플릿의 전체 샘플을 보려면 여기에 게시된 템플릿을 참조하세요.

도구 통합

HDInsight 도구는 기본적으로 OAuth를 지원하도록 업데이트됩니다. 클러스터에 대한 최신 OAuth 기반 액세스에 이 도구를 사용하세요. HDInsight IntelliJ 플러그 인은 Scala와 같은 Java 기반 애플리케이션에 사용할 수 있습니다. Visual Studio Code용 Spark 및 Hive 도구는 PySpark 및 Hive 작업에 사용할 수 있습니다. 이 도구는 일괄 작업과 대화형 작업을 모두 지원합니다.

Microsoft Entra Domain Services에서 암호 해시 없이 SSH 액세스

SSH 옵션 고려해야 할 요소
로컬 VM 계정(예: sshuser) 클러스터를 만드는 동안 이 계정을 제공했습니다. 이 계정에 대한 Kerberos 인증이 없습니다.
클라우드 전용 계정(예: alice@contoso.onmicrosoft.com) 암호 해시는 Microsoft Entra Domain Services에서 사용할 수 있습니다. Kerberos 인증은 SSH Kerberos를 통해 가능합니다.
온-프레미스 계정(예: alice@contoso.com) SSH Kerberos 인증은 Microsoft Entra Domain Services에서 암호 해시를 사용할 수 있는 경우에만 가능합니다. 그렇지 않으면 이 사용자는 클러스터에 SSH를 통해 연결할 수 있습니다.

도메인 가입 VM에 SSH를 통해 연결하거나 kinit 명령을 실행하려면 암호를 제공해야 합니다. SSH Kerberos 인증을 사용하려면 Microsoft Entra Domain Services에서 해시를 사용할 수 있어야 합니다. 관리 시나리오에만 SSH를 사용하려는 경우 클라우드 전용 계정을 하나 만들어 클러스터에 SSH를 통해 연결하는 데 사용할 수 있습니다. 다른 온-프레미스 사용자는 Microsoft Entra Domain Services에서 암호 해시를 사용할 수 없는 경우에도 Ambari 또는 HDInsight 도구나 HTTP 기본 인증을 사용할 수 있습니다.

조직에서 암호 해시를 Microsoft Entra Domain Services와 동기화하지 않는 경우 모범 사례로 Microsoft Entra ID에 클라우드 전용 사용자를 하나 만듭니다. 그런 다음 클러스터를 만들 때 이를 클러스터 관리자로 할당하고 관리 목적으로 사용합니다. 이를 사용하면 SSH를 통해 VM에 대한 루트 액세스 권한을 가져올 수 있습니다.

인증 문제를 해결하려면 이 가이드를 참조하세요.

HDInsight ID Broker로 HDInsight 게이트웨이에 연결하기 위해 OAuth를 사용하는 클라이언트

HDInsight ID 브로커 설정에서 게이트웨이에 연결하는 사용자 지정 앱 및 클라이언트를 업데이트하여 필요한 OAuth 토큰을 먼저 획득할 수 있습니다. 자세한 내용은 Azure 서비스로 .NET 애플리케이션을 인증하는 방법을 참조하세요. HDInsight 게이트웨이에 대한 액세스 권한을 부여하는 데 필요한 키 값은 다음과 같습니다.

  • OAuth 리소스 uri: https://hib.azurehdinsight.net
  • AppId: 00001111-aaaa-2222-bbbb-3333cccc44444
  • 권한: (이름: Cluster.ReadWrite, id: 8f89faa0-ffef-4007-974d-4989b39ad77d)

OAuth 토큰을 획득한 후에는 클러스터 게이트웨이에 대한 HTTP 요청의 인증 헤더(예: https://<clustername>-int.azurehdinsight.net)에 이 토큰을 사용합니다. Apache Livy API에 대한 샘플 curl 명령은 다음 예와 같이 표시될 수 있습니다.

curl -k -v -H "Authorization: Bearer Access_TOKEN" -H "Content-Type: application/json" -X POST -d '{ "file":"wasbs://mycontainer@mystorageaccount.blob.core.windows.net/data/SparkSimpleTest.jar", "className":"com.microsoft.spark.test.SimpleFile" }' "https://<clustername>-int.azurehdinsight.net/livy/batches" -H "X-Requested-By:<username@domain.com>"

Beeline 및 Livy를 사용하는 경우 여기에 제공된 샘플 코드를 따라 OAuth를 사용하도록 클라이언트를 설정하고 클러스터에 연결할 수도 있습니다.

FAQ

Microsoft Entra ID에서 HDInsight로 만드는 앱은 무엇인가요?

각 클러스터에 대해 타사 애플리케이션은 identifierUri(예: https://clustername.azurehdinsight.net)로 클러스터 uri를 사용하여 Microsoft Entra ID에 등록됩니다.

Microsoft Entra ID에서 사용자를 인증하거나 데이터에 액세스하기 전에 모든 타사 애플리케이션에 대한 동의가 필요합니다.

Microsoft Graph API를 사용하면 동의를 자동화할 수 있습니다. API 문서를 참조하세요. 동의를 자동화하는 순서는 다음과 같습니다.

  • 앱을 등록한 후 Microsoft Graph에 액세스할 수 있도록 Application.ReadWrite.All 권한 부여
  • 클러스터를 만든 후 식별자 uri를 기준으로 클러스터 앱 쿼리
  • 앱에 대한 동의 등록

클러스터가 삭제되면 HDInsight는 앱을 삭제하므로 모든 동의를 정리할 필요가 없습니다.

다음 단계