Audit log delivery
Trebellar emits an audit log for every security-relevant action that happens on your tenant — authentication events, user-management changes, and other governance-critical operations. These logs are delivered to cloud object storage once per day so you can retain them for as long as your compliance program requires, stream them into your SIEM, or query them ad-hoc with your warehouse of choice.
This page explains:
- How the delivery pipeline works and what the files look like
- How to configure delivery (bring-your-own-bucket, or hosted on Trebellar)
- The full schema of a single audit record
- The catalog of event types Trebellar currently emits
Audit log delivery is an organization-level feature and must be enabled by an administrator from the Trebellar admin panel at my.trebellar.app.
How delivery works
Audit events are written as structured records to Trebellar’s log pipeline in real time, then batched, serialized as newline-delimited JSON (NDJSON), and delivered to the destination of your choice once every 24 hours.
Each daily file contains every audit record produced for your organization during the prior UTC day. Files are written under a deterministic key prefix so they are easy to ingest incrementally:
Key properties of the delivery:
NDJSON is easy to read line-by-line without loading the full file into memory, and is
natively supported by BigQuery, Snowflake, Redshift Spectrum, Athena, DuckDB, jq,
and most SIEMs.
Configuration
There are two delivery modes. Both are configured from the Admin panel → Governance → Audit logs section of the Trebellar platform.
Option 1 — Bring your own bucket
Use this mode if you want the logs to land directly in cloud storage that you own. This is the recommended mode for regulated workloads because the data never leaves your tenancy after the handoff.
You provide:
Steps:
- Create a dedicated bucket in your cloud provider (S3 or GCS).
- Provision an IAM principal (IAM user for S3, service account for GCS) that has only
PutObject/storage.objects.createon the target prefix. Do not grant list, read, or delete permissions — Trebellar does not need them. - Generate a long-lived access key and secret for that principal.
- In Admin panel → Governance → Audit logs, choose Bring your own bucket and paste the values above.
- Click Test connection. Trebellar will write a small
.trebellar-healthcheckobject and delete it. If the test succeeds, delivery starts on the next daily cycle.
Rotate the client secret periodically. Trebellar surfaces the last-used timestamp for each credential so you can verify the rotation took effect before revoking the old key.
Locking the bucket to Trebellar’s IP ranges
If your security policy requires bucket access to be pinned to a known set of source
IPs, Trebellar publishes a stable list of egress addresses used by the audit-log
delivery workers. You can attach these to your bucket policy (aws:SourceIp on S3 or
a VPC Service Controls perimeter on GCS) so that writes are only accepted from
Trebellar’s infrastructure.
To avoid drift between these docs and the live set, we don’t publish the ranges inline. To request the current list:
- Contact your Customer Success representative, or email support@trebellar.com.
- Specify the cloud provider (AWS or GCP) and the region your bucket lives in — we’ll send back the narrowest range that covers delivery to that region.
- Trebellar announces changes to the egress set at least 30 days in advance in the changelog. Subscribe to the changelog to be notified before you need to update your bucket policy.
Egress pinning is optional. Delivery works without an IP allowlist — the bucket credentials are scoped narrowly enough that IP pinning is defense-in-depth rather than a requirement.
Option 2 — Use the Trebellar bucket
If you don’t need the logs to land in your own cloud, Trebellar can host them in a tenant-isolated bucket managed on your behalf. You’ll be issued a short-lived, read-only pre-signed URL (refreshed every 7 days) that you can use to pull the files into your SIEM or warehouse.
Steps:
- In Admin panel → Governance → Audit logs, choose Use Trebellar bucket.
- Pick a retention window (30, 90, 180, or 365 days).
- Save. The admin panel will display a Download URL and a Manifest URL that you can poll for the list of available files.
In hosted mode, files are deleted at the end of the retention window. Export them to your own long-term storage if you need them longer.
Record schema
Every line of the NDJSON file is a single JSON object with the fields below. The shape is
stable — Trebellar will only add new optional fields under audit_event.*, and each
change is announced in the changelog with at least 30 days notice.
Top-level fields
audit_event fields
The audit_event object is the authoritative payload for downstream consumers. The
top-level fields above are derived from it and kept for ergonomic querying.
Trace correlation
Each record also carries Google Cloud Logging trace fields (logging.googleapis.com/trace,
logging.googleapis.com/spanId, logging.googleapis.com/trace_sampled) and a
logging.googleapis.com/labels map for fast filtering. These are safe to ignore if you
don’t use Cloud Logging — they never contain tenant data beyond what’s already in
audit_event.
Authentication types
audit_event.authentication.type describes how the actor proved their identity to
Trebellar. The current set of values:
Event catalog
The sections below enumerate every event Trebellar currently emits. The list will grow over time — new events are appended rather than repurposing existing ones, so existing consumers never break.
authentication service
Events about how users sign in and manage their credentials.
users service
Events about user-account lifecycle, scoped to the acting admin’s organization.
Only the outcomes currently emitted in production are listed above. Failures in
user-management flows are returned as HTTP errors before reaching the audit log
sink — this will tighten over time as more actions are instrumented for
FAILURE/DENIED events.
Sample records
A successful SAML login:
A denied password-reset (CSRF mismatch):
A user-create event:
Querying the logs
Because each file is plain NDJSON, any tool that can read line-delimited JSON works out of the box.
Pull the last hour of failed logins with jq:
Create an external table in BigQuery:
Troubleshooting
Need an event that isn’t on the list yet? Reach out at
support@trebellar.com — the audit schema is
designed to accept new service_name / action_name pairs without requiring
a version bump.