Object Policies
Definition
An Object Policy is an Identity Management Service Policy allowing to execute arbitrary actions on Managed Objects, either on a scheduled basis, or in reaction to an Object Operation.
Object Policies are primarily composed of a mode (Scheduled or Event), a Scope, and a list of actions. They may leverage Reporting Data to further restrict their scope, and also act on secondary Objects. For instance, an Object Policy acting on Organizations may define actions to be executed on some (if not all) Identities belonging to said Organizations.
Configuration
You can access the Object Policy configuration :
by clicking on "Policies" → “Object Policy”
by clicking on "System" → "Configurations" → "Data Model" and perform an import/export.
Properties
Property name | Type | Mandatory | Description | Values (default value in bold) |
---|---|---|---|---|
id |
| YES | The unique identifier of the Object Policy. It is case sensitive and no special characters (except - or _) are allowed. Must be between 1 and 64 characters long. | - |
name |
| YES | The Object Policy name. The name may be different from the identifier.Specifying the name first allows to define automatically the identifier. | - |
description |
| NO | Allows to describe the purpose of the Object Policy. Must be at most 1024 characters long. | - |
active |
| YES | Allows to define if the Object Policy is activated or not. | true, false |
activation |
| YES | The Activation Mode of this policy
| EVENT, SCHEDULED |
handleEvent |
| NO | A test Rule to decide whether to handle the current event (can only be used in EVENT mode) | - |
scope | YES | Allows to configure on which Objects the Object Policy will be applied. It is possible to define several Object Types. | - | |
reportingScope | NO | An optional correlation constraint on Reporting data, complementing the Object Scope. | - | |
actions |
| NO | The Actions to execute on Objects | - |
handleSecondaryScope |
| NO | A test Rule to decide whether to handle the secondary Scope | - |
secondaryScope | NO | An optional secondary scope, that will be resolved and processed for each “primary” object | - | |
secondaryReportingScope | NO | An optional correlation constraint on Reporting data, complementing the Secondary Object Scope. | - | |
secondaryActions |
| NO | The Actions to execute on secondary Objects | - |
pageSize |
| NO | Used to indicate how many objects can be processed in a batch by actions (SCHEDULED mode and Secondary Scope processing) | 10 or more |
executionPlan | Only in SCHEDULED mode | In SCHEDULED mode, the Policy scheduling Configuration. | - |
Reporting Scope
As Object and Simple Scopes, Reporting Scopes may be Static or Dynamic. A Static (resp. Dynamic) scope embeds a Static (resp. Dynamic) Simple scope.
Property name | Type | Mandatory | Description | Values (default value in bold) |
---|---|---|---|---|
reportingObjectConfigurationId |
| YES | The reporting Collection on which correlation should be performed | - |
correlationMode |
| YES | The correlation mode:
| POSITIVE, NEGATIVE |
scope | YES | The search Scope of reporting Documents | - | |
imCorrelationAttribute |
| YES | The Object Attribute to use for correlation | id |
imCorrelationAttribute |
| YES | The Reporting Document property path to use for correlation | _id |
Examples
Simple Scheduled Policy
Reporting Scope
Secondary Scope
Leveraging Reporting Data
It is possible to condition the execution of action on the existence (or non existence) of Reporting Documents correlated to an Object. To use Reporting Correlation, specify the reportingScope property (resp. secondaryReportingScope) along with the Policy Scope (resp. secondaryPolicyScope).
Correlated Reporting Object
A Reporting Document R is deemed correlated to a Managed Object O if and only if:
It is from the right Reporting Object Configuration (the Reporting Scope’s
reportingObjectConfigurationId
property)It matches the Scope (the Reporting Scope’s
scope
property)It shares an attribute value with the Managed Object (the Reporting Scope’s
reportingCorrelationAttribute
andimCorrelationAttribute
properties). In other words,R.<reportingCorrelationAttribute> == O.<imCorrelationAttribute>
.
Positive Vs Negative correlation
When correlationMode=POSITIVE
, a managed object will be processed if and only if it matches the Policy Scope and a correlated Reporting Document exists. When correlationMode=NEGATIVE
, a managed object will be processed if and only if it matches the Policy Scope and a correlated Reporting Document does not exists.
A typical use case of Negative Correlation is to deactivate identities that did not authenticate in the last 6 months.
Secondary Scope and Actions
For each Managed Object processed by an Object Policy, be it in EVENT or SCHEDULED mode, it is possible to also execute actions on secondary objects, by defining a Secondary Scope and Secondary Actions.
A typical use case is to perform actions on Identities whose security organization is below an organization being patched.
The secondary scope and reporting scope have the exact same semantics as primary scopes, with the difference that they are dynamic, and are resolved for each primary object. The algorithm is as follow:
for each object O in primaryScope {
shouldProcess = checkCorrelationWithReportingScope(O, primaryReportingScope)
if (shouldProcess) {
evaluatePrimaryActions(O)
if(handleSecondaryScope(O)) {
secondaryScope = resolveSecondaryScope(O)
secondaryReportingScope = resolveSecondaryReportingScope(O)
for each object O2 in secondaryScope {
shouldProcessSecondaryObject = checkCorrelationWithReportingScope(O2, secondaryReportingScope)
if (shouldProcessSecondaryObject) {
evaluateSecondaryActions(O, O2)
}
}
}
}
}
The PRIMARY_OPERATION context
To allow referencing the Primary Object a PRIMARY_OPERATION
context is available to Secondary Actions. It has the same content as the OPERATION
context available to Primary Actions
PRIMARY_OPERATION.object
: the Primary ObjectPRIMARY_OPERATION.originalObject
: the original Primary Object (non null only inEVENT
mode)PRIMARY_OPERATION.operation
: the operation being performed on the Primary Object (non null only inEVENT
mode)