Configurazione dei mapping dei gruppi Hadoop per LDAP/Active Directory

Per riconoscere l'utente e il gruppo Active Directory in modo che l'autorizzazione a livello di gruppo LDAP/Active Directory possa essere applicata in Hadoop, impostare il mapping dei gruppi Hadoop utilizzando una delle seguenti opzioni:

Configurazione del mapping dei gruppi Hadoop nella base: site.xml

  1. Accedi ad Apache Ambari.
  2. Nella barra degli strumenti laterale, in Servizi selezionare HDFS.
  3. Selezionare Config > Avanzate.
  4. Aggiungere le seguenti coppie di chiavi al sito principale personalizzato:
    "hadoop.security.group.mapping":"org.apache.hadoop.security.CompositeGroupsMapping",
    "hadoop.security.group.mapping.providers.combined":"true",
    "hadoop.security.group.mapping.providers":"jniUnix,adServer",
    "hadoop.security.group.mapping.provider.jniUnix":"org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback",
    "hadoop.security.group.mapping.provider.adServer":"org.apache.hadoop.security.LdapGroupsMapping",
    "hadoop.security.group.mapping.provider.adServer.ldap.url":"ldap://{AD_FQDN}:389",
    "hadoop.security.group.mapping.provider.adServer.ldap.base":"{AD_SEARCH_BASE}",
    "hadoop.security.group.mapping.provider.adServer.ldap.bind.user":"{AD_BIND_USER_DN}",
    "hadoop.security.group.mapping.provider.adServer.ldap.bind.password":"{AD_BIND_USER_PWD}",
    "hadoop.security.group.mapping.provider.adServer.ldap.search.filter.group":"(&(objectclass=group)(cn=*))",
    "hadoop.security.group.mapping.provider.adServer.ldap.search.filter.user":"(&(objectclass=user)(sAMAccountName={0}))",
    "hadoop.security.group.mapping.provider.adServer.ldap.search.attr.memberof":"memberOf",
    "hadoop.security.group.mapping.provider.adServer.ldap.search.attr.group.name":"cn",
    "hadoop.security.group.mapping.ldap.ssl":"false",
    "hadoop.security.group.mapping.provider.adServer.ldap.ssl.truststore":"",
    "hadoop.security.group.mapping.provider.adServer.ldap.ssl.truststore.password.file":"",
    

Per impostare tutti i mapping contemporaneamente, eseguire le operazioni riportate di seguito su un0.

  1. In un0, eseguire le operazioni riportate di seguito.
    export AMBARI_CONF_SCRIPT=/var/lib/ambari-server/resources/scripts/configs.py
  2. Raccogliere <ambari_password>, <un0_node_IP> e <cluster_name> (controllare il nome del cluster dall'interfaccia utente di Ambari), quindi eseguire le operazioni riportate di seguito per ottenere la configurazione core-site corrente.
    python ${AMBARI_CONF_SCRIPT} \
    --user=admin \
    --password='<ambari_password>' \
    --protocol=https --unsafe \
    --host=<un0_node_IP> \
    --port=7183 \
    --cluster=<cluster_name> \
    --config-type=core-site \
    --action=get \
    --file=/tmp/current_core-site.json
  3. Incollare le coppie chiave-valore con i valori appropriati nella serie chiave-valore dell'oggetto proprietà del file JSON di configurazione current_core-site.json, quindi aggiungere la seguente coppia chiave-valore all'oggetto password dell'oggetto properties_attributes.
    "password": {
       "hadoop.security.group.mapping.provider.ad4usersX.ldap.bind.password": "true" //the key-value pair to mask out your password in Ambari.
     },
  4. Per aggiornare la configurazione, eseguire le operazioni riportate di seguito.
    python ${AMBARI_CONF_SCRIPT} \
    --user=admin \
    --password='<ambari_password>' \
    --protocol=https --unsafe \
    --host=<un0_node_IP> \
    --port=7183 \
    --cluster=<cluster_name> \
    --config-type=core-site \
    --action=set \
    --file=/tmp/current_core-site.json
  5. Per impostazione predefinita, Hadoop aggiorna la cache di mapping utente-gruppo ogni 300 secondi. Per avere un intervallo di aggiornamento più piccolo, aggiungere la seguente coppia chiave-valore:
    "hadoop.security.groups.cache.secs":"<number of seconds you need>"
  6. Selezionare l'icona '...' di Servizi, quindi selezionare Riavvia tutto obbligatorio.

Configurazione del mapping dei gruppi Hadoop mediante SSSD (consigliato)

  1. Abilitare l'installazione dei pacchetti yum.
    sudo sed -i "s/enabled=0/enabled=1/g" /etc/yum.repos.d/oracle-linux-ol7.repo
  2. Trasferisci questa modifica a tutti i nodi.
    sudo dcli -f /etc/yum.repos.d/oracle-linux-ol7.repo -d /etc/yum.repos.d/oracle-linux-ol7.repo
  3. Installare il package richiesto.
    sudo dcli -C "yum -y install sssd realmd oddjob oddjob-mkhomedir adcli krb5-workstation samba-common-tools openldap-clients"
  4. Eseguire il comando realm con il parametro Discover per restituire informazioni sul dominio a cui si è uniti e verificare che il join si sia verificato.
    sudo realm join -v -U Administrator@<AD_REALM_NAME> <AD_REALM_NAME> --membership-software=adcli
    Nota

    Il join del realm utilizza samba/adcli per eseguire l'operazione di join del realm. Per applicare uno qualsiasi di essi, aggiungere --membership-software=<samba/adcli> per specificare il software di appartenenza che si desidera utilizzare.

    Per registrare un nome di computer diverso nel server AD, aggiungere --computer-name=<computer-name>.

    Per eseguire il join del realm su tutti i nodi del cluster, eseguire le operazioni riportate di seguito.

    cat /etc/hosts | grep -v 'local' | awk '{print $NF}' | while read line; do echo $line; ssh -n $line "sudo echo '<BIND_USER_PASSWORD>' | sudo realm join -v -U Administrator@<AD_REALM_NAME> <AD_REALM_NAME> --membership-software=adcli"; sleep 1; done

  5. Aggiorna /etc/sssd/sssd.conf. Nella sezione [domain/<AD_REALM_NAME>], effettuare i seguenti aggiornamenti.
    1. Modificare fully_qualified_names in False.

      sudo sed -i 's/use_fully_qualified_names = True/use_fully_qualified_names = False/g' /etc/sssd/sssd.conf

    2. (Facoltativo) Aggiungere quanto segue.
      ldap_user_search_base = cn=Users,dc=ad,dc=domain,dc=com
      ldap_group_search_base = cn=
      Users,dc=ad,dc=domain,dc=com
      Nota

      Per ogni segmento nel nome di dominio AD, è necessario disporre di una voce CC separata. AD esempio, se il nome di dominio AD è A.B.C.D.COM, è necessario includere questa lista di voci CC: dc=a,dc=b,dc=c,dc=d,dc=com,
  6. Trasferisce il file sssd.conf a tutti i nodi.
    sudo dcli -f /etc/sssd/sssd.conf -d /etc/sssd/sssd.conf
  7. riavviare il servizio SSSD.
    sudo dcli -C "/bin/systemctl restart sssd.service"
  8. Verificare che SSSD stia ottenendo le informazioni sull'utente e sul gruppo.
    sudo dcli -C "id Administrator"
    Nota

    Se si riceve una risposta id: Administrator: No such user, SSSD non funziona correttamente.