L'autenticazione di PowerFlex tramite LDAP non funziona quando l'utente è membro di un percorso dell'unità organizzativa diverso dal gruppo
Summary: L'utente membro del gruppo di distribuzione assegnato alla configurazione del servizio LDAP non è riuscito ad accedere dopo aver abilitato l'autenticazione LDAP nel cluster ScaleIO.
Symptoms
Scenario
Configurazione dei servizi LDAP per ScaleIO nel cluster MDM o nel gateway con un singolo dominio Active Directory. Questo problema può verificarsi anche durante la configurazione degli utenti e del gruppo ScaleIO in unità organizzative diverse all'interno dello stesso dominio.
Sintomi
L'utente si trova in CN=testuser,OU=Users,OU=IT Dept,DC=swlab,DC=local
Il gruppo è: CN=Sio_Admin_Role,OU=GlobalGroups,OU=Groups,DC=swlab,DC=local
È possibile trovare i seguenti messaggi di avvertenza nel log di traccia del gateway o dell MDM.
Il messaggio di errore in gateway-trace.log è: 2017-06-14 11:49:46,587 [http-nio-443-exec-6] ERRORE c.e.s.s.w.s.ScaleIOSecurityUtils - User testuser non è stato trovato nel gruppo CN=Sio_Admin_Role,OU=GlobalGroups,OU=Groups,DC=swlab,DC=local
Impatto
Alcuni utenti non sono in grado di accedere al sistema o al gateway ScaleIO utilizzando l'autenticazione LDAP.
Cause
Root cause
La root cause di questo problema è che il parametro "--ldap_base_dn" utilizzato quando il servizio LDAP è stato aggiunto al cluster ScaleIO aveva un livello troppo basso.
Vedere la configurazione riportata di seguito per il problema di esempio precedente:
scli --add_ldap_service --ldap_service_uri "ldap://swlab.local" --ldap_base_dn "OU=GlobalGroups,OU=Groups,DC=swlab,DC=local" --ldap_service_name testldap scli --assign_ldap_groups_to_roles --administrator_role_dn "CN=Sio_Admin_Role,OU=GlobalGroups,OU=Groups,DC=swlab,DC=local" --monitor_role_dn "CN=Sio_Admin_Role,OU=GlobalGroups,OU=Groups,DC=swlab,DC=local" --ldap_service_name testldap
In questo modo il DN di base inizia la ricerca troppo in basso nello schema hive di Active Directory. Quando si parte da "swlab.local/Groups/GlobalGroups", LDAP non può eseguire query per un utente a un livello superiore.
Quindi, in questo caso, "testuser" esiste in "swlab.local/IT Dept/Users/testuser", quindi quando viene eseguita una query sul gruppo "Sio_Admin_Role" tenta di trovare nuovamente l'utente membro sotto il base_dn.
L'utente non esiste e l'accesso non riesce.
Resolution
Soluzione alternativa
Per risolvere questo problema, ricreare il servizio LDAP in ScaleIO e utilizzare una base_dn di livello superiore. Per l'esempio precedente, è possibile modificare quanto segue nel comando "add_ldap_service" scli.
scli --add_ldap_service --ldap_service_uri "ldap://swlab.local" --ldap_base_dn "DC=swlab,DC=local" --ldap_service_name testldap
Modificando il base_dn in modo che sia la radice del dominio, LDAP può eseguire una query su qualsiasi unità organizzativa o CN per l'utente appropriato membro del gruppo di ruoli SIO.