You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

We want to be able to craft policies by an expression instead of creating loaders or tons of reference groups based on cartesian products of basis/ref groups.

Individual groups can be configured to automatically have their membership managed with individual subject or other basis groups.

Two Grouper tables will be constructed

Table nameDescription
grouper_abac_group_attributesRows for groups and attribute names and values
grouper_abac_subject_attributesRow for subjects and attribute names and values

These tables are managed by grouper based on configuration. 

The group attribute values come from the attribute framework which could be automatically fed from external systems of record.  For now, an OtherJob could do this on a schedule.

grouper_abac_group_attributes
Group nameAttribute nameAttribute value
ref:course:term:cis123campuspalmer
ref:course:term:cis123campussouthern
ref:course:term:cis124campusnorthern
ref:course:term:cis124termStart8/1/2020
ref:course:term:cis124termEnd1/1/2020

The individual attribute values are fed from basis/ref groups and the values can be transformed from the group name to something that has institutional meaning.  This can happen from attribute or from text manipulation

grouper_abac_subject_attributes
Subject idSource idAttribute nameAttribute value
jsmithpersonaffiliationstaff
jsmithpersondeptmath
jsmithpersondeptphysics
rjohnsonpersonschoolengineering
wturnerpersonprimaryAffiliationfaculty

Group somewhere in registry has a GraphQL or some other type expression.  Boolean logic and wildcards are required

GroupTypeExpressionDescription
org:whatever:app:somePolicyref/bassis groups as members(groups(campus in ['palmer', southern'] and termStart - 7 > sysdate and termEnd + 7 < sysdate)) Give me groups as members where campus and term match
org:whatever2:app2:somePolicy2subjects as members(subjects(primaryAffiliation in ['faculty', 'staff'] and dept in ['physics', 'math']))Subjects in a role and dept
org:whatever3:app3:somePolicy3could have some groups and subjects

(groups(campus in ['palmer', southern'] and termStart - 7 > sysdate and termEnd + 7 < sysdate)

or subjects(primaryAffiliation in ['faculty', 'staff'] and dept in ['physics', 'math'])))

Take some group populations and substract out some subject

The expression can only be written by people who can READ groups in the abac group/subject tables.

A nightly full sync will occur.

An incremental change log consumer can see which memberships change (or attribute values) and which policies those refer to, and incrementally adjust the membership of those groups.

  • No labels