Configuration de l'authentification Ambari avec LDAP/Active Directory

Dans le cluster Big Data Service, Ambari est utilisé pour gérer le cluster. Par défaut, le cluster Big Data Service ne dispose que d'un seul compte administrateur pouvant gérer le cluster. Cependant, il est essentiel de prendre en charge l'intégration Active Directory (AD) afin que les utilisateurs d'AD puissent se connecter à Ambari et effectuer les opérations de gestion de cluster.

Configuration d'Ambari pour authentifier les utilisateurs externes

  1. Sur le noeud un0, exécutez :
    sudo ambari-server setup-ldap
  2. Répondez à chaque invite avec les informations suivantes. Les invites marquées d'un astérisque sont obligatoires.

    Invite

    Description
    Sélectionnez le type de LDAP à utiliser * AD
    Hôte de l'URL principale* <AD_FQDN>
    Port de l'URL principale* Port du serveur LDAP. Par défaut, les LDAP sécurisés s'exécutent sur le port 636. LDAP non sécurisé s'exécute sur le port 389.
    Hôte d'URL secondaire Appuyez sur Entrée pour laisser vide
    Port de l'URL secondaire Appuyez sur Entrée pour laisser vide
    Utiliser SSL * True si vous décidez d'utiliser LDAPS sur 636 ports.
    Voulez-vous fournir une valeur TrustStore personnalisée pour Ambari [y/n] Pour le cluster Big Data Service, vous pouvez définir 'n' ici et ignorer la demande suivante de suppression
    Le fichier TrustStore est déjà configuré :ssl.trustStore.type = jksssl.trustStore.path = /etc/security/serverKeys/truststore.jksssl.trustStore.password = ${alias=ambari.ssl.trustStore.password}Voulez-vous enlever ces propriétés [y/n] (n) ? Saisissez n. Si vous avez entré l'URL LDAPS d'AD dans le fichier bds-cert.conf et que vous avez exécuté sudo bds_cert_util --enable à partir du noeud mn0, le fichier jks ici doit déjà contenir le certificat LDAPS.
    Type TrustStore Non nécessaire si vous n'avez pas supprimé la propriété par défaut. Format du truststore : jks
    Chemin d'accès à TrustStore Non nécessaire si vous n'avez pas supprimé la propriété par défaut. /etc/security/serverKeys/truststore.jks
    Mot de passe pour TrustStore Non nécessaire si vous n'avez pas supprimé la propriété par défaut. Si nécessaire, exécutez sudo bash /home/opc/cloud/flask-microservice/cert_util/scripts/get_pass_mn0.sh pour obtenir le mot de passe.
    Classe d'objet utilisateur * personne
    Attribut du nom utilisateur* sAMAccountName
    Classe d'objet Groupe* groupe
    Attribut du nom de groupe * cn
    Attribut de membre de groupe* membre
    Attribut de nom distinctif* distinguishedName
    Base de recherche * <AD_SEARCH_BASE>
    Méthode d'orientation* ignorer
    Lier anonymement* False
    DN d'authentification* : <AD_BIND_USER_DN>. Exécutez dsquery user -name BIND_USER_NAME sous Windows PowerShell sur le serveur AD.
    Mot de passe du DN de liaison* : <AD_BIND_USER_PWD>
    Comportement de gestion des collisions de nom utilisateur* : convertir (recommandé)
    Forcer les noms d'utilisateur en minuscules : true (recommandé)
    Les résultats de LDAP sont paginés à la demande : false (recommandé)
    Désactiver l'identification de l'adresse lors de l'établissement de liaison SSL : true (recommandé)

    Par exemple :

    [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. Préparez une liste de groupes pour restreindre les utilisateurs et les groupes Active Directory à synchroniser dans Ambari.
  4. (Facultatif) Si vous prévoyez de partager l'accès Ambari aux utilisateurs des groupes AD, exécutez la commande suivante :
    echo "g1,g2,g3" > groups.csv
    sudo ambari-server sync-ldap --groups=$(pwd)/groups.csv
    
  5. (Facultatif) Pour indiquer explicitement la liste des utilisateurs AD, exécutez la commande suivante :
    echo "U1, u2, u3" > users.csv
  6. Redémarrez le serveur Ambari.

    Par exemple :

    [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

Configuration de l'accès pour les utilisateurs Active Directory via l'interface utilisateur Ambari

  1. Accédez à Apache Ambari avec l'utilisateur administrateur et le mot de passe.
  2. Cliquez sur le bouton Nom utilisateur, puis sélectionnez Gérer Ambari.
  3. Sélectionnez Utilisateurs.
  4. Vérifiez les utilisateurs et les groupes.
  5. Dans le filtre, entrez le nom utilisateur <username>, puis sélectionnez Modifier.
  6. Ajoutez l'utilisateur au groupe approprié.
  7. Déconnectez l'administrateur et connectez-vous en tant qu'utilisateur auquel vous avez accordé l'accès.