SailPoint IdentityNow Modeling Rule

Modeling Rule

SailPoint IdentityNow

Details

IDSailPoint_IdentityNow_ModelingRule
From Version8.6.0

Rules (XIF)

[MODEL: dataset= "sailpoint_identitynow_raw"]
alter
    get_src_name = actor -> name,
    get_dst_name = `target` -> name,
    get_objects = objects-> []
| alter
    set_src_email = arrayindex(regextract(get_src_name, "\S+\@\S+"),0),
    set_dst_email = arrayindex(regextract(get_dst_name, "\S+\@\S+"),0),
    set_objects = arraymap(get_objects , trim("@element", "\""))
| alter
    xdm.event.original_event_type = action,
    xdm.event.id = id,
    xdm.alert.name = name,
    xdm.event.tags = set_objects,
    xdm.event.operation_sub_type = operation,
    xdm.source.user.ou = org,
    xdm.source.cloud.region = pod,
    xdm.event.outcome = if(status in ("PASSED", "SUCCESS","APPROVED","PROCESSED","UPDATED","CREATED","DELETED","ENABLED","DISABLED","FORWARDED","ESCALATED","DETECTED", "ACCESSED", "CANCELLED"), XDM_CONST.OUTCOME_SUCCESS, status in ("FAILED","BLOCKED", "REJECTED"), XDM_CONST.OUTCOME_FAILED, status in ("STARTED", "REMEDIATE"), XDM_CONST.OUTCOME_UNKNOWN,status),
    xdm.event.is_completed = if(status in ("PASSED", "SUCCESS","APPROVED","PROCESSED","UPDATED","CREATED","DELETED","ENABLED","DISABLED","FORWARDED","ESCALATED","DETECTED", "ACCESSED", "CANCELLED", "FAILED", "BLOCKED", "REJECTED"), True, status in ("STARTED","REMEDIATE"), False),
    xdm.event.type = type,
    xdm.target.resource.name = if(stack = "", null, stack),
    xdm.target.resource.type = "Stack",
    xdm.target.ipv4 = if(is_ipv4(ipAddress), if(incidr(ipAddress, "0.0.0.0/0"), ipAddress, null), null),
    xdm.target.ipv6  = arrayindex(regextract(ipAddress, "(?:[a-fA-F\d]{0,4}\:){7}[\wa-fA-F]{0,4}"), 0),
    xdm.source.user.username = if(
        set_src_email != null, arrayindex(regextract(set_src_email, "(\S+)\@"),0),
        get_src_name !~= "@", get_src_name
    ),
    xdm.source.user.upn = set_src_email,
    xdm.target.user.username = if(
        set_dst_email != null, arrayindex(regextract(set_dst_email, "(\S+)\@"),0), 
        get_dst_name !~= "@", get_dst_name
    ),
    xdm.target.user.upn = set_dst_email,
    xdm.event.description = attributes;

Schema

sailpoint_identitynow_raw

Field Type Array?
action string
actor string
attributes string
created datetime
id string
ipaddress string
name string
objects string
operation string
org string
pod string
stack string
status string
target string
type string
Raw JSON
{
    "sailpoint_identitynow_raw": {
        "action": {
            "type": "string",
            "is_array": false
        },
        "created": {
            "type": "datetime",
            "is_array": false
        },
        "id": {
            "type": "string",
            "is_array": false
        },
        "name": {
            "type": "string",
            "is_array": false
        },
        "objects": {
            "type": "string",
            "is_array": false
        },
        "operation": {
            "type": "string",
            "is_array": false
        },
        "org": {
            "type": "string",
            "is_array": false
        },
        "pod": {
            "type": "string",
            "is_array": false
        },
        "stack": {
            "type": "string",
            "is_array": false
        },
        "ipaddress": {
            "type": "string",
            "is_array": false
        },
        "actor": {
            "type": "string",
            "is_array": false
        },
        "target": {
            "type": "string",
            "is_array": false
        },
        "status": {
            "type": "string",
            "is_array": false
        },
        "attributes": {
            "type": "string",
            "is_array": false
        },
        "type": {
            "type": "string",
            "is_array": false
        }
    }
}