-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/40019/
-----------------------------------------------------------
Review request for Ambari, Dmytro Sen and Robert Levas.
Bugs: AMBARI-13767
https://issues.apache.org/jira/browse/AMBARI-13767
Repository: ambari
Description
-------
Group Membership not pulled in with FreeIPA/RHELIDM
In FreeIPA/RHEL (389 DS for the directory server implementation) the DN is not
an attribute on the user, and cannot be used in a filter like this:
(&(objectClass=posixaccount)(|(dn=uid=dstreev,cn=users,cn=accounts,dc=hdp,dc=local)(uid=uid=dstreev,cn=users,cn=accounts,dc=hdp,dc=local)))
In some cases all of the groups/users are gathered from an ldap query (then put
into a set). I did the same, after ther filter the results based on dn (or
uid/groupname if that is the case) in the java code.
Notes:
- I filter the groups in memory, so there are some new places where I gathered
all of the groups/users. (we alrady do that actually) maybe that can cause bad
performance during the sync. I will do a performance testing with a lot of
users at the weekend, and see how much we should wait based on the number of
users,groups or on the nested group structure. in case of performance issues: I
have an another solution :
MemberAttributes can be used to query/filter on the groups/users. E.g.: in
openldap the member attributes are names, like: hive,hadoop etc. -> there we
can use the actual solution. In another providers, like freeIPA the member
attributes looks like: uid=hive,cn=..., that means these attributes can be used
in queries as the baseDN (so dn part is not needed in the filter), than the
query wont fail. (I did not want to choose this solution for avoiding
conditions based on how memberattributes looks like in different providers)
- there is no group-group relation in ambari. for nested groups: currently we
don't see the user members in the upper groups. I could flatten the users to
the upper groups during the sync, but it is not the right way to do it, because
in case of we delete a user from the subgroup and we syncing only on the
subgroup, the users are not deleted from the upper groups. (we can do that, but
then we sync all of the groups..)
-> the right way should be if we would see the subgroups in the upper groups
(for that, we need the group-group relationship in the future)
Diffs
-----
ambari-server/src/main/java/org/apache/ambari/server/security/ldap/AmbariLdapDataPopulator.java
103cfcb
ambari-server/src/main/java/org/apache/ambari/server/security/ldap/LdapGroupDto.java
132cbe5
ambari-server/src/test/java/org/apache/ambari/server/security/ldap/AmbariLdapDataPopulatorTest.java
3f4f7b5
Diff: https://reviews.apache.org/r/40019/diff/
Testing
-------
In progress ...
Thanks,
Oliver Szabo