Security and Authorization Roles in midPoint
This document contains working documentation to preparation of security roles for midPoint.
Structure of security roles
There will be top level business role "Security officer" - this role will not probably be initial role in midPoint as its content is organization specific. We will define application roles for definition of access level to midPoint and authorization roles defining actual authorization blocks for operations.
High level structure
Business Role | Application Role | Note |
---|---|---|
Security Officer |
Security officer within an organization - privileged access to multiple systems, not only midPoint. |
|
midPoint:Security Officer |
Security officer within midPoint |
|
… |
Other roles providing access to other applications… |
|
Internal Auditor |
Internal auditor within an organization - read-only auditor access to multiple systems, not only midPoint. |
|
midPoint:Auditor |
Auditor role within midPoint |
|
… |
Other roles providing access to other applications |
Each application role will consist of a list of authorization roles as defined below:
Application Role | Authorization Role | Note |
---|---|---|
midPoint:Security Officer |
Security officer within midPoint |
|
midPoint:data administrator |
Can manage all data |
|
midPoint:report administrator |
Can manage reports |
|
midPoint:audit reader |
Can read audit events (history). |
|
midPoint:resource reader |
Can read configuration of provisioning. |
|
midPoint:config reader |
Can read midPoint configuration. |
|
midPoint:Auditor |
Auditor role within midPoint |
|
midPoint:data reader |
Can see all data. |
|
midPoint:report user |
Can read all created reports and run reports. |
|
midPoint:audit reader |
Can read audit events (history). |
|
midPoint:resource reader |
Can read configuration of provisioning. |
|
midPoint:config reader |
Can read midPoint configuration. |
MidPoint initial objects
We should define 2 application roles + list of authorization roles:
Application roles:
-
midPoint:Security Officer
-
midPoint:Auditor
These roles should provide access to midPoint for defines security functions. They are not customized to specific archetypes/situations. If necessary, they, or the copies must be tuned by engineers in specific projects.
Authorization roles
Line | Authorization role | Description of authorization level | Note |
---|---|---|---|
1 |
midPoint:user reader |
Read users and their assignments |
No access to user’s history. |
2 |
midPoint:data reader |
Read all data - even users |
|
3 |
midPoint:report reader |
Read created reports. |
Can’t run reports. |
4 |
midPoint:audit reader |
Read audit events - and objects history |
We can’t limit user’s access to audit objects. So full access or no access to audit. Of course - read only. |
5 |
midPoint:resource reader |
Read resource configuration using resource GUI |
|
6 |
midPoint:markReader |
Read object marks assigned to the objects |
|
7 |
midPoint:config reader |
Read whole configuration. |
|
8 |
midPoint:certification user |
Run and process already prepared certification campaigns. |
|
9 |
midPoint:report user |
Run prepared reports. |
Allowing creation and starting of report tasks. |
10 |
midPoint:simulations user |
Define and run simulations |
Assignment/inducement configuration can be simulated only if configuration modification is not allowed. |
11 |
midPoint:task user |
Read and run tasks |
Run any task. |
12 |
midPoint:user administrator |
Full administration of all users |
All operations on objects of UserType except displaying object history. Access to audit not defined here. |
13 |
midPoint:role administrator |
Full administration of all roles. |
dtto as above |
14 |
midPoint:service administrator |
Full administration of all services. |
dtto as above |
15 |
midPoint:case administrator |
Full administration of all cases and workitems. |
dtto as above |
16 |
midPoint:certification administrator |
Full administration of all certifications and certification campaigns. |
dtto as above |
17 |
midPoint:policy administrator |
Full administration of all policies. |
dtto as above |
18 |
midPoint:report administrator |
Full administration and usage of all reports. Running reports. |
dtto as above |
19 |
midPoint:task administrator |
Full administration and usage of all tasks. |
dtto as above |
20 |
midPoint:simulations administrator |
Full administration and usage of simulations. |
dtto as above |
21 |
midPoint:archetype administrator |
Full administration of all archetypes. |
dtto as above |
22 |
midPoint:marks administrator |
Full administration of all object marks. |
dtto as above |
23 |
midPoint:resource administrator |
Full administration of all resources. |
dtto as above |
24 |
midPoint:data administrator |
Administration of all data in midPoint. |
Allow full control over all objects in midPoint. The "data" can be problematic. |
25 |
midPoint:config administrator |
Administration of configuration. |
Examples of other roles
Application Role | Authorization Role | Note |
---|---|---|
Example: midpoint:Security officer - read only |
Example of security officer in organizations where he is not modifying data - just performing control function. |
|
midPoint:user administrator |
Providing access to block users in emergency, or override processes for some situations. |
|
midPoint:data reader |
||
midPoint:report user |
||
midPoint:audit reader |
||
midPoint:resource reader |
||
midPoint:config reader |
||
Example: midPoint:Role manager |
Security function responsible for management of roles. |
|
midPoint:data reader |
||
midPoint:role administrator |
||
midPoint:archetype administrator |
||
midPoint:audit reader |
Open questions
-
REST access - allow to whom ?
-
What object types we will consider as "data" and which are "configuration"
- data
-
UserType, RoleType, ServiceType, OrgType, PolicyType
- configuration
-
ObjectmarkType,
- ?
-
ArchetypeType,
-
Shouldn’t we add some attribute to all objects specifying if the object is data or configuration ?
-
Example: Authorization roles mentioned in this document are definitelly configuration ano not data.
Users who does not have authorization to "modify configuration" should not have access to modify these roles. -
In the RoleType, we can specify what is configuration and what is data, excluding "Authorization role" archetype and "system roles" archetype (for sure?), just this:
-
is not consistent across all object types - other object types (e.g. Orgs) may have different definition of data and configuration
-
is harder to read for engineers - and not clear everywhere. isConfiguration (True/False) is much cleaner.
-
is even "system roles" only configuration ? Can’t it be data as well ? Can we use other system roles for this ?
-
in each project it would be easier to define what is configuration and what is data if engineer can define just objects in the project.
-
is slower for processing - getting and comparing single attribute value is the fastest operation. And this can be compared very often.
-
-
-
Should we use archetype "System role" ? Existing midpoint roles are using it, but we need 2 levels - system roles and authorization roles.
-
Can’t engineer define other "system roles" for other systems ? Shouldn’t we have "application roles already" ?
-
If we create midpoint:Security officer as "application role", then - how we define what application roles are data and what is configuration ?
-
-