diff --git a/security-admin/src/main/java/org/apache/ranger/common/RangerUserStoreCache.java b/security-admin/src/main/java/org/apache/ranger/common/RangerUserStoreCache.java index 1b1c1bfc95..0d68cea532 100644 --- a/security-admin/src/main/java/org/apache/ranger/common/RangerUserStoreCache.java +++ b/security-admin/src/main/java/org/apache/ranger/common/RangerUserStoreCache.java @@ -27,6 +27,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Set; @@ -42,6 +43,7 @@ public class RangerUserStoreCache { private final int waitTimeInSeconds; private final boolean dedupStrings; + private final boolean includeUserGroupMappings; private final ReentrantLock lock = new ReentrantLock(); private RangerUserStore rangerUserStore; @@ -49,6 +51,7 @@ private RangerUserStoreCache() { RangerAdminConfig config = RangerAdminConfig.getInstance(); this.waitTimeInSeconds = config.getInt("ranger.admin.userstore.download.cache.max.waittime.for.update", MAX_WAIT_TIME_FOR_UPDATE); + this.includeUserGroupMappings = config.getBoolean("ranger.admin.userstore.include.usergroups.mappings", false); this.dedupStrings = config.getBoolean("ranger.admin.userstore.dedup.strings", Boolean.TRUE); this.rangerUserStore = new RangerUserStore(); } @@ -93,7 +96,7 @@ public RangerUserStore getLatestRangerUserStoreOrCached(XUserMgr xUserMgr) { final long startTimeMs = System.currentTimeMillis(); final Set rangerUsersInDB = xUserMgr.getUsers(); final Set rangerGroupsInDB = xUserMgr.getGroups(); - final Map> userGroups = xUserMgr.getUserGroups(); + final Map> userGroups = includeUserGroupMappings ? xUserMgr.getUserGroups() : new HashMap<>(); final long dbLoadTime = System.currentTimeMillis() - startTimeMs; if (LOG.isDebugEnabled()) { diff --git a/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml b/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml index 330d9f69b6..17c9aec1c2 100644 --- a/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml +++ b/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml @@ -389,6 +389,16 @@ ranger.downloadpolicy.session.log.enabled false + + + ranger.admin.userstore.include.usergroups.mappings + false + + When set to true, the user-store download API includes the user-to-group mappings (userGroupMapping) in the response payload, + + + + ranger.kms.service.user.hdfs