Column Level Security¶
Column level security is implemented by mapping allowed columns to a list of SAS groups. In VIEW mode, only allowed columns are visible. In EDIT mode, allowed columns are editable - the remaining columns are read-only.
Below is an example of an EDIT table with only one column enabled for editing:
See also: Row Level Security.
Configuration¶
The variables in MPE_COLUMN_LEVEL_SECURITY should be configured as follows:
CLS_SCOPE¶
Determines whether the rule applies to the VIEW page, the EDIT page, or ALL pages. The impact of the rule varies as follows:
VIEW Scope¶
When CLS_SCOPE in ('VIEW','ALL')
then only the listed columns are visible (unless CLS_HIDE=1
)
EDIT Scope¶
When CLS_SCOPE in ('EDIT','ALL')
then only the listed columns are editable (the remaining columns are read-only, and visible). Furthermore:
- The user will be unable to ADD or DELETE records.
- Primary Key values are always read only
- Primary Key values cannot be hidden (
CLS_HIDE=1
will have no effect)
CLS_GROUP¶
The SAS Group to which the rule applies. The user could also be a member of a DC group.
- If a user is in ANY of the groups, the columns will be restricted.
- If a user is in NONE of the groups, no restrictions apply (all columns available).
- If a user is in MULTIPLE groups, they will see all allowed columns across all groups.
- If a user is in the Data Controller Admin Group, CLS rules DO NOT APPLY.
CLS_LIBREF¶
The library of the target table against which the security rule will be applied
CLS_TABLE¶
The target table against which the security rule will be applied
CLS_VARIABLE_NM¶
This is the name of the variable against which the security rule will be applied. Note that
CLS_ACTIVE¶
If you would like this rule to be applied, be sure this value is set to 1.
CLS_HIDE¶
This variable can be set to 1
to hide specific variables, which allows greater control over the EDIT screen in particular. CLS_SCOPE behaviour is impacted as follows:
ALL
- the variable will not be visible in either VIEW or EDIT.EDIT
- the variable will not be visible. Cannot be applied to a primary key column.VIEW
- the variable will not be visible. Can be applied to a primary key column. Simply omitting the row, or setting CLS_ACTIVE to 0, would result in the same behaviour.
It is possible that a variable can have multiple values for CLS_HIDE, eg if a user is in multiple groups, or if different rules apply for different scopes. In this case, if the user is any group where this variable is NOT hidden, then it will be displayed.
Example Config¶
Example values as follows:
CLS_SCOPE:$4 | CLS_GROUP:$64 | CLS_LIBREF:$8 | CLS_TABLE:$32 | CLS_VARIABLE_NM:$32 | CLS_ACTIVE:8. | CLS_HIDE:8. |
---|---|---|---|---|---|---|
EDIT | Group 1 | MYLIB | MYDS | VAR_1 | 1 | |
ALL | Group 1 | MYLIB | MYDS | VAR_2 | 1 | |
ALL | Group 2 | MYLIB | MYDS | VAR_3 | 1 | |
VIEW | Group 1 | MYLIB | MYDS | VAR_4 | 1 | |
EDIT | Group 1 | MYLIB | MYDS | VAR_5 | 1 | 1 |
If a user is in Group 1, and viewing MYLIB.MYDS
in EDIT mode, all columns will be visible but only the following columns will be editable:
- VAR_1
- VAR_2
The user will be unable to add or delete rows.
If the user is in both Group 1 AND Group 2, viewing MYLIB.MYDS
in VIEW mode, only the following columns will be visible:
- VAR_2
- VAR_3
- VAR_4
Video Example¶
This short video does a walkthrough of applying Column Level Security from end to end.