Skip to main content
Oso for Agents can continuously deliver your alerts and events to a storage location you own, so your security team can investigate them in the SIEM you already use. Export delivers to an Amazon S3 bucket (or any S3-compatible object store) as gzipped JSON.

What gets exported

An export destination is scoped to one record source:
  • Alerts — the alerts Oso raises, enriched with the policy decision and approval outcome behind each one.
  • Events — the raw agent activity Oso ingests (tool calls, messages, responses).
Configure a separate destination for each source you want to export.

How it works

Oso writes each new record to your bucket as its own gzipped JSON object:
  • Key: <prefix>/<environment>/<alert|event>/<record-id>.json.gz — you choose the key prefix (required); <environment> is your Oso environment id and <alert|event> is the record source.
  • Headers: Content-Type: application/json and Content-Encoding: gzip.
Delivery is at-least-once, and each object is keyed by its record id — so a redelivery overwrites the same object in place (idempotent) rather than creating a duplicate.

Record schema

Every object is a flat JSON envelope of the record’s own fields, tagged with record_type (alert or event), with the record’s full detail nested under data. Fields marked optional are omitted when empty.

Alert record

An alert is a deduplicated detection — its count is how many times it fired.
Alert

Event record

An event is a single raw agent activity — the firehose you correlate in your SIEM. For a tool.request event, data is the tool call itself, including its parameters.
Event

Prerequisites

  • An Oso for Agents environment with alerts or events flowing.
  • An S3 bucket (or S3-compatible store) you control.
  • Permission to manage connections in the Oso environment.

Create an export destination

1

Open Connections

In Oso, open your environment and go to Connections, where export destinations are configured.
2

Add the destination

Add an export destination, choose the record source (Alerts or Events) and destination type Amazon S3, and enter the bucket, region, and a key prefix (the bucket and prefix are both required).
3

Choose authentication

Pick an authentication method (below) and save.

Authentication

Role assumption

Oso assumes an IAM role in your AWS account to write objects, so no long-lived credentials ever leave your account. Oso generates an ExternalId that you must use to restrict your trust policy, preventing other users from using Oso to send unauthorized events by guessing your role ARN. When you set up a role-assumption destination, Oso shows two policies for you to apply, with the exact principal ARN, ExternalId, and bucket filled in:
1

Copy the policies

Copy the trust policy and the permissions policy Oso displays.
2

Create the role

Create an IAM role in your account using the trust policy as its trust relationship, and attach the permissions policy.
3

Bind the role

Paste the role’s ARN back into Oso and save. Oso verifies the role can only be assumed with the ExternalId before it enables delivery.
Trust policy
Permissions policy
The console scopes this to your chosen key prefix (<bucket>/<prefix>/*) so Oso can write only under that prefix. The bucket and prefix are both required.

Access keys

For S3-compatible object stores (such as MinIO or Ceph), or where role assumption isn’t available, provide an access key ID and secret access key for a principal that can s3:PutObject to your bucket. Oso encrypts the secret at rest.
On the managed Oso Cloud service, role assumption is the supported method for AWS. Access keys are available on self-hosted deployments and for S3-compatible stores.

Ingest into your SIEM

Any SIEM that can read from S3 can ingest the exported objects: point its S3 input at your bucket (and prefix) and configure it to decompress gzip and parse JSON. See your SIEM provider’s documentation for how to set up an S3 input — on the Oso side, the destination setup above is all that’s required.