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

Compare with Current View Page History

« Previous Version 7 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.

Tables

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. 

Group attribute table

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 valueActiveNext start timeLast end time
ref:course:term:cis123campuspalmer


ref:course:term:cis123campussouthern


ref:course:term:cis124campusnorthern


ref:course:term:cis124termStart8/1/2020 (note, this is actually integer seconds since 1970)


ref:course:term:cis124termEnd1/1/2020


ref:course:term:cis124thisTermT


Loading attributes to groups

This can use a similar format to the marker / name-value pair convention for attributes, or can just be attributes on groups.  i.e. the marker attribute column is optional.  Types will be converted (e.g. the varchar "24" will be converted to 24 if the attribute is integer based).  Note: dates can be converted to the appropriate type (e.g. from date column to integer seconds from 1970)

SQL query with columns, eventually a loader job
Group nameAttribute marker nameAttribute nameAttribute valueActiveNext start time
ref:course:term:cis123etc:attribute:mySchool:course:courseetc:attribute:mySchool:course:campuspalmer

ref:course:term:cis123etc:attribute:mySchool:course:courseetc:attribute:mySchool:course:campussouthern

ref:course:term:cis124etc:attribute:mySchool:course:termStartetc:attribute:mySchool:course:termStart8/1/2020

Subject attribute table

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 valueActiveNext start timeLast end time
jsmithpersonaffiliationstaffT

jsmithpersondeptmathT

jsmithpersondeptphysicsT

rjohnsonpersonschoolengineeringF
11/1/2020
wturnerpersonprimaryAffiliationfacultyT

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