You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ranger.apache.org by "Barbara Eckman (Jira)" <ji...@apache.org> on 2023/05/10 18:29:00 UTC

[jira] [Created] (RANGER-4234) eliminate need for splitting delim strings into arrays in policy conditions

Barbara Eckman created RANGER-4234:
--------------------------------------

             Summary: eliminate need for splitting delim strings into arrays in policy conditions
                 Key: RANGER-4234
                 URL: https://issues.apache.org/jira/browse/RANGER-4234
             Project: Ranger
          Issue Type: Improvement
          Components: plugins, Ranger
            Reporter: Barbara Eckman
            Assignee: Barbara Eckman


RANGER-3940 created javascript polyfills to support set operations in policy conditions and row filters via includes() and intersects().  Since Ranger doesn't support arrays in tag or userStore attribute values, in order to do these set operations we need to convert a delimited string into an array via split().  This results in undesirably complex conditions, relatively hard to maintain and error-prone.  

I propose using the "[[...]]" syntax to indicate that an element is semantically an array.  I've written a java method to replace the double brackets with the split() syntax before the script or row filter is executed.  If no delimiter is explicitly given, "," is assumed.  

Examples:
|*As written in policy/row filter condition*|*As sent for evaluation*|
|[[USER[TAG._type],"f"]].intersects([[TAG.value]])|USER[TAG._type].split("f").intersects(TAG.value.split(","))|
|[["${\{USER.partners}}"]].includes(partner)|"${\{USER.partners}}".split(",").includes(partner)|

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)