[
https://issues.apache.org/jira/browse/RANGER-5620?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18084345#comment-18084345
]
Wojciech Gasior commented on RANGER-5620:
-----------------------------------------
Pr with fix and new test: https://github.com/apache/ranger/pull/987
> Ranger UserSync NullPointerException when LDAP returns empty result set
> causes group associations to be dropped on restart
> --------------------------------------------------------------------------------------------------------------------------
>
> Key: RANGER-5620
> URL: https://issues.apache.org/jira/browse/RANGER-5620
> Project: Ranger
> Issue Type: Bug
> Components: Ranger
> Affects Versions: 2.5.0, 2.6.0, 2.7.0, 2.8.0
> Reporter: Wojciech Gasior
> Priority: Major
>
> On {*}usersync restart{*}, the following error surfaces and causes group
> memberships to be dropped for a large number of users, impacting their access:
>
> {{ERROR o.a.r.l.p.LdapUserGroupBuilder [UnixUserSyncThread] - Failed to
> update ranger admin.Will retry in next sync cycle!!java.lang.Exception:
> Failed to addorUpdate users to ranger admin at
> org.apache.ranger.unixusersync.process.PolicyMgrUserGroupBuilder.addOrUpdateUsers(PolicyMgrUserGroupBuilder.java:588)
> at
> org.apache.ranger.unixusersync.process.PolicyMgrUserGroupBuilder.addOrUpdateUsersGroups(PolicyMgrUserGroupBuilder.java:329)
> at
> org.apache.ranger.ldapusersync.process.LdapUserGroupBuilder.updateSink(LdapUserGroupBuilder.java:417)
> at
> org.apache.ranger.usergroupsync.UserGroupSync.syncUserGroup(UserGroupSync.java:115)}}
> In the initial failure instance, the root cause was identified as a *firewall
> policy blocking LDAP calls* from the Ranger container - DNS was resolving to
> EU GC IPs, but firewall rules only allowed NA GC IPs. When the LDAP phase
> returned 0 groups and 0 users, the {{PolicyMgrUserGroupBuilder}} hit a null
> delta map path:
>
> {{java.lang.NullPointerException: Cannot invoke "java.util.Map.get(Object)"
> because "this.deltaGroupUsers" is null at
> org.apache.ranger.unixusersync.process.PolicyMgrUserGroupBuilder.addOrUpdateUsersGroups(PolicyMgrUserGroupBuilder.java:372)}}
> Production has been restored, but the {*}"Failed to addOrUpdate users to
> ranger admin" error recurs on each usersync restart{*}, causing group
> associations to be cleared for a large number of users.
> h2. Customer Impact
> * *Severity:* High (production access impacted during incident; ongoing
> restart behavior clears group associations)
> * *Affected users:* Large portion of ~6,800 expected Gilead Starburst users
> lose group associations on restart
> * *Behavior:* Usersync should not be clearing existing group associations on
> restart; this is an unexpected regression
> h2. Root Cause Analysis
> The {{PolicyMgrUserGroupBuilder.addOrUpdateUsersGroups()}} method does not
> guard against a null {{deltaGroupUsers}} map when the LDAP source returns an
> empty result set (0 groups, 0 users). Instead of gracefully skipping the
> update cycle, it throws an NPE that propagates as a generic "Failed to
> addorUpdate users" error. The null delta path then causes existing user-group
> associations in Ranger to be dropped.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)