Ambari-Authentifizierung mit LDAP/Active Directory konfigurieren

Im Big Data Service-Cluster wird Ambari zur Verwaltung des Clusters verwendet. Standardmäßig verfügt das Big Data Service-Cluster über nur einen Administratoraccount, der das Cluster verwalten kann. Es ist jedoch wichtig, die Integration von Active Directory (AD) zu unterstützen, damit sich die Benutzer in AD bei Ambari anmelden und die Clusterverwaltungsvorgänge ausführen können.

Ambari zur Authentifizierung externer Benutzer konfigurieren

  1. Führen Sie auf dem Knoten un0 Folgendes aus:
    sudo ambari-server setup-ldap
  2. Antworten Sie auf jeden Prompt mit den folgenden Informationen. Mit einem Sternchen gekennzeichnete Prompts sind erforderlich.

    Prompt

    Beschreibung
    Wählen Sie den LDAP-Typ, den Sie verwenden möchten * AD
    Primär-URL-Host* <AD_FQDN>
    Primärer URL-Port* Der Port für den LDAP-Server. Standardmäßig werden gesicherte LDAPs auf Port 636 ausgeführt. Nicht gesichertes LDAP wird auf Port 389 ausgeführt.
    Sekundärer URL-Host Drücken Sie die Eingabe für leer
    Sekundärer URL-Port Drücken Sie die Eingabe für leer
    SSL verwenden* True , wenn Sie LDAPS über 636 Port verwenden.
    Möchten Sie benutzerdefinierte TrustStore für Ambari angeben [y/n] Für Big Data Service-Cluster können Sie hier "n" festlegen und die nachfolgende Anforderung zum Entfernen ignorieren
    Die TrustStore ist bereits konfiguriert:ssl.trustStore.type = jksssl.trustStore.path = /etc/security/serverKeys/truststore.jksssl.trustStore.password = ${alias=ambari.ssl.trustStore.password}Möchten Sie diese Eigenschaften entfernen [y/n] (n)? Geben Sie n ein. Wenn Sie die LDAPS-URL von AD in bds-cert.conf eingegeben haben und sudo bds_cert_util --enable aus dem Knoten mn0 ausgeführt haben, sollte die jks-Datei hier bereits das LDAPS-Zertifikat enthalten.
    TrustStore-Typ Wird nicht benötigt, wenn Sie die Standardeigenschaft nicht entfernt haben. Format des Truststores: jks
    Pfad zu TrustStore Wird nicht benötigt, wenn Sie die Standardeigenschaft nicht entfernt haben. /etc/security/serverKeys/truststore.jks
    Kennwort für TrustStore Wird nicht benötigt, wenn Sie die Standardeigenschaft nicht entfernt haben. Führen Sie bei Bedarf sudo bash /home/opc/cloud/flask-microservice/cert_util/scripts/get_pass_mn0.sh aus, um das Kennwort abzurufen.
    Benutzerobjektklasse* person
    Benutzernameattribut* sAMAccountName
    Gruppenobjektklasse* Gruppen
    Gruppennamenattribut* cn
    Gruppenmitgliedsattribut* Element
    Distinguished Name-Attribut* distinguishedName
    Suchbasis* <AD_SEARCH_BASE>
    Überweisungsmethode* Ignorieren
    Anonym binden* False
    Bind DN*: <AD_BIND_USER_DN>. Führen Sie dsquery user -name BIND_USER_NAME in Windows PowerShell auf dem AD-Server aus.
    Bind-DN-Kennwort*: <AD_BIND_USER_PWD>
    Verhalten für Benutzername-Konflikte*: konvertieren (empfohlen)
    Benutzernamen in Kleinbuchstaben erzwingen: true (empfohlen)
    Ergebnisse aus LDAP werden auf Anforderung paginiert: falsch (empfohlen)
    Endpunktidentifizierung während SSL-Handshake deaktivieren: true (empfohlen)

    Beispiel:

    [opc@opowerun0-0 ~]$ sudo ambari-server setup-ldap
    Using python  /usr/bin/python
    Currently 'no auth method' is configured, do you wish to use LDAP instead [y/n] (y)? y
    Enter Ambari Admin login: admin
    Enter Ambari Admin password:
     
    Fetching LDAP configuration from DB. No configuration.
    Please select the type of LDAP you want to use [AD/IPA/Generic](Generic):AD
    Primary LDAP Host: <PRIMARY_LDAP_HOST>
    Primary LDAP Port: 636
    Secondary LDAP Host <Optional>:
    Secondary LDAP Port <Optional>:
    Use SSL [true/false] (false): true
    Disable endpoint identification during SSL handshake [true/false] (False): true
    Do you want to provide custom TrustStore for Ambari [y/n] (y)?n
    The TrustStore is already configured:
      ssl.trustStore.type = jks
      ssl.trustStore.path = /etc/security/serverKeys/truststore.jks
      ssl.trustStore.password = ${alias=ambari.ssl.trustStore.password}
    Do you want to remove these properties [y/n] (y)? n
    User object class (user):
    User ID attribute (sAMAccountName):
    Group object class (group):
    Group name attribute (cn):
    Group member attribute (member):
    Distinguished name attribute (distinguishedName):
    Search Base (dc=ambari,dc=apache,dc=org): cn=Users,dc=ad,dc=domain,dc=com
    Referral method [follow/ignore] (follow): ignore
    Bind anonymously [true/false] (false):
    Bind DN (cn=ldapbind,dc=ambari,dc=apache,dc=org): cn=Users,dc=ad,dc=domain,dc=com
    Enter Bind DN Password:
    Confirm Bind DN Password:
    Handling behavior for username collisions [convert/skip] for LDAP sync (skip): convert
    Force lower-case user names [true/false]:true
    Results from LDAP are paginated when requested [true/false]:false
    ====================
    Review Settings
    ====================
    Primary LDAP Host:  <PRIMARY_LDAP_HOST>
    Primary LDAP Port:  636
    Use SSL [true/false] (false):  true
    User object class (user):  user
    User ID attribute (sAMAccountName):  sAMAccountName
    Group object class (group):  group
    Group name attribute (cn):  cn
    Group member attribute (member):  member
    Distinguished name attribute (distinguishedName):  distinguishedName
    Search Base (dc=ambari,dc=apache,dc=org):  cn=Users,dc=ad,dc=domain,dc=com
    Bind anonymously [true/false] (false):  false
    Handling behavior for username collisions [convert/skip] for LDAP sync (skip):  convert
    Force lower-case user names [true/false]: true
    Results from LDAP are paginated when requested [true/false]: false
    ambari.ldap.connectivity.bind_dn: <AMBARI_LDAP_CONNECTIVITY_BIND_DN>
    ambari.ldap.connectivity.bind_password: *****
    ambari.ldap.advanced.disable_endpoint_identification: true
    Save settings [y/n] (y)? y
    Saving LDAP properties...
    Saving LDAP properties finished
    Ambari Server 'setup-ldap' completed successfully.
  3. Bereiten Sie eine Liste von Gruppen vor, um die in Ambari zu synchronisierenden Active Directory-Benutzer und -Gruppen einzuschränken.
  4. (Optional) Wenn Sie Ambari-Zugriff für die Benutzer in AD-Gruppen freigeben möchten, führen Sie Folgendes aus:
    echo "g1,g2,g3" > groups.csv
    sudo ambari-server sync-ldap --groups=$(pwd)/groups.csv
    
  5. (Optional) Um die Liste der AD-Benutzer explizit anzugeben, führen Sie Folgendes aus:
    echo "U1, u2, u3" > users.csv
  6. Starten Sie den Ambari-Server neu.

    Beispiel:

    [opc@opower2un0 ambari-server]$ sudo ambari-server restart
    Using python  /usr/bin/python
    Restarting ambari-server
    Waiting for server stop...
    Ambari Server stopped
    Ambari Server running with administrator privileges.
    Organizing resource files at /var/lib/ambari-server/resources...
    Ambari database consistency check started...
    Server PID at: /var/run/ambari-server/ambari-server.pid
    Server out at: /var/log/ambari-server/ambari-server.out
    Server log at: /var/log/ambari-server/ambari-server.log
    Waiting for server start...............
    Server started listening on 7183

Zugriff für Active Directory-Benutzer über die Ambari-Benutzeroberfläche konfigurieren

  1. Greifen Sie mit Administratorbenutzer und Kennwort auf Apache Ambari zu.
  2. Wählen Sie die Schaltfläche "Benutzername", und wählen Sie Ambari verwalten aus.
  3. Wählen Sie Users (Benutzer).
  4. Prüfen Sie Benutzer und Gruppen.
  5. Geben Sie im Filter "Username: <username>" ein, und wählen Sie Edit aus.
  6. Fügen Sie den Benutzer zur entsprechenden Gruppe hinzu.
  7. Melden Sie den Administrator ab, und melden Sie sich als der Benutzer an, dem Sie Zugriff erteilt haben.