Centralized Auditing

We bring the data, you bring the dashboards

We know you donโ€™t want another dashboard to log intoโ€ฆ so we didnโ€™t build one. Instead of more dashboards, we stream structured log data to the reporting destination of your choice. You can rapidly build the dashboards you need, as well as keep the audit data in S3 for safekeeping.

Manage reporting destinations in Terraform

With Sym, you can declare where you want to send your audit data in Terraform. Here we send data to DataDog via AWS Kinesis (see full example:

# This module creates a AWS Kinesis Firehose Delivery Stream that pipes logs to Datadog
module "datadog_connector" {
  source  = "symopsio/datadog-connector/aws"
  version = ">= 2.0.0"

  environment = "main"

  # This variable should NOT be checked into version control!
  # Set it in an untracked tfvars file (e.g. `secrets.tfvars`)
  # or as an environment variable: `export TF_VAR_datadog_access_key="my-access-key"`
  datadog_access_key = var.datadog_access_key
}

resource "sym_log_destination" "datadog" {
  type = "kinesis_firehose"

  # The Runtime Permission Context has Kinesis Firehose permissions
  integration_id = sym_integration.runtime_context.id

  settings = {
    # The firehose stream name is outputted by the datadog_connector module
    stream_name = module.datadog_connector.firehose_name
  }
}

Send rich data about each Sym Event to your log destination

Each step in the Sym flow produces a structured log event with all the data you need to build reports and save for audit:

{
    "id": "f1e0b0fe-a1cd-46f2-9772-7ded922d26d1",
    "meta": {
        "schema_version": 4
    },
    "state": {
        "status": "completed",
        "errors": []
    },
    "run": {
        "srn": "healthy-health:run:approval-flow-sandbox:4.0.0:4e41814e-34b2-418c-9582-2d8bc610ea2a",
        "parent": "healthy-health:run:flow_selection:1.0.0:0e6dda1c-f6ad-47ac-9e51-b068dd6f901d",
        "flow": "healthy-health:flow:approval-flow-sandbox:4.0.0",
        "actors":  {
            "prompt": {
               "user": "healthy-health:user:4f36af92-f3a6-4476-b7d4-f7ee82efe088:latest",
               "name": "Ben Bitdiddle",
               "username": "[email protected]",
               "identity": {
                   "service": "slack",
                   "external_id": "TABC123",
                   "user_id": "UABC123"
                }
            }
        }
    },
    "event": {
        "srn": "sym:event-spec:approval:1.0.0:request",
        "type": "request",
        "template": "sym:template:approval:1.0.0",
        "timestamp": "2022-02-15T15:43:45.309236+00:00",
        "channel": "slack"
    },
    "actor": {
        "user": "healthy-health:user:4f36af92-f3a6-4476-b7d4-f7ee82efe088:latest",
        "name": "Ben Bitdiddle",
        "username": "[email protected]",
        "identity": {
            "service": "slack",
            "external_id": "TABC123",
            "user_id": "UABC123"
        }
    },
    "fields": {
        "reason": "foobar",
        "duration": 30,
        "target": {
            "name": "test-target",
            "srn": "healthy-health:target:sandbox-leslielam:latest:request",
            "type": "aws_iam_group",
            "label": "Test Target",
            "settings": {
                "iam_group": "prod-break-glass"
            }
        },
        "urgency": "low",
        "target_id": "1c621be7-8531-4200-a0d3-841e1c88e28b"
    },
    "type": "event"
}