blob: 211e0ed9dca4b6469426aec8dff2226cf83da7a6 [file] [log] [blame]
{
"serviceDef": {
"name": "hive",
"id": 3,
"resources": [
{
"name": "database",
"level": 1,
"mandatory": true,
"lookupSupported": true,
"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
"matcherOptions": {
"wildCard": true,
"ignoreCase": true
},
"label": "Hive Database",
"description": "Hive Database"
},
{
"name": "table",
"level": 2,
"parent": "database",
"mandatory": true,
"lookupSupported": true,
"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
"matcherOptions": {
"wildCard": true,
"ignoreCase": true
},
"label": "Hive Table",
"description": "Hive Table"
},
{
"name": "udf",
"level": 2,
"parent": "database",
"mandatory": true,
"lookupSupported": true,
"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
"matcherOptions": {
"wildCard": true,
"ignoreCase": true
},
"label": "Hive UDF",
"description": "Hive UDF"
},
{
"name": "column",
"level": 3,
"parent": "table",
"mandatory": true,
"lookupSupported": true,
"matcher": "org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher",
"matcherOptions": {
"wildCard": true,
"ignoreCase": true
},
"label": "Hive Column",
"description": "Hive Column"
}
],
"accessTypes": [
{
"name": "select",
"label": "Select"
},
{
"name": "update",
"label": "Update"
},
{
"name": "create",
"label": "Create"
},
{
"name": "drop",
"label": "Drop"
},
{
"name": "alter",
"label": "Alter"
},
{
"name": "index",
"label": "Index"
},
{
"name": "lock",
"label": "Lock"
},
{
"name": "all",
"label": "All"
}
]
},
"testCases": [
{
"name": "database=*:table=*",
"policyResources": {
"database": {"values": ["*"]},
"table": {"values": ["*"]}
},
"tests": [
{
"name": "NO MATCH for invalid resource level",
"type": "anyMatch",
"resource" : {
"elements" : { "database":"finance", "invalid-resource-name":"any"}
},
"evalContext": {},
"result" : false
}
,
{
"name": "NO MATCH for resource from different hierarchy 'finance:udf=some_udf",
"type": "anyMatch",
"resource" : {
"elements" : { "database":"finance", "udf":"some_udf"}
},
"evalContext": {},
"result" : false
}
,
{
"name": "MATCH for parent 'finance.tax.ssn'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for exact 'finance:tax'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for exact ''",
"type": "exactMatch",
"resource": {
"elements": {}
},
"evalContext": {},
"result": true
}
]
},
{
"name": "database=finance:table=tax",
"policyResources": {
"database": {"values": ["finance"]},
"table": {"values": ["tax"]}
},
"tests": [
{
"name": "MATCH for parent 'finance.tax.ssn'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for exact 'finance:tax'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child ''",
"type": "descendantMatch",
"resource": {
"elements": {}
},
"evalContext": {},
"result": true
}
]
},
{
"name": "database=*:table=tax",
"policyResources": {
"database": {"values": ["*"]},
"table": {"values": ["tax"]}
},
"tests": [
{
"name": "MATCH for parent 'finance.tax.ssn'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for exact 'finance:tax'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child ''",
"type": "descendantMatch",
"resource": {
"elements": {}
},
"evalContext": {},
"result": true
}
]
},
{
"name": "database=finance:table=*",
"policyResources": {
"database": {"values": ["finance"]},
"table": {"values": ["*"]}
},
"tests": [
{
"name": "MATCH for parent 'finance.tax.ssn'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for exact 'finance:tax'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child ''",
"type": "descendantMatch",
"resource": {
"elements": {}
},
"evalContext": {},
"result": true
}
]
},
{
"name": "database=finance",
"policyResources": {
"database": {"values": ["finance"]}
},
"tests": [
{
"name": "MATCH for parent 'finance.tax.ssn'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance:tax'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance:udf=compute_tax'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance","udf": "compute_tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for exact 'finance'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child ''",
"type": "descendantMatch",
"resource": {
"elements": {}
},
"evalContext": {},
"result": true
}
]
},
{
"name": "database=*",
"policyResources": {
"database": {"values": ["*"]}
},
"tests": [
{
"name": "NO MATCH for invalid resource level",
"type": "anyMatch",
"resource" : {
"elements" : { "database":"finance", "invalid-resource-name":"any"}
},
"evalContext": {},
"result" : false
}
,
{
"name": "MATCH for parent 'finance.tax.ssn'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance:tax'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance:udf=compute_tax'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance","udf": "compute_tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for exact 'finance'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for exact ''",
"type": "exactMatch",
"resource": {
"elements": {}
},
"evalContext": {},
"result": true
}
]
},
{
"name": "database=*:table=*:column=*",
"policyResources": {
"database": {"values": [ "*"] },
"table": {"values": ["*"]},
"column": {"values": ["*"]}
},
"tests": [
{
"name": "MATCH for exact 'finance.tax.ssn'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance:tax'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for exact ''",
"type": "exactMatch",
"resource": {
"elements": {}
},
"evalContext": {},
"result": true
}
,
{
"name": "NO MATCH for any 'finance::ssn'",
"type": "anyMatch",
"resource": {
"elements": {
"database": "finance","column":"ssn"
}
},
"evalContext": {},
"result": false
}
]
}
,
{
"name": "database=finance:table=tax:column=ssn",
"policyResources": {
"database": {"values": [ "finance"] },
"table": {"values": ["tax"]},
"column": {"values": ["ssn"]}
},
"tests": [
{
"name": "MATCH for exact 'finance.tax.ssn'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance:tax'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child ''",
"type": "descendantMatch",
"resource": {
"elements": {}
},
"evalContext": {},
"result": true
}
,
{
"name": "NO MATCH for any 'finance:udf=tax'",
"type": "anyMatch",
"resource": {
"elements": {
"database": "finance","udf":"tax"
}
},
"evalContext": {},
"result": false
}
]
}
,
{
"name": "database=*:table=*:column=ssn",
"policyResources": {
"database": {"values": [ "*"] },
"table": {"values": ["*"]},
"column": {"values": ["ssn"]}
},
"tests": [
{
"name": "MATCH for exact 'finance.tax.ssn'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance:tax'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
]
}
,
{
"name": "database=finance:table=*:column=*",
"policyResources": {
"database": {"values": [ "finance"] },
"table": {"values": ["*"]},
"column": {"values": ["*"]}
},
"tests": [
{
"name": "MATCH for exact 'finance.tax.ssn'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance:tax'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
]
}
,
{
"name": "database=*:table=tax:column=*",
"policyResources": {
"database": {"values": [ "*"] },
"table": {"values": ["tax"]},
"column": {"values": ["*"]}
},
"tests": [
{
"name": "MATCH for exact 'finance.tax.ssn'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance:tax'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
]
}
,
{
"name": "database=*:table=tax:column=ssn",
"policyResources": {
"database": {"values": [ "*"] },
"table": {"values": ["tax"]},
"column": {"values": ["ssn"]}
},
"tests": [
{
"name": "MATCH for exact 'finance.tax.ssn'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance:tax'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
]
}
,
{
"name": "database=finance:table=*:column=ssn",
"policyResources": {
"database": {"values": [ "finance"] },
"table": {"values": ["*"]},
"column": {"values": ["ssn"]}
},
"tests": [
{
"name": "MATCH for exact 'finance.tax.ssn'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance:tax'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
]
}
,
{
"name": "database=finance:table=tax:column=*",
"policyResources": {
"database": {"values": [ "finance"] },
"table": {"values": ["tax"]},
"column": {"values": ["*"]}
},
"tests": [
{
"name": "MATCH for exact 'finance.tax.ssn'",
"type": "exactMatch",
"resource": {
"elements": {"database": "finance", "table":"tax", "column":"ssn"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'finance:tax'",
"type": "ancestorMatch",
"resource": {
"elements": {"database": "finance","table": "tax"}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for child 'finance'",
"type": "descendantMatch",
"resource": {
"elements": {"database": "finance"}
},
"evalContext": {},
"result": true
}
]
}
,
{
"name": "empty policyresources",
"policyResources": {
},
"tests": [
{
"name": "MATCH for exact ''",
"type": "exactMatch",
"resource": {
"elements": {}
},
"evalContext": {},
"result": true
}
,
{
"name": "MATCH for parent 'default'",
"type": "anyMatch",
"resource": {
"elements": {"database": "default"}
},
"evalContext": {},
"result": false
}
]
}
]
}