Compliance Policies
Creating and Managing Compliance Policies
Creating a Compliance Policy
Compliance Policies are user-defined rule sets that Assets can be tested against. Compliance Policies only need to be created once; all applicable Assets will be tested against that policy thereafter.
For example, a policy might assert that “Maintenance Alarm Events must be addressed by a Maintenance Report Event, recorded within 72 hours of the alarm”. This creates a Compliance Policy in the system which any Asset can be tested against as needed.
Note: Creation and editing of Compliance Policies is only supported through the API.
RKVST allows for several types of Compliance Policies:
- COMPLIANCE_SINCE: checks the time elapsed since a specific type of Event has not exceeded set threshold.
For example, “time since last maintenance must be less than 72 hours”.
---
steps:
- step:
action: COMPLIANCE_POLICIES_CREATE
description: Create COMPLIANCE_SINCE policy
print_response: true
description: Maintenance should be performed every 72h
display_name: Regular Maintenance
compliance_type: COMPLIANCE_SINCE
asset_filter:
- or: [ "attributes.arc_home_location_identity=locations/<location-id>" ]
event_display_type: Maintenance Performed
time_period_seconds: "259200"
Use the archivist_runner command to run your YAML file!
$ archivist_runner \
-u https://app.rkvst.io \
--client-id <your-client-id> \
--client-secret <your-client-secret> \
<path-to-yaml-file>
{
"compliance_type": "COMPLIANCE_SINCE",
"description": "Maintenance should be performed every 72h",
"display_name": "Regular Maintenance",
"asset_filter": [
{ "or": ["attributes.arc_home_location_identity=locations/<location-id>"]}
],
"event_display_type": "Maintenance Performed",
"time_period_seconds": "259200"
}
Use the curl command to run your JSON file! See instructions for creating your BEARER_TOKEN_FILE
here.
curl -v -X POST \
-H "@$BEARER_TOKEN_FILE" \
-H "Content-type: application/json" \
-d "@/path/to/jsonfile" \
https://app.rkvst.io/archivist/v1/compliance_policies
- COMPLIANCE_CURRENT_OUTSTANDING: checks if there is a closing Event addressing an outstanding Event.
To correlate Events, define the attribute arc_correlation_value
in the Event Attributes and set it to the same value on each pair of Events that are to be associated.
Note: To properly track and assess Events, thearc_correlation_value
should be unique to each pair of Events.
For example, “a Maintenance Request Event must be addressed by a Maintenance Performed Event”.
---
steps:
- step:
action: COMPLIANCE_POLICIES_CREATE
description: Create COMPLIANCE_CURRENT_OUTSTANDING policy
print_response: true
description: "There should be no outstanding Maintenance Requests"
display_name: Outstanding Maintenance Requests
compliance_type: COMPLIANCE_CURRENT_OUTSTANDING
asset_filter:
- or: [ "attributes.arc_home_location_identity=locations/<location-id>" ]
event_display_type: Maintenance Request
closing_event_display_type: Maintenance Performed
Use the archivist_runner command to run your YAML file!
$ archivist_runner \
-u https://app.rkvst.io \
--client-id <your-client-id> \
--client-secret <your-client-secret> \
<path-to-yaml-file>
{
"compliance_type": "COMPLIANCE_CURRENT_OUTSTANDING",
"description": "There should be no outstanding Maintenance Requests",
"display_name": "Outstanding Maintenance Requests",
"asset_filter": [
{ "or": ["attributes.arc_home_location_identity=locations/<location-id>"]}
],
"event_display_type": "Maintenance Request",
"closing_event_display_type": "Maintenance Performed"
}
Use the curl command to run your JSON file! See instructions for creating your BEARER_TOKEN_FILE
here.
curl -v -X POST \
-H "@$BEARER_TOKEN_FILE" \
-H "Content-type: application/json" \
-d "@/path/to/jsonfile" \
https://app.rkvst.io/archivist/v1/compliance_policies
- COMPLIANCE_PERIOD_OUTSTANDING: checks if the time between correlated Events does not exceed set threshold.
To correlate Events, define the attribute arc_correlation_value
in the Event Attributes and set it to the same value on each pair of Events that are to be associated.
Note: To properly track and assess Events, thearc_correlation_value
should be unique to each pair of Events.
For example, “a Maintenance Request Event must be addressed by a Maintenance Performed Event within 72 hours”.
---
steps:
- step:
action: COMPLIANCE_POLICIES_CREATE
description: Create COMPLIANCE_PERIOD_OUTSTANDING policy
print_response: true
description: There should not be outstanding Maintenance Requests for longer than 72hr
display_name: Outstanding Maintenance Requests 72hr
compliance_type: COMPLIANCE_PERIOD_OUTSTANDING
asset_filter:
- or: [ "attributes.arc_home_location_identity=locations/<location-id>" ]
event_display_type: Maintenance Request
closing_event_display_type: Maintenance Performed
time_period_seconds: "259200"
Use the archivist_runner command to run your YAML file!
$ archivist_runner \
-u https://app.rkvst.io \
--client-id <your-client-id> \
--client-secret <your-client-secret> \
<path-to-yaml-file>
{
"compliance_type": "COMPLIANCE_PERIOD_OUTSTANDING",
"description": "There should be no outstanding Maintenance Requests longer than 72hr",
"display_name": "Outstanding Maintenance Requests 72hr",
"asset_filter": [
{ "or": ["attributes.arc_home_location_identity=locations/<location-id>"]}
],
"event_display_type": "Maintenance Request",
"closing_event_display_type": "Maintenance Performed",
"time_period_seconds": "259200"
}
Use the curl command to run your JSON file! See instructions for creating your BEARER_TOKEN_FILE
here.
curl -v -X POST \
-H "@$BEARER_TOKEN_FILE" \
-H "Content-type: application/json" \
-d "@/path/to/jsonfile" \
https://app.rkvst.io/archivist/v1/compliance_policies
- COMPLIANCE_DYNAMIC_TOLERANCE: checks that the time between correlated Events is not excessively different to the observed average normal duration for similar Events.
To correlate Events, define the attribute arc_correlation_value
in the Event Attributes and set it to the same value on each pair of Events that are to be associated.
Note: To properly track and assess Events, thearc_correlation_value
should be unique to each pair of Events.
For example, “the time between a Maintenance Request Event and Maintenance Performed Event in the last week does not exceed a variation of 0.5 standard deviations around the mean”.
The dynamic_window
is the time period to evaluate on, in this case, one week. The dynamic_variability
is the number of standard deviations from the mean allowed, in this case, 0.5.
---
steps:
- step:
action: COMPLIANCE_POLICIES_CREATE
description: Create COMPLIANCE_DYNAMIC_TOLERANCE policy
print_response: true
description: Average time between Maintenance Requested/Performed
display_name: Outlying Maintenance Requests
compliance_type: COMPLIANCE_DYNAMIC_TOLERANCE
asset_filter:
- or: [ "attributes.arc_home_location_identity=locations/<location-id>" ]
event_display_type: Maintenance Request
closing_event_display_type: Maintenance Performed
dynamic_window: "604800"
dynamic_variability: "0.5"
Use the archivist_runner command to run your YAML file!
$ archivist_runner \
-u https://app.rkvst.io \
--client-id <your-client-id> \
--client-secret <your-client-secret> \
<path-to-yaml-file>
{
"compliance_type": "COMPLIANCE_DYNAMIC_TOLERANCE",
"description": "Average time between Maintenance Requested/Performed",
"display_name": "Outlying Maintenance Requests",
"asset_filter": [
{ "or": ["attributes.arc_home_location_identity=locations/<location-id>"]}
],
"event_display_type": "Maintenance Request",
"closing_event_display_type": "Maintenance Performed",
"dynamic_window": 604800,
"dynamic_variability": 0.5
}
Use the curl command to run your JSON file! See instructions for creating your BEARER_TOKEN_FILE
here.
curl -v -X POST \
-H "@$BEARER_TOKEN_FILE" \
-H "Content-type: application/json" \
-d "@/path/to/jsonfile" \
https://app.rkvst.io/archivist/v1/compliance_policies
- COMPLIANCE_RICHNESS: checks whether Attributes are within expected bounds or otherwise meet defined conditions.
This type of policy uses richness_assertions
. An assertion is comprised of an attribute name, comparison value, and an operator to compare with.
The operator can be one of six relational operators: equal to (=
), not equal to (!=
), greater than (>
), less than (<
), greater than or equal to (>=
), less than or equal to (<=
).
For example, “radiation level must be less than 7”.
---
steps:
- step:
action: COMPLIANCE_POLICIES_CREATE
description: Create COMPLIANCE_RICHNESS policy
print_response: true
description: "Radiation level must be less than 7"
display_name: Rad Limit
compliance_type: COMPLIANCE_RICHNESS
asset_filter:
- or: [ "attributes.arc_home_location_identity=locations/<location-id>" ]
richness_assertions:
- or: [ "radiation_level<7" ]
Use the archivist_runner command to run your YAML file!
$ archivist_runner \
-u https://app.rkvst.io \
--client-id <your-client-id> \
--client-secret <your-client-secret> \
<path-to-yaml-file>
{
"compliance_type": "COMPLIANCE_RICHNESS",
"description": "Rad level is less than 7",
"display_name": "Rad Limit",
"asset_filter": [
{ "or": ["attributes.arc_home_location_identity=locations/<location-id>"]}
],
"richness_assertions": [
{ "or": ["radiation_level<7"]}
],
}
Use the curl command to run your JSON file! See instructions for creating your BEARER_TOKEN_FILE
here.
curl -v -X POST \
-H "@$BEARER_TOKEN_FILE" \
-H "Content-type: application/json" \
-d "@/path/to/jsonfile" \
https://app.rkvst.io/archivist/v1/compliance_policies
Checking Compliance Status
You may check the compliance status of a specific Asset within your tenancy.
Create a yaml file, using the desired Asset ID as your asset_label
. Setting report: true
will print the compliance information for the Asset when the file is run.
---
steps:
- step:
action: COMPLIANCE_COMPLIANT_AT
description: Check Compliance of desired Asset.
asset_label: assets/<asset-id>
report: true
Use the archivist_runner command to run your YAML file!
$ archivist_runner \
-u https://app.rkvst.io \
--client-id <your-client-id> \
--client-secret <your-client-secret> \
<path-to-yaml-file>
Run the following command using the desired Asset ID to check its compliance status. See instructions for creating your BEARER_TOKEN_FILE
here.
curl -v -X GET \
-H "@$BEARER_TOKEN_FILE" \
https://app.rkvst.io/archivist/v1/compliance/assets/<asset-id>
You may also determine compliance at a historical date by adding the desired date to the query.
curl -v -X GET \
-H "@$BEARER_TOKEN_FILE" \
"https://app.rkvst.io/archivist/v1/compliance/assets/<asset-id>?compliant_at=2019-11-27T14:44:19Z"