You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ni...@apache.org on 2019/09/09 14:31:49 UTC

[ranger] branch master updated: RANGER-2561 : add functionality in ranger to get default policy groups list from service config while creation of service and add that group to policies in that service

This is an automated email from the ASF dual-hosted git repository.

nikhil pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new 3c788da  RANGER-2561 : add functionality in ranger to get default policy groups list from service config while creation of service and add that group to policies in that service
3c788da is described below

commit 3c788da0080c680c4c0a4220c23970979908277e
Author: Nikhil P <ni...@apache.org>
AuthorDate: Mon Sep 9 12:13:41 2019 +0530

    RANGER-2561 : add functionality in ranger to get default policy groups list from service config while creation of service and add that group to policies in that service
    
    Change-Id: I0e86c6b643a106792d3c69f184a55656d65e5c8c
---
 .../ranger/plugin/service/RangerBaseService.java   | 45 ++++++++++++++++++++--
 1 file changed, 41 insertions(+), 4 deletions(-)

diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBaseService.java b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBaseService.java
index 8d4e16f..65734f4 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBaseService.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBaseService.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -325,7 +326,7 @@ public abstract class RangerBaseService {
 		RangerPolicy.RangerPolicyItem policyItem = new RangerPolicy.RangerPolicyItem();
 
 		policyItem.setUsers(getUserList());
-
+		policyItem.setGroups(getGroupList());
 		List<RangerPolicy.RangerPolicyItemAccess> accesses = getAllowedAccesses(policyResources);
 		policyItem.setAccesses(accesses);
 
@@ -400,17 +401,27 @@ public abstract class RangerBaseService {
 
 	private List<String> getUserList() {
 		List<String> ret = new ArrayList<>();
+
+		HashSet<String> uniqueUsers = new HashSet<String>();
+		String[] users = RangerConfiguration.getInstance().getStrings("ranger.default.policy.users");
+
+		if (users != null) {
+			for (String user : users) {
+				uniqueUsers.add(user);
+			}
+		}
+
 		Map<String, String> serviceConfig =  service.getConfigs();
 		if (serviceConfig != null ) {
                         String serviceConfigUser = serviceConfig.get("username");
                         if (StringUtils.isNotBlank(serviceConfigUser)){
-                                ret.add(serviceConfig.get("username"));
+                            uniqueUsers.add(serviceConfig.get("username"));
                         }
 			String defaultUsers = serviceConfig.get("default.policy.users");
 			if (!StringUtils.isEmpty(defaultUsers)) {
 				List<String> defaultUserList = new ArrayList<>(Arrays.asList(StringUtils.split(defaultUsers,",")));
 				if (!defaultUserList.isEmpty()) {
-					ret.addAll(defaultUserList);
+					uniqueUsers.addAll(defaultUserList);
 				}
 			}
 		}
@@ -421,8 +432,34 @@ public abstract class RangerBaseService {
 		String lookUpUser = getLookupUser(authType, lookupPrincipal, lookupKeytab);
 
 		if (StringUtils.isNotBlank(lookUpUser)) {
-			ret.add(lookUpUser);
+			uniqueUsers.add(lookUpUser);
+		}
+		ret.addAll(uniqueUsers);
+		return ret;
+	}
+	private List<String> getGroupList() {
+		List<String> ret = new ArrayList<>();
+
+		HashSet<String> uniqueGroups = new HashSet<String>();
+		String[] groups = RangerConfiguration.getInstance().getStrings("ranger.default.policy.groups");
+
+		if (groups != null) {
+			for (String group : groups) {
+				uniqueGroups.add(group);
+			}
+		}
+
+		Map<String, String> serviceConfig = service.getConfigs();
+		if (serviceConfig != null) {
+			String defaultGroups = serviceConfig.get("default.policy.groups");
+			if (!StringUtils.isEmpty(defaultGroups)) {
+				List<String> defaultGroupList = new ArrayList<>(Arrays.asList(StringUtils.split(defaultGroups, ",")));
+				if (!defaultGroupList.isEmpty()) {
+					uniqueGroups.addAll(defaultGroupList);
+				}
+			}
 		}
+		ret.addAll(uniqueGroups);
 
 		return ret;
 	}