Audit Trail

Audit Trail Banner

The Audit Trail is a tamper-evident record of every configuration change made to the OAS Engine — who made it, what they changed, when, and how they connected. It gives you a defensible history for compliance, troubleshooting, and change control.

Once enabled, the engine automatically logs changes no matter how they arrive: through the Configure application, the REST API, the .NET Configuration API, or a remote engine over Live Data Cloud. There is nothing to wire up per-tag or per-screen — the logging happens centrally inside the engine.

At a glance

  • Complete — captures config edits, adds/deletes, save/load, CSV import/export, logins, and engine start/stop.
  • Attributed — every entry records the user, the source, and the client IP address.
  • Before → After — edits show the old and new value for each field that changed.
  • Tamper-evident — entries are cryptographically chained, so any later edit to the log is detectable.
  • Self-managing — one file per day, automatically pruned after a retention period you set.

What gets recorded

When the Audit Trail is on, the engine records an entry for each of the following:

CategoryExamples
Configuration changesAdd / edit / delete of Tags, Drivers, Data Logging, Alarm Logging, Alarm Notification, Reports, Recipes, Data Routes, Security groups, Users, OPC A&E servers, Live Data Cloud servers, UDP Broadcast/Receive, and Options
Property editsOne entry per field that actually changed, shown as Before → After
Whole-file operationsSave Configuration, Load Configuration
Bulk dataCSV Import and CSV Export
AuthenticationSuccessful and failed logins
Runtime tag writesValues written to tags from Excel, an HMI, an OPC client, REST, or the .NET API (optional — off by default)
Engine lifecycleEngine started, engine stopped, daily log rollover, and any integrity problem detected on startup

Each entry captures a consistent set of details:

  • Timestamp (UTC or local time — your choice)
  • User who made the change (<system> for engine-generated events)
  • Source — how the change arrived: Configure app, REST, .NET API, Live Data Cloud, or a system event
  • Operation — Add, Update, Delete, Bulk, Write, or System Event
  • Target — the type and name of the object touched (e.g. Tag / Pump1.Speed)
  • Description — a human-readable summary of the change
  • Before / After values for edits
  • Client IP and, for federated changes, the remote SCADA host that initiated them

Tamper evidence

The Audit Trail is append-only and every entry is linked to the one before it using a cryptographic hash — a "chain." If someone later edits, reorders, or deletes an entry directly in the file, the chain no longer computes, and the engine flags exactly where the break occurs.

There are two levels of protection:

  • Standard (SHA-256): proves the log is internally consistent — casual tampering is caught.
  • Keyed (HMAC-SHA-256): the engine generates a secret key (audit-chain.key) protected by file-system permissions — an administrators-only ACL on Windows, or the owning account's permissions on Linux. With the key in place, entries can't be convincingly forged without it — providing genuine non-repudiation for compliance regimes (e.g. NIST 800-53 AU-10).

The chain is continuous across daily files, and the engine verifies it automatically at every startup. If it finds a break, a truncated file, or a missing day, it records that finding into the audit log itself.

Warning

The chain detects tampering with the log file; it does not encrypt it. An administrator with full file-system access could delete files outright. Standard file-system permissions on the log folder remain your first line of defense.

Where the data lives

Audit files are always stored alongside the engine's configuration files, in a sibling Audit folder. The exact location depends on the operating system:

PlatformAudit folder
Windows%ProgramData%\OpenAutomationSoftware\Audit\ (next to the ConfigFiles folder)
Linux<engine install directory>/Audit/ (next to the ConfigFiles folder)

On Windows the location is a fixed system path. On Linux it is relative to wherever the engine is deployed — for example, if the engine runs from /opt/oas/, the audit data is at /opt/oas/Audit/. It is not a distro-standard path.

The folder contains one file per day plus the integrity key:

Audit/
    OAS-2026-07-14.Audit      ← one file per day
    OAS-2026-07-13.Audit
    audit-chain.key           ← secret key for tamper protection
  • Daily rollover — a new file is opened each day, so files stay a manageable size.
  • Retention — files older than the retention period are deleted automatically. The default is 365 days; set it to 0 to keep files indefinitely.
  • Files can be read while the engine is running and actively writing.

Protect the audit folder

The integrity key is only as safe as the folder it sits in. On Windows the folder carries an administrators-only permission by default. On Linux, make sure the engine's directory is owned by the service account and not world-readable, so the key and log files can't be read or replaced by other users.

Configuring the Audit Trail

The Audit Trail is off by default — you opt in so a fresh install doesn't start writing logs until you're ready. Settings are stored with the rest of the engine Options.

SettingDefaultPurpose
EnabledOffMaster switch for the whole feature
Timestamps in UTCOnRecord times in UTC (recommended) or engine-local time
Retention (days)365How long to keep daily files (0 = forever)
Audit Config changesOnAdd/edit/delete of configuration items
Audit Save / LoadOnWhole-configuration save and load
Audit CSV ImportOnBulk import operations
Audit CSV ExportOffBulk export operations
Audit Tag Value WritesOffRuntime value writes (can be high volume)
Audit Engine LifecycleOnStart/stop and rollover events

Tips

Changes to the audit settings are always logged, even when they turn the feature off — so the record always shows who disabled auditing and when. It can't be silently switched off.

Audit Trail options in Configure OAS

You can configure the Audit Trail options in the Configure OAS application.

  1. Use the Configure → Options menu

    Audit Trail Options Menu

  2. Select the Audit Trail tab

    Audit Trail Options

Viewing the Audit Trail

In the Configure application — open Configure → Audit Trail. The viewer shows entries newest-first with columns for time, user, source, operation, target, and before/after values, and highlights any entries where the integrity chain is broken. You can filter to a date/time window.

Audit Trail Viewer

Over the REST API — for integration with your own tools:

  • GET /OASREST/v2/audittrail?max=&fromUtc=&toUtc= — returns entries as JSON, including any detected chain breaks
  • GET /OASREST/v2/audittrailoptions — read the current audit settings
  • PUT /OASREST/v2/audittrailoptions — update the settings

Filtering the Audit Trail

You can filter the audit trail list by using the fields at the top of the screen.

Audit Trail Viewer Filter

Security and access control

  • Permissions — viewing the Audit Trail requires the read permission on the Options section in Configure Security; changing audit settings requires the corresponding write permission.
  • Sensitive values are redacted — passwords, license keys, and tokens are never written to the log. The entry records that a credential changed, shown as <redacted>, but never the value itself.
  • Accurate attribution — the engine records the true origin of each change even through layered access paths, so a change made via REST is never mislabeled as a local edit.

Reliability

Logging runs on a background writer so it never slows down the operation that triggered it — even a large CSV import or a full project restore. Durability is comparable to the Windows Event Log: a graceful engine shutdown flushes everything, and a hard crash (power loss) loses at most about a second of buffered entries, leaving the file as a valid, verifiable prefix. The Audit Trail is designed so that it can never destabilize the engine itself.