-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62969/
-----------------------------------------------------------

Review request for ranger, Ankita Sinha, Don Bosco Durai, bhavik patel, Gautam 
Borad, Abhay Kulkarni, Madhan Neethiraj, Mehul Parikh, Ramesh Mani, Selvamohan 
Neethiraj, Sailaja Polavarapu, and Velmurugan Periasamy.


Bugs: RANGER-1832
    https://issues.apache.org/jira/browse/RANGER-1832


Repository: ranger


Description
-------

**Problem Statement:** Currently, Export REST API returns partial matching 
results also even if polResource param is provided.
Use Case : 
1) Create a ranger hdfs policy with resource path /tmp/abcdefg
2) Call REST API to export policy for resource path: /tmp/abcd
http://localhost:6080/service/plugins/policies/exportJson?serviceName=source_hadoop&polResource=/tmp/abcd&resource:path=/tmp/abcd&serviceType=hdfs&resourceMatchScope=self_or_ancestor";

Expected Result: REST call should not return policy for resource /tmp/abcdefg
Actual Result: REST call is returning policy for resource /tmp/abcdefg

**Proposed Solution:**
Added a method in ServiceUtil.getMatchingPoliciesForResource() which shall 
filter out partial matching resource policies according to given resource. 

** Note :** Proposed solution is having support of only HDFS and Hive 
service/resource type; support for other services can be added later.


Diffs
-----

  security-admin/src/main/java/org/apache/ranger/common/ServiceUtil.java 
6864c5a 
  security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java 9330edd 


Diff: https://reviews.apache.org/r/62969/diff/1/


Testing
-------

**Steps Performed (with patch):**
1. After mvn Build; untar the Ranger module and updated install.properties for 
MySQL DB flavor. 
2. Called setup.sh to execute Ranger setup script. 
3. Started Ranger admin.

**Steps for HDFS service:**
1. Created a hdfs service 'source_hadoop'.
2. Created a ranger hdfs policy(hdfs_policy1) with resource path /tmp/abcdefg
3. Created a ranger hdfs policy(hdfs_policy2) with resource path: /tmp/abcd
4. Created a ranger hdfs policy(hdfs_policy3) with resource path: 
/tmp/abcd/file.txt
5. Called below given REST API to export policies for resource path: /tmp/abcd
http://localhost:6080/service/plugins/policies/exportJson?serviceName=source_hadoop&polResource=/tmp/abcd&resource:path=/tmp/abcd&serviceType=hdfs&resourceMatchScope=self_or_ancestor";

**Expected Behavior:**
Above REST should return two policies(hdfs_policy2 and hdfs_policy3) which are 
having resource /tmp/abcd and /tmp/abcd/file.txt respectively.

**Actual Behavior:**
Returned JSON response was having only two policies(hdfs_policy2 and 
hdfs_policy3).

---

**Steps for HIVE service:**
1. Created a hive service 'source_hive'.
2. Created a ranger hive policy(hive_policy1) with 
resource:database=default123,table=*,column=*
3. Created a ranger hive policy(hive_policy2) with 
resource:database=default,table=*,column=*
4. Created a ranger hive datamask policy(hive_policy3) with 
resource:database=default,table=table1,column=column1
5. Created a ranger hive rowlevel filter policy(hive_policy4) with 
resource:database=default,table=table2
6. Called below given REST API to export policies for resource:database=default
http://localhost:6080/service/plugins/policies/exportJson?serviceName=source_hive&polResource=default&resource:database=default&serviceType=hive&resourceMatchScope=self_or_ancestor";

**Expected Behavior:**
Above REST should return three policies(hive_policy2, hive_policy3 and 
hive_policy4).

**Actual Behavior:**
Returned JSON response was having only three policies(hive_policy2, 
hive_policy3 and hive_policy4).


Thanks,

Pradeep Agrawal

Reply via email to