Vyom Mani Tiwari created RANGER-5838:
----------------------------------------

             Summary: Add constraintDefs to RangerServiceDef and constraint 
policy model to RangerPolicy
                 Key: RANGER-5838
                 URL: https://issues.apache.org/jira/browse/RANGER-5838
             Project: Ranger
          Issue Type: Improvement
          Components: Ranger
            Reporter: Vyom Mani Tiwari
            Assignee: Vyom Mani Tiwari


Add the data model for constraint policies. This change only adds model classes 
and JSON serialization. There is no change to policy evaluation, Admin 
persistence, audit, or UI.

*RangerServiceDef*
 * New field {{{}List<RangerConstraintDef> constraintDefs{}}}.
 * {{{}RangerConstraintDef{}}}: itemId, name, label, description, rbKeyLabel, 
rbKeyDescription, resources (resource names the constraint applies to), 
accessTypes (access-type names), parameters 
({{{}List<RangerConstraintParamDef>{}}}), options ({{{}Map<String, String>{}}}).
 * {{{}RangerConstraintParamDef{}}}: itemId, name, label, description, type 
(e.g. string, int, boolean, user, group, role), mandatory, defaultValue, 
rbKeyLabel, rbKeyDescription.
 * dataMaskDef and rowFilterDef are unchanged.

*RangerPolicy*
 * New constant {{{}POLICY_TYPE_CONSTRAINTS = 4{}}}. It is not added to 
{{POLICY_TYPES}} in this change, so existing engine and Admin code paths that 
iterate policy types are unaffected until evaluation support is added.
 * New field {{{}List<RangerConstraintPolicyItem> constraintPolicyItems{}}}.
 * {{{}RangerConstraintPolicyItem extends RangerPolicyItem{}}}, carrying 
{{{}RangerPolicyItemConstraintInfo{}}}: constraintName and parameters 
({{{}Map<String, Object>{}}}). This follows the pattern of 
RangerDataMaskPolicyItem/RangerPolicyItemDataMaskInfo, so principals, accesses 
and conditions work as for other policy items.

Example constraintDef:
 
json

{{{color:#008000}"constraintDefs"{color}: 
{color:#2b303b}[{{color}{color:#2b303b}"{color}{color:#b80a18}itemId{color}{color:#2b303b}"{color}{color:#2b303b}:{color}
 {color:#008080}1{color}{color:#2b303b},{color} 
{color:#2b303b}"{color}{color:#b80a18}name{color}{color:#2b303b}"{color}{color:#2b303b}:{color}
 {color:#008000}"requireApproval"{color}{color:#2b303b},{color} 
{color:#2b303b}"{color}{color:#b80a18}label{color}{color:#2b303b}"{color}{color:#2b303b}:{color}
 {color:#008000}"Require 
approval"{color}{color:#2b303b},{color}{color:#2b303b}"{color}{color:#b80a18}resources{color}{color:#2b303b}"{color}{color:#2b303b}:{color}
 {color:#2b303b}[{color}{color:#008000}"tool"{color}{color:#2b303b}],{color} 
{color:#2b303b}"{color}{color:#b80a18}accessTypes{color}{color:#2b303b}"{color}{color:#2b303b}:{color}
 
{color:#2b303b}[{color}{color:#008000}"execute"{color}{color:#2b303b}],{color}{color:#2b303b}"{color}{color:#b80a18}parameters{color}{color:#2b303b}"{color}{color:#2b303b}:{color}
 {color:#2b303b}[{{color} 
{color:#2b303b}"{color}{color:#b80a18}itemId{color}{color:#2b303b}"{color}{color:#2b303b}:{color}
 {color:#008080}1{color}{color:#2b303b},{color} 
{color:#2b303b}"{color}{color:#b80a18}name{color}{color:#2b303b}"{color}{color:#2b303b}:{color}
 {color:#008000}"approver"{color}{color:#2b303b},{color} 
{color:#2b303b}"{color}{color:#b80a18}label{color}{color:#2b303b}"{color}{color:#2b303b}:{color}
 {color:#008000}"Approver"{color}{color:#2b303b},{color} 
{color:#2b303b}"{color}{color:#b80a18}type{color}{color:#2b303b}"{color}{color:#2b303b}:{color}
 {color:#008000}"user"{color}{color:#2b303b},{color} 
{color:#2b303b}"{color}{color:#b80a18}mandatory{color}{color:#2b303b}"{color}{color:#2b303b}:{color}
 {color:#008080}true{color} {color:#2b303b}}]{color}{color:#2b303b}}]{color}}}
*Out of scope (separate sub-tasks):* DB schema and Admin validation, evaluation 
in the policy engine, supported-constraint registration, audit, authz-api/PDP 
result, UI, plugin capability gating.



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

Reply via email to