-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74941/
-----------------------------------------------------------
(Updated March 21, 2024, 5:36 a.m.)
Review request for ranger, Asit Vadhavkar, Madhan Neethiraj, Monika Kachhadiya,
Siddhesh Phatak, and Subhrat Chaudhary.
Bugs: RANGER-4749
https://issues.apache.org/jira/browse/RANGER-4749
Repository: ranger
Description
-------
Created new tag api which will get the service resource by comparing the
resouse signature of the resource from request. (GET -
service/tags/resource/service/{serviceName}/resource?resource:database=db1&resource:database.isExcludes=false&resource:database.isRecursive=false)
Added list of tags to the service/tags/resource/paginated api which will return
all the tags which are associated with the resource.
Added freetext search on resource, and multiple search of tagNames in
service/tags/resources/paginated api -
1 - service/tags/resources/paginated?tagServiceName=hive&resourceElements=Cust_
2 -
service/tags/resources/paginated?tagServiceName=hive&tagNames=SSN&tagNames=PII_NAME
Diffs (updated)
-----
agents-common/src/main/java/org/apache/ranger/authorization/utils/JsonUtils.java
716a1a9ea
agents-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceResourceWithTags.java
PRE-CREATION
agents-common/src/main/java/org/apache/ranger/plugin/util/SearchFilter.java
b0fad0aea
security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java a472fe131
security-admin/src/main/java/org/apache/ranger/common/RangerSearchUtil.java
c816ad229
security-admin/src/main/java/org/apache/ranger/rest/TagREST.java 09d771565
security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsService.java
PRE-CREATION
security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceWithTagsServiceBase.java
PRE-CREATION
security-admin/src/main/java/org/apache/ranger/view/RangerServiceResourceWithTagsList.java
PRE-CREATION
security-admin/src/test/java/org/apache/ranger/biz/TestTagDBStore.java
d6ebbc54d
security-admin/src/test/java/org/apache/ranger/rest/TestTagREST.java
98d87bc0a
Diff: https://reviews.apache.org/r/74941/diff/7/
Changes: https://reviews.apache.org/r/74941/diff/6-7/
Testing
-------
Validated GET - service/tags/resource/service/{serviceName}/resource with
postive and negative case.
Sample URL -
/service/tags/resource/service/hive8/resource?resource:column=NAME&resource:column.isExcludes=false&resource:column.isRecursive=true&resource:database=HR-DB-1&resource:database.isExcludes=false&resource:database.isRecursive=true&resource:table=EMPLOYEE&resource:table.isExcludes=false&resource:table.isRecursive=true&resource:database=HR-DB-2
Response:
{
"id": 21,
"guid": "1acaa4c9-1f1a-4328-b265-bde77c94f98f",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1710999025297,
"updateTime": 1710999025362,
"version": 4,
"serviceName": "hive8",
"resourceElements": {
"column": {
"values": [
"NAME"
],
"isExcludes": false,
"isRecursive": true
},
"database": {
"values": [
"HR-DB-2",
"HR-DB-1"
],
"isExcludes": false,
"isRecursive": true
},
"table": {
"values": [
"EMPLOYEE"
],
"isExcludes": false,
"isRecursive": true
}
},
"resourceSignature":
"24a4a0329c4c62f6a76d19231f5f748ef2e49de0301ebe9af2991a19e5b198a9"
}
The values of resource can be multiple -
resource:database=db1&resource:database=db2
For isExcludes and isRecursive there will be a subkey -
resource:database.isExcludes=false&resource:databasase.isRecursive=true
Validated response of service/tags/resources/paginated?tagServiceName=hive api
Sample response
{
"startIndex": 0,
"pageSize": 5,
"totalCount": 1,
"resultSize": 1,
"sortType": "asc",
"sortBy": "resourceId",
"queryTimeMS": 1710869881240,
"resourceList": [
{
"id": 2,
"guid": "3bc097ea-0685-48ea-84c2-ca02518f7738",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1707986829922,
"updateTime": 1708247930089,
"version": 3,
"serviceName": "hive",
"resourceElements": {
"database": {
"values": [
"db1"
],
"isExcludes": false,
"isRecursive": false
},
"column": {
"values": [
"*"
],
"isExcludes": false,
"isRecursive": false
},
"table": {
"values": [
"tbl1"
],
"isExcludes": false,
"isRecursive": false
}
},
"associatedTags": [
{
"id": 2,
"guid": "a1d21642-3f4c-4557-9226-372d3dce5a64",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1707986831329,
"updateTime": 1707986831556,
"type": "PII_NAME",
"owner": 0,
"attributes": {
"lastname": "stark"
}
}
]
}
]
}
Validated service/tags/resources/paginated api with resourceElements and
tagNames for freestext resource search and multiple tagNames search
respectively.
Case 1: Freetext search on resource in service/tags/resources/paginated api
URL -
/service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_
Response
{
"startIndex": 0,
"pageSize": 5,
"totalCount": 1,
"resultSize": 1,
"sortType": "asc",
"sortBy": "resourceId",
"queryTimeMS": 1710997850035,
"resourceList": [
{
"id": 20,
"guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1710997840878,
"updateTime": 1710997840890,
"version": 2,
"serviceName": "hive",
"resourceElements": {
"column": {
"values": [
"name"
],
"isExcludes": false,
"isRecursive": true
},
"database": {
"values": [
"Customer"
],
"isExcludes": false,
"isRecursive": true
},
"table": {
"values": [
"Cust_Personal_Details"
],
"isExcludes": false,
"isRecursive": true
}
},
"associatedTags": [
{
"id": 30,
"guid": "7c2a3070-5046-4352-b427-b38e3973a305",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1710997840881,
"updateTime": 1710997840883,
"type": "PII_NAME",
"owner": 0
}
]
}
]
}
Case 2: Multiple tagNames search on GET service/tags/resources/paginated api
URL -
/service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&tagNames=PII_NAME&tagNames=SSN
Response:
{
"startIndex": 0,
"pageSize": 5,
"totalCount": 2,
"resultSize": 2,
"sortType": "asc",
"sortBy": "resourceId",
"queryTimeMS": 1710997939080,
"resourceList": [
{
"id": 19,
"guid": "8d9f4f28-a443-4ff7-bfca-dde2af764eab",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1710997450099,
"updateTime": 1710997450146,
"version": 3,
"serviceName": "hive",
"resourceElements": {
"column": {
"values": [
"name"
],
"isExcludes": false,
"isRecursive": true
},
"database": {
"values": [
"db1"
],
"isExcludes": false,
"isRecursive": true
},
"table": {
"values": [
"employee"
],
"isExcludes": false,
"isRecursive": true
}
},
"associatedTags": [
{
"id": 28,
"guid": "229c733c-71c1-45a9-a18a-c6a62dd6b95b",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1710997450106,
"updateTime": 1710997450109,
"type": "PII_NAME",
"owner": 0
},
{
"id": 29,
"guid": "8027085b-4fe5-45bb-9be2-a8e134218bb9",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1710997450138,
"updateTime": 1710997450140,
"type": "SSN",
"owner": 0
}
]
},
{
"id": 20,
"guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1710997840878,
"updateTime": 1710997840890,
"version": 2,
"serviceName": "hive",
"resourceElements": {
"column": {
"values": [
"name"
],
"isExcludes": false,
"isRecursive": true
},
"database": {
"values": [
"Customer"
],
"isExcludes": false,
"isRecursive": true
},
"table": {
"values": [
"Cust_Personal_Details"
],
"isExcludes": false,
"isRecursive": true
}
},
"associatedTags": [
{
"id": 30,
"guid": "7c2a3070-5046-4352-b427-b38e3973a305",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1710997840881,
"updateTime": 1710997840883,
"type": "PII_NAME",
"owner": 0
}
]
}
]
}
Case 3: With Freetext search and mutiple search on tagNames
URL -
/service/tags/resources/paginated?pageSize=5&startIndex=0&tagServiceName=hive&resourceElements=Cust_&tagNames=PII_NAME&tagNames=SSN
Response:
{
"startIndex": 0,
"pageSize": 5,
"totalCount": 1,
"resultSize": 1,
"sortType": "asc",
"sortBy": "resourceId",
"queryTimeMS": 1710998019080,
"resourceList": [
{
"id": 20,
"guid": "0ad5fe2a-ae82-42ac-8079-7f6a90186f75",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1710997840878,
"updateTime": 1710997840890,
"version": 2,
"serviceName": "hive",
"resourceElements": {
"column": {
"values": [
"name"
],
"isExcludes": false,
"isRecursive": true
},
"database": {
"values": [
"Customer"
],
"isExcludes": false,
"isRecursive": true
},
"table": {
"values": [
"Cust_Personal_Details"
],
"isExcludes": false,
"isRecursive": true
}
},
"associatedTags": [
{
"id": 30,
"guid": "7c2a3070-5046-4352-b427-b38e3973a305",
"isEnabled": true,
"createdBy": "Admin",
"updatedBy": "Admin",
"createTime": 1710997840881,
"updateTime": 1710997840883,
"type": "PII_NAME",
"owner": 0
}
]
}
]
}
Thanks,
Anand Nadar