Broker identyfikatorów usługi Azure HDInsight (HIB)

W tym artykule opisano sposób konfigurowania i używania funkcji brokera identyfikatorów usługi Azure HDInsight. Ta funkcja umożliwia uzyskanie nowoczesnego uwierzytelniania OAuth na platformie Apache Ambari przy jednoczesnym wymuszaniu uwierzytelniania wieloskładnikowego bez konieczności używania starszych skrótów haseł w usługach Microsoft Entra Domain Services.

Omówienie

Broker identyfikatorów usługi HDInsight upraszcza złożone konfiguracje uwierzytelniania w następujących scenariuszach:

  • Twoja organizacja korzysta z federacji w celu uwierzytelniania użytkowników w celu uzyskiwania dostępu do zasobów w chmurze. Wcześniej, aby używać klastrów pakietów HDInsight Enterprise Security, trzeba było włączyć synchronizację skrótów haseł ze środowiska lokalnego do identyfikatora Entra firmy Microsoft. To wymaganie może być trudne lub niepożądane dla niektórych organizacji.
  • Twoja organizacja chce wymusić uwierzytelnianie wieloskładnikowe na potrzeby dostępu opartego na sieci Web lub HTTP do platformy Apache Ambari i innych zasobów klastra.

Broker identyfikatorów usługi HDInsight udostępnia infrastrukturę uwierzytelniania, która umożliwia przejście protokołu z protokołu OAuth (nowoczesne) do protokołu Kerberos (starsza wersja) bez konieczności synchronizowania skrótów haseł z usługami Microsoft Entra Domain Services. Ta infrastruktura składa się ze składników uruchomionych na maszynie wirtualnej z systemem Windows Server z włączonym węzłem brokera identyfikatorów usługi HDInsight wraz z węzłami bramy klastra.

Skorzystaj z poniższej tabeli, aby określić najlepszą opcję uwierzytelniania na podstawie potrzeb organizacji.

Opcje uwierzytelniania Konfiguracja usługi HDInsight Czynniki do rozważenia
W pełni OAuth Pakiet Enterprise Security i broker identyfikatorów usługi HDInsight Najbezpieczniejsza opcja. (Uwierzytelnianie wieloskładnikowe jest obsługiwane). Synchronizacja skrótów z przekazywaniem nie jest wymagana. Brak dostępu ssh/kinit/keytab dla kont lokalnych, które nie mają skrótu haseł w usługach Microsoft Entra Domain Services. Konta tylko w chmurze mogą nadal mieć kartę ssh/kinit/keytab. Dostęp internetowy do systemu Ambari za pośrednictwem protokołu OAuth. Wymaga zaktualizowania starszych aplikacji (na przykład JDBC/ODBC) w celu obsługi protokołu OAuth.
Uwierzytelnianie OAuth + uwierzytelnianie podstawowe Pakiet Enterprise Security i broker identyfikatorów usługi HDInsight Dostęp internetowy do systemu Ambari za pośrednictwem protokołu OAuth. Starsze aplikacje nadal korzystają z podstawowego uwierzytelniania. Uwierzytelnianie wieloskładnikowe musi być wyłączone w celu uzyskania dostępu do podstawowego uwierzytelniania. Synchronizacja skrótów z przekazywaniem nie jest wymagana. Brak dostępu ssh/kinit/keytab dla kont lokalnych, które nie mają skrótu haseł w usługach Microsoft Entra Domain Services. Konta tylko w chmurze mogą nadal ssh/kinit.
Uwierzytelnianie w pełni podstawowe Pakiet Enterprise Security Większość podobna do konfiguracji lokalnych. Synchronizacja skrótów haseł z usługami Microsoft Entra Domain Services jest wymagana. Konta lokalne mogą używać klawisza ssh/kinit lub użyć tab. Uwierzytelnianie wieloskładnikowe musi być wyłączone, jeśli magazyn zapasowy to Azure Data Lake Storage Gen2.

Na poniższym diagramie przedstawiono nowoczesny przepływ uwierzytelniania opartego na protokole OAuth dla wszystkich użytkowników, w tym użytkowników federacyjnych, po włączeniu brokera identyfikatorów usługi HDInsight:

Diagram that shows authentication flow with HDInsight ID Broker.

Na tym diagramie klient (czyli przeglądarka lub aplikacja) musi najpierw uzyskać token OAuth. Następnie przedstawia token bramie w żądaniu HTTP. Jeśli zalogowałeś się już do innych usług platformy Azure, takich jak witryna Azure Portal, możesz zalogować się do klastra usługi HDInsight przy użyciu środowiska logowania jednokrotnego.

Nadal może istnieć wiele starszych aplikacji, które obsługują tylko uwierzytelnianie podstawowe (czyli nazwę użytkownika i hasło). W tych scenariuszach nadal można używać uwierzytelniania podstawowego HTTP do łączenia się z bramami klastra. W tej konfiguracji należy zapewnić łączność sieciową z węzłów bramy do punktu końcowego usług Active Directory Federation Services (AD FS), aby zapewnić bezpośredni widok z węzłów bramy.

Na poniższym diagramie przedstawiono podstawowy przepływ uwierzytelniania dla użytkowników federacyjnych. Najpierw brama próbuje ukończyć uwierzytelnianie przy użyciu przepływu ROPC. W przypadku braku skrótów haseł zsynchronizowanych z identyfikatorem Entra firmy Microsoft następuje powrót do odnajdywania punktu końcowego usług AD FS i ukończenia uwierzytelniania przez uzyskanie dostępu do punktu końcowego usług AD FS.

Diagram that shows architecture with basic authentication.

Włączanie brokera identyfikatorów usługi HDInsight

Aby utworzyć klaster pakietu Enterprise Security z włączonym brokerem identyfikatorów usługi HDInsight,

  1. Zaloguj się w witrynie Azure Portal.
  2. Wykonaj podstawowe kroki tworzenia klastra pakietu Enterprise Security. Aby uzyskać więcej informacji, zobacz Create an HDInsight cluster with Enterprise Security Package (Tworzenie klastra usługi HDInsight przy użyciu pakietu Enterprise Security).
  3. Wybierz pozycję Włącz brokera identyfikatorów usługi HDInsight.

Funkcja brokera identyfikatorów usługi HDInsight dodaje do klastra jedną dodatkową maszynę wirtualną. Ta maszyna wirtualna jest węzłem brokera identyfikatorów usługi HDInsight i zawiera składniki serwera do obsługi uwierzytelniania. Węzeł brokera identyfikatorów usługi HDInsight jest przyłączony do domeny usług Microsoft Entra Domain Services.

Diagram that shows option to enable HDInsight ID Broker.

Korzystanie z szablonów usługi Azure Resource Manager

Jeśli dodasz nową rolę o nazwie idbrokernode z następującymi atrybutami do profilu obliczeniowego szablonu, klaster zostanie utworzony z włączonym węzłem brokera identyfikatorów usługi HDInsight:

.
.
.
"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
        }
    ]
}
.
.
.

Aby wyświetlić kompletny przykład szablonu usługi ARM, zobacz szablon opublikowany tutaj.

Integracja narzędzi

Narzędzia usługi HDInsight są aktualizowane tak, aby natywnie obsługiwały protokół OAuth. Użyj tych narzędzi do nowoczesnego dostępu opartego na protokole OAuth do klastrów. Wtyczka IntelliJ usługi HDInsight może być używana dla aplikacji opartych na języku Java, takich jak Scala. Narzędzia Spark i Hive Tools for Visual Studio Code mogą służyć do zadań PySpark i Hive. Narzędzia obsługują zadania wsadowe i interaktywne.

Dostęp za pomocą protokołu SSH bez skrótu haseł w usługach Microsoft Entra Domain Services

Opcje protokołu SSH Czynniki do rozważenia
Lokalne konto maszyny wirtualnej (na przykład sshuser) To konto podano w czasie tworzenia klastra. Dla tego konta nie ma uwierzytelniania Kerberos.
Konto tylko w chmurze (na przykład alice@contoso.onmicrosoft.com) Skrót hasła jest dostępny w usługach Microsoft Entra Domain Services. Uwierzytelnianie Kerberos jest możliwe za pośrednictwem protokołu Kerberos protokołu SSH.
Konto lokalne (na przykład alice@contoso.com) Uwierzytelnianie kerberos protokołu SSH jest możliwe tylko wtedy, gdy skrót hasła jest dostępny w usługach Microsoft Entra Domain Services. W przeciwnym razie ten użytkownik nie może połączyć się z klastrem za pomocą protokołu SSH.

Aby połączyć się za pomocą protokołu SSH z maszyną wirtualną przyłączoną do domeny lub uruchomić kinit polecenie, musisz podać hasło. Uwierzytelnianie protokołu Kerberos protokołu SSH wymaga udostępnienia skrótu w usługach Microsoft Entra Domain Services. Jeśli chcesz używać protokołu SSH tylko w scenariuszach administracyjnych, możesz utworzyć jedno konto tylko w chmurze i użyć go do SSH w klastrze. Inni użytkownicy lokalni nadal mogą używać narzędzi Ambari lub HDInsight lub podstawowego uwierzytelniania HTTP bez użycia skrótu hasła dostępnego w usługach Microsoft Entra Domain Services.

Jeśli Twoja organizacja nie synchronizuje skrótów haseł z usługami Microsoft Entra Domain Services, najlepszym rozwiązaniem jest utworzenie jednego użytkownika tylko w chmurze w usłudze Microsoft Entra ID. Następnie przypisz go jako administratora klastra podczas tworzenia klastra i użyj go do celów administracyjnych. Można go użyć do uzyskania dostępu głównego do maszyn wirtualnych za pośrednictwem protokołu SSH.

Aby rozwiązać problemy z uwierzytelnianiem, zobacz ten przewodnik.

Klienci używający protokołu OAuth do nawiązywania połączenia z bramą usługi HDInsight za pomocą brokera identyfikatorów usługi HDInsight

W konfiguracji brokera identyfikatorów usługi HDInsight aplikacje niestandardowe i klienci, którzy łączą się z bramą, można najpierw zaktualizować w celu uzyskania wymaganego tokenu OAuth. Aby uzyskać więcej informacji, zobacz Jak uwierzytelniać aplikacje platformy .NET za pomocą usług platformy Azure. Wartości klucza wymagane do autoryzowania dostępu do bramy usługi HDInsight to:

  • Identyfikator URI zasobu OAuth: https://hib.azurehdinsight.net
  • AppId: 7865c1d2-f040-46cc-875f-831a1ef6a28a
  • Uprawnienie: (nazwa: Cluster.ReadWrite, identyfikator: 8f89faa0-ffef-4007-974d-4989b39ad77d)

Po uzyskaniu tokenu OAuth użyj go w nagłówku autoryzacji żądania HTTP do bramy klastra (na przykład https://< clustername-int.azurehdinsight.net>). Przykładowe polecenie curl interfejsu API usługi Apache Livy może wyglądać następująco:

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>"

W przypadku korzystania z usług Beeline i Livy możesz również postępować zgodnie z kodami przykładów podanymi tutaj , aby skonfigurować klienta do korzystania z protokołu OAuth i nawiązać połączenie z klastrem.

Często zadawane pytania

Jaka aplikacja jest tworzona przez usługę HDInsight w identyfikatorze Entra firmy Microsoft?

Dla każdego klastra aplikacja innej firmy jest zarejestrowana w identyfikatorze Entra firmy Microsoft przy użyciu identyfikatora URI klastra jako identyfikatoraUri (na przykład https://clustername.azurehdinsight.net).

W usłudze Microsoft Entra ID zgoda jest wymagana dla wszystkich aplikacji innych firm, zanim będzie mogła uwierzytelniać użytkowników lub uzyskiwać dostęp do danych.

Interfejs API programu Microsoft Graph umożliwia zautomatyzowanie zgody. Zobacz dokumentację interfejsu API Sekwencja automatyzowania zgody:

  • Rejestrowanie aplikacji i udzielanie aplikacji.ReadWrite.All uprawnień do aplikacji w celu uzyskania dostępu do programu Microsoft Graph
  • Po utworzeniu klastra wykonaj zapytanie dotyczące aplikacji klastra na podstawie identyfikatora URI
  • Rejestrowanie zgody dla aplikacji

Gdy klaster zostanie usunięty, usługa HDInsight usunie aplikację i nie ma potrzeby czyszczenia żadnej zgody.

Następne kroki