Genetec Security Center Modeling Rule

Modeling Rule

Genetec Security Center

Details

IDGenetec_Security_Center_ModelingRule
From Version8.4.0

Rules (XIF)

[MODEL: dataset = genetec_security_center_raw]
alter // Extractions & Initializations
    assigned_to = arrayindex(regextract(Description, "is assigned to ([^\.]+)"), 0), 
    changed_property = arrayindex(regextract(Description, "Value of (.+?) changed from"), 0),
    client_application_type_id = to_string(SourceApplicationType), 
    client_application = arrayindex(regextract(SourceApplicationAsString, "(?:\S+\s*\-\s*)?(\S+)"), 0),
    event_type_id = to_string(AuditTrailModificationType), 
    entity_type = arrayindex(regextract(Description, "\S+:\s*(.+?)\s+modified\."), 0),
    group_name = Value -> AuditData.Ex.AuditDataMem.groupName,
    role_name = Value -> AuditData.Ex.AuditDataMem.roleName,
    resource_type_id = to_string(Type)
| alter resource_type = coalesce(entity_type, changed_property)
| alter event_name = if( // Construct event name according to AuditTrailModificationType value & Description format 
    event_type_id = "5", "Credential State Modified", 
    event_type_id = "6", "Cardholder Modified", 
    event_type_id = "8" or Description ~= "Entity deleted:", "Entity Deleted",
    event_type_id = "9" or Description ~= "name changed from", "Entity Renamed",
    Description ~= "Entity created:", "Entity Created",
    Description ~= ".+? setting modified\.", "Entity Setting Modified",
    Description ~= ":\s*(?:\S+\s+)*modified\.", "Entity Modified", 
    Description ~= "is assigned to ", "Assignment Added",
    Description ~= "is no longer assigned to ", "Assignment Removed",
    Description ~= "is now a member of", "Membership Added",
    Description ~= "is no longer a member of", "Membership Removed",
    Description ~= "Item\s+.+?\s+added\.", "Item Added",
    Description ~= "Item\s+.+?\s+removed\.", "Item Removed",
    Description ~= "Security Desk [Tt]ask .+? added", "Security Desk Task Added",
    Description ~= "Security Desk [Tt]ask .+? removed", "Security Desk Task Removed",
    Description ~= "has been added as a link to map", "Map Link Added",
    Description ~= "has been removed as a link from map", "Map Link Removed",
    Description ~= "setting modified to Motion", "Camera Motion Setting Modified",
    Description ~= "setting modified to Recording", "Camera Motion Recording Modified",
    Description ~= "\sgained access rights to\s", "Access Rights Granted",
    Description ~= "\slost access rights to\s", "Access Rights Revoked",
    Description ~= "Value of (\S+\s+)+changed", "Property  Value Changed", 
    Description ~= "The Active state value changed from", "Role Activation Changed",
    Description ~= "state settings modified", "Zone Entity State Settings Modified",
    Description ~= "Map layers added or removed", "Map Layers Modified",
    Description ~= "Georeference modified\.", "Georeference Modified",
    Description ~= "Default view modified\.", "Default View Modified",
    Description ~= "Background modified\.", "Background Modified")
| alter // XDM Mappings
    xdm.event.description = Description, // Description of the audited event.
    xdm.event.id = to_string(Id), // The unique Id number.
    xdm.event.original_event_type = event_type_id, // The audit trail modification type
    xdm.event.type = event_name, // The constructed event name. 
    xdm.observer.name = Machine, // The machine name.
    xdm.observer.type = coalesce(concat(client_application_type_id, " (", client_application, ")"), client_application_type_id),
    xdm.observer.unique_identifier = SourceApplicationGuid, // The Guid of the application entity that modified the audited entity. This can be Config Tool, Security Desk, the SDK, etc.
    xdm.source.application.name = client_application, // The name of the application that did the modification.
    xdm.source.host.hostname = Machine, // The machine name.
    xdm.source.user.identifier = ModifiedBy, // The Guid of the entity that modified the audited entity.
    xdm.source.user.user_type = if(ModifiedByAsString ~= "Service|\w+svc$", XDM_CONST.USER_TYPE_SERVICE_ACCOUNT, ModifiedByAsString != null, XDM_CONST.USER_TYPE_REGULAR),
    xdm.source.user.username = ModifiedByAsString, // The name of the entity that modified the audited entity.
    xdm.target.resource_before.value = OldValue, // The old value of the audited entity.
    xdm.target.resource.id = Guid, // The Guid of the entity being audited.
    xdm.target.resource.name = Name, // The name of the audited entity.
    xdm.target.resource.type = coalesce(concat(resource_type_id, " (", resource_type, ")"), resource_type_id), // This represents the enum called EntityType.
    xdm.target.resource.value = NewValue, // The new value of the audited entity.
    xdm.target.user.username = assigned_to,
    xdm.target.user.groups = arraycreate(group_name, role_name);

Schema

genetec_security_center_raw

Field Type Array?
AuditTrailModificationType int
Description string
Guid string
Id int
Machine string
ModifiedBy string
ModifiedByAsString string
Name string
NewValue string
OldValue string
SourceApplicationAsString string
SourceApplicationGuid string
SourceApplicationType int
Type int
Value string
Raw JSON
{
    "genetec_security_center_raw": {
      "AuditTrailModificationType": {
        "type": "int",
        "is_array": false
      },
      "Description": {
        "type": "string",
        "is_array": false
      },
      "Guid": {
        "type": "string",
        "is_array": false
      },
      "Id": {
        "type": "int",
        "is_array": false
      },
      "Machine": {
        "type": "string",
        "is_array": false
      },
      "ModifiedBy": {
        "type": "string",
        "is_array": false
      },
      "ModifiedByAsString": {
        "type": "string",
        "is_array": false
      },
      "Name": {
        "type": "string",
        "is_array": false
      },
      "NewValue": {
        "type": "string",
        "is_array": false
      },
      "OldValue": {
        "type": "string",
        "is_array": false
      },
      "SourceApplicationAsString": {
        "type": "string",
        "is_array": false
      },
      "SourceApplicationGuid": {
        "type": "string",
        "is_array": false
      },
      "SourceApplicationType": {
        "type": "int",
        "is_array": false
      },
      "Type": {
        "type": "int",
        "is_array": false
      },
      "Value": {
        "type": "string",
        "is_array": false
    }
  }
}