Configuración de la autenticación de Ambari con LDAP/Active Directory

En el cluster de Big Data Service, Ambari se utiliza para gestionar el cluster. Por defecto, el cluster de Big Data Service solo tiene una cuenta de administrador que puede gestionar el cluster. Sin embargo, es esencial para admitir la integración de Active Directory (AD) para que los usuarios de AD puedan iniciar sesión en Ambari y realizar las operaciones de gestión de clusters.

Configuración de Ambari para Autenticar Usuarios Externos

  1. En el nodo un0, ejecute:
    sudo ambari-server setup-ldap
  2. Responda a cada petición de datos con la siguiente información. Las peticiones de datos marcadas con asterisco son necesarias.

    Petición de Datos

    Descripción
    Seleccione el tipo de LDAP que desea utilizar * dC
    Host de URL principal* <AD_FQDN>
    Puerto de URL principal* Puerto del servidor LDAP. Por defecto, los LDAP protegidos se ejecutan en el puerto 636. LDAP no seguro se ejecuta en el puerto 389.
    Host de URL Secundaria Pulse Intro para vacío
    Puerto de URL Secundaria Pulse Intro para vacío
    Usar SSL* True si decide utilizar LDAPS en un puerto 636.
    ¿Desea proporcionar TrustStore personalizado para Ambari [y/n]? Para el cluster de Big Data Service, puede definir 'n' aquí e ignorar la solicitud posterior de 'eliminación
    TrustStore ya está configurado:ssl.trustStore.type = jksssl.trustStore.path = /etc/security/serverKeys/truststore.jksssl.trustStore.password = ${alias=ambari.ssl.trustStore.password}¿Desea eliminar estas propiedades [y/n] (n)? Introduzca n. Si ha introducido la URL de LDAPS de AD en bds-cert.conf y ha ejecutado sudo bds_cert_util --enable desde el nodo mn0, el archivo jks aquí ya debe contener el certificado LDAPS.
    Tipo TrustStore No es necesario si no ha eliminado la propiedad por defecto. Formato del almacén de confianza: jks
    Ruta a TrustStore No es necesario si no ha eliminado la propiedad por defecto. /etc/security/serverKeys/truststore.jks
    Contraseña para TrustStore No es necesario si no ha eliminado la propiedad por defecto. Si es necesario, ejecute sudo bash /home/opc/cloud/flask-microservice/cert_util/scripts/get_pass_mn0.sh para obtener la contraseña.
    Clase de objeto de usuario* persona
    Atributo de nombre de usuario* sAMAccountName
    Clase de objeto de grupo* grupo
    Atributo de nombre de grupo* cn
    Atributo de miembro de grupo* miembro
    Atributo de nombre distintivo* distinguishedName
    Base de Búsqueda* <AD_SEARCH_BASE>
    Método de derivación* ignorar
    Enlazar de forma anónima* false
    DN de Enlace*: <AD_BIND_USER_DN>. Ejecute dsquery user -name BIND_USER_NAME en Windows PowerShell en el servidor de AD.
    Contraseña de DN de Enlace*: <AD_BIND_USER_PWD>
    Comportamiento de manejo para colisiones de nombres de usuario*: convertir (recomendado)
    Forzar nombres de usuario en minúsculas: verdadero (recomendado)
    Los resultados de LDAP se paginan cuando se solicitan: false (recomendado)
    Desactive la identificación de punto final durante el establecimiento de comunicación de SSL: verdadero (recomendado)

    Por ejemplo:

    [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. Prepare una lista de grupos para restringir los usuarios y grupos de Active Directory para sincronizar en Ambari.
  4. (Opcional) Si tiene previsto compartir el acceso de Ambari a los usuarios de los grupos de AD, ejecute:
    echo "g1,g2,g3" > groups.csv
    sudo ambari-server sync-ldap --groups=$(pwd)/groups.csv
    
  5. (Opcional) Para especificar explícitamente la lista de usuarios de AD, ejecute:
    echo "U1, u2, u3" > users.csv
  6. Reinicie el servidor de Ambari.

    Por ejemplo:

    [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

Configuración de acceso para usuarios de Active Directory a través de la interfaz de usuario de Ambari

  1. Acceda a Apache Ambari con usuario administrador y contraseña.
  2. Seleccione el botón de nombre de usuario y, a continuación, seleccione Administrar Ambari.
  3. Seleccione Usuarios.
  4. Verifique los usuarios y grupos.
  5. En el filtro, introduzca el nombre de usuario: <username> y, a continuación, seleccione Editar.
  6. Agregue el usuario al grupo correspondiente.
  7. Cierre la sesión del administrador e inicie sesión como el usuario al que ha otorgado acceso.