Freigeben über


LDAP-Synchronisierung in Ranger und Apache Ambari in Azure HDInsight

Cluster des HDInsight-Enterprise-Sicherheitspakets (ESP) verwenden Ranger für die Autorisierung. Mit Apache Ambari und Ranger werden Benutzer und Gruppen unabhängig voneinander synchronisiert, und beide funktionieren ein wenig anders. In diesem Artikel wird die LDAP-Synchronisierung in Ranger und Ambari behandelt.

Allgemeine Richtlinien

  • Stellen Sie Cluster immer mit einer oder mehreren Gruppen bereit.
  • Wenn Sie weitere Gruppen im Cluster verwenden möchten, prüfen Sie, ob es sinnvoll ist, die Gruppenmitgliedschaften in Microsoft Entra ID zu aktualisieren.
  • Wenn Sie die Clustergruppen ändern möchten, können Sie die Synchronisierungsfilter mithilfe von Ambari ändern.
  • Alle Änderungen der Gruppenmitgliedschaft in Microsoft Entra ID spiegeln sich im Cluster in den nachfolgenden Synchronisierungen wider. Die Änderungen müssen zuerst mit Microsoft Entra Domain Services und dann mit den Clustern synchronisiert werden.
  • HDInsight-Cluster verwenden Samba/Winbind, um die Gruppenmitgliedschaften auf die Clusterknoten zu projizieren.
  • Gruppenmitglieder werden transitiv (alle Untergruppen und deren Mitglieder) sowohl mit Ambari als auch mit Ranger synchronisiert.

Benutzer werden getrennt synchronisiert

  • Ambari und Ranger nutzen die Benutzerdatenbank nicht gemeinsam, da Sie zwei unterschiedlichen Zwecken dienen.
    • Wenn ein Benutzer die Ambari-Benutzeroberfläche verwenden muss, muss er mit Ambari synchronisiert werden.
    • Ist der Benutzer nicht mit Ambari synchronisiert, wird er von der Ambari-Benutzeroberfläche/API abgelehnt, doch andere Teile des Systems funktionieren (diese werden von Ranger oder Resource Manager und nicht von Ambari geschützt).
    • Um Benutzer oder Gruppen in Ranger-Richtlinien einzubeziehen, müssen die Prinzipale in Ranger explizit synchronisiert werden.

Synchronisierung und Konfiguration von Ambari-Benutzern

Auf den Hauptknoten wird stündlich ein Cron-Auftrag (/opt/startup_scripts/start_ambari_ldap_sync.py) ausgeführt, um die Benutzersynchronisierung zu planen. Der Cron-Auftrag ruft die Ambari-REST-APIs zum Durchführen der Synchronisierung auf. Das Skript sendet eine Liste von Benutzern und Gruppen, die synchronisiert werden sollen (da die Benutzer möglicherweise nicht den angegebenen Gruppen angehören, werden beide einzeln angegeben). Ambari synchronisiert sAMAccountName als den Benutzernamen und alle Gruppenmitglieder transitiv.

Die Protokolle müssen sich in /var/log/ambari-server/ambari-server.log befinden. Weitere Informationen finden Sie im Artikel zum Konfigurieren des Ambari-Protokolliergrads.

In Data Lake-Clustern werden mit dem Hook nach der Benutzererstellung die Basisordner für die synchronisierten Benutzer erstellt und diese werden als Besitzer der Basisordner festgelegt. Wenn der Benutzer nicht ordnungsgemäß mit Ambari synchronisiert wird, kann es bei aktiven Aufträgen zu Fehlern kommen, da der Basisordner möglicherweise nicht ordnungsgemäß eingerichtet ist.

Synchronisierung und Konfiguration von Ranger-Benutzern

Ranger verfügt über ein integriertes Synchronisierungsmodul, das stündlich zur Synchronisierung der Benutzer ausgeführt wird. Die Benutzerdatenbank wird nicht mit Ambari gemeinsam genutzt. HDInsight konfiguriert den Suchfilter so, dass der Administratorbenutzer, der Watchdog-Benutzer und die Mitglieder der Gruppe, die während der Clustererstellung angegeben wird, synchronisiert werden. Die Gruppenmitglieder werden transitiv synchronisiert:

  1. Deaktivieren Sie die inkrementelle Synchronisierung.
  2. Aktivieren Sie die Zuordnung zur Benutzergruppensynchronisierung.
  3. Geben Sie den Suchfilter an, um die transitiven Gruppenmitglieder einzubeziehen.
  4. Synchronisieren Sie das Attribut „sAMAccountName“ für Benutzer und das Namensattribut für Gruppen.

Gruppen- oder inkrementelle Synchronisierung

Ranger unterstützt eine Option zur Gruppensynchronisierung, aber sie funktioniert als Schnittmenge mit dem Benutzerfilter, nicht als Vereinigung zwischen Gruppenmitgliedschaften und Benutzerfilter. Ein typischer Anwendungsfall für den Gruppensynchronisierungsfilter in Ranger ist - Gruppenfilter: (dn=clusteradmingroup), Benutzerfilter: (city=seattle).

Die inkrementelle Synchronisierung funktioniert nur für die Benutzer, die bereits synchronisiert wurden (zum ersten Mal). Die inkrementelle Synchronisierung erfolgt nicht für neue Benutzer, die den Gruppen nach der ersten Synchronisierung hinzugefügt wurden.

Aktualisieren des Ranger-Synchronisierungsfilters

Der LDAP-Filter befindet sich auf der Ambari-Benutzeroberfläche im Abschnitt mit der Konfiguration der Ranger-Benutzersynchronisierung. Der vorhandene Filter hat die Form (|(userPrincipalName=bob@contoso.com)(userPrincipalName=hdiwatchdog-core01@CONTOSO.ONMICROSOFT.COM)(memberOf:1.2.840.113556.1.4.1941:=CN=hadoopgroup,OU=AADDC Users,DC=contoso,DC=onmicrosoft,DC=com)). Stellen Sie sicher, dass Sie ein Prädikat am Ende hinzufügen, und testen Sie den Filter mithilfe des Suchbefehls net ads, mit ldp.exe oder etwas Ähnlichem.

Protokolle der Ranger-Benutzersynchronisierung

Die Ranger-Benutzersynchronisierung kann über einen der Hauptknoten erfolgen. Die Protokolle befinden sich in /var/log/ranger/usersync/usersync.log. Führen Sie die folgenden Schritte aus, um den Ausführlichkeitsgrad der Protokolle zu erhöhen:

  1. Melden Sie sich bei Ambari an.
  2. Wechseln Sie zum Abschnitt mit der Ranger-Konfiguration.
  3. Wechseln Sie zum erweiterten Abschnitt usersync-log4j.
  4. Ändern Sie die Ebene log4j.rootLogger in DEBUG. (Nach der Änderung sollte sie wie log4j.rootLogger = DEBUG,logFile,FilterLog aussehen).
  5. Speichern Sie die Konfiguration, und starten Sie Ranger neu.

Bekannte Probleme bei der Synchronisierung von Ranger-Benutzern

  • Wenn der Gruppenname Unicode-Zeichen enthält, kann die Ranger-Synchronisierung dieses Objekt nicht synchronisieren. Wenn ein Benutzer zu einer Gruppe gehört, die internationale Zeichen enthält, synchronisiert Ranger die Gruppenzugehörigkeit teilweise.
  • Benutzername (sAMAccountName) und Gruppenname (Name) dürfen maximal 20 Zeichen lang sein. Wenn der Gruppenname länger ist, wird der Benutzer bei der Berechnung der Berechtigungen so behandelt, als gehöre er nicht zu der Gruppe.

Nächste Schritte