-
Notifications
You must be signed in to change notification settings - Fork 400
docs: overhaul security, isolation, and audit log documentation #3166
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 10 commits
Commits
Show all changes
18 commits
Select commit
Hold shift + click to select a range
a71b007
docs: reorganize security navigation
topher-lo d1a55b0
docs: simplify security architecture
topher-lo db86ede
docs: clarify security threat model
topher-lo e8649a6
docs: describe platform threat scope
topher-lo 4a0f172
docs: refine external hardening guidance
topher-lo 9df8e50
docs: expand platform and AI threat model
topher-lo a2dc2f3
docs: remove tool endorsement disclaimer
topher-lo 2b55fc8
docs: split audit logs from change management
topher-lo 5f40ee2
docs: add audit log references and tighten security architecture
topher-lo a359859
docs: document platform secret storage and rotation
topher-lo f89d182
docs: correct security architecture and audit log claims
topher-lo cdff1a8
refactor(sandbox): deprecate PID isolation and fix fallback logs
topher-lo ebe69f6
docs: document isolation levels, requirements, and verification
topher-lo f6579d8
docs: list individual audit events and simplify audit pages
topher-lo b827761
docs: qualify organization_id scope in the audit field reference
topher-lo b4ed520
revert: drop isolation docs and sandbox changes from this PR
topher-lo 8bf6c6b
docs: document nsjail and no isolation as the two sandbox options
topher-lo 4f6b8ac
docs: rename the self-hosting sandbox section to Isolation
topher-lo File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| --- | ||
| title: "Organization agent logs" | ||
| description: "Export OpenTelemetry metrics, log events, and traces for agent runs to your observability backend." | ||
| --- | ||
|
|
||
| This page is a work in progress. | ||
|
|
||
| Agent runs export OpenTelemetry signals to your observability backend. Configure the exporter under Organization settings, then open **Agent OTel**. | ||
|
|
||
| ## Related pages | ||
|
|
||
| - See [Organization audit logs](/audit-logs/organization) to stream user and service-account activity to your SIEM. | ||
| - See [Platform audit logs](/audit-logs/platform) to capture administration above the organization boundary. | ||
| - See [Architecture](/security/architecture) for the sandbox and relay boundaries that agent telemetry crosses. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| --- | ||
| title: "MCP access logs" | ||
| description: "Review OAuth connections, personal access tokens, and external MCP client activity in a workspace." | ||
| --- | ||
|
|
||
| This page is a work in progress. | ||
|
|
||
| External MCP clients connect to Tracecat and call tools as a real user. Review their connections, tokens, and activity from the workspace sidebar under **MCP access**. | ||
|
topher-lo marked this conversation as resolved.
|
||
|
|
||
| ## Related pages | ||
|
|
||
| - See [Organization audit logs](/audit-logs/organization) to stream token issuance and revocation to your SIEM. | ||
| - See [Platform audit logs](/audit-logs/platform) to capture administration above the organization boundary. | ||
| - See [Architecture](/security/architecture) for the permission model behind MCP connections. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,118 @@ | ||
| --- | ||
| title: "Platform audit logs" | ||
| description: "Stream platform administrator actions to an HTTPS webhook and separate them from organization audit events." | ||
| keywords: ["platform audit", "superuser", "audit webhook", "SIEM"] | ||
| --- | ||
|
|
||
| import AuditEventFields from "/snippets/audit-event-fields.mdx"; | ||
|
|
||
| <Badge icon="lock" color="blue" size="lg" shape="pill">Enterprise Edition</Badge> | ||
|
|
||
| Platform audit logs record what platform administrators do above the organization boundary. | ||
| Use them to detect changes that no organization audit stream can see, such as a new organization, a promoted superuser, or a rewritten platform setting. | ||
|
|
||
| You must be a platform superuser to configure the endpoint. These events go to their own sink, separate from every organization webhook. | ||
|
|
||
| ## Connect a log collector | ||
|
|
||
| <Steps> | ||
| <Step title="Open platform administration"> | ||
| Open **Admin**, then select **Audit Logs** under **Platform**. | ||
| </Step> | ||
| <Step title="Connect the endpoint"> | ||
| Click **Connect** and enter the HTTPS URL that accepts your audit events. | ||
| </Step> | ||
| <Step title="Configure the request"> | ||
| Add any headers your collector requires. You can also merge custom JSON into every event, wrap the payload under a key such as `event`, and control TLS certificate verification. | ||
| </Step> | ||
| <Step title="Save and verify delivery"> | ||
| Click **Save changes**, then confirm that your collector receives a `platform_setting` event with a `SUCCESS` status. | ||
|
topher-lo marked this conversation as resolved.
Outdated
|
||
| </Step> | ||
| </Steps> | ||
|
|
||
| Tracecat encrypts the webhook URL, custom headers, and custom payload at rest. | ||
|
|
||
| ## Covered actions | ||
|
|
||
| Platform events cover administration performed through the platform boundary. | ||
|
|
||
| | Resource type | Actions | What it tells you | | ||
| | --- | --- | --- | | ||
| | `platform_setting` | `update` | A platform-wide setting changed, including the audit sink itself. | | ||
| | `user` | `create`, `delete`, `promote`, `demote` | A platform account was created or removed, or superuser access was granted or withdrawn. | | ||
| | `organization` | `create`, `update`, `delete` | A tenant was provisioned, reconfigured, or removed. | | ||
| | `organization_tier` | `update` | An organization's tier assignment changed. | | ||
| | `tier` | `create`, `update`, `delete` | A tier definition changed, altering limits for every organization on it. | | ||
| | `platform_registry` | `sync` | Registry content was synchronized, which changes the integration code available to tenants. | | ||
|
|
||
| Treat `user` `promote` and `platform_setting` `update` as your highest-signal events. | ||
| Promotion grants access above every tenant boundary, and a settings update can redirect this audit stream. | ||
|
|
||
| ## Event payload | ||
|
|
||
| A platform event uses the same schema as an organization event, with platform-scope identifiers left null. | ||
|
|
||
| ```json | ||
| { | ||
| "organization_id": null, | ||
| "workspace_id": null, | ||
| "actor_type": "USER", | ||
| "actor_id": "00000000-0000-4000-8000-000000000003", | ||
| "actor_label": "admin@example.com", | ||
| "ip_address": "192.0.2.10", | ||
| "user_agent": "Mozilla/5.0", | ||
| "resource_type": "platform_setting", | ||
| "resource_id": null, | ||
| "action": "update", | ||
| "status": "SUCCESS", | ||
| "data": { | ||
| "changed_fields": ["audit_webhook_url"] | ||
| }, | ||
|
topher-lo marked this conversation as resolved.
Outdated
|
||
| "created_at": "2026-01-15T14:03:12.123456Z" | ||
| } | ||
| ``` | ||
|
|
||
| <AuditEventFields /> | ||
|
|
||
| Platform administrators act outside any tenant, so `organization_id` and `workspace_id` are `null` on platform events. | ||
| Filter on that pair to separate platform administration from tenant activity when both streams reach the same index. | ||
|
topher-lo marked this conversation as resolved.
Outdated
|
||
|
|
||
| Some actions carry no single affected row, so `resource_id` can be `null`. | ||
| Correlate those events on `actor_id`, `resource_type`, and `created_at` instead. | ||
|
|
||
| ## Delivery behavior | ||
|
|
||
| Tracecat posts each event as a JSON `POST` request and does not block the audited action on the result. | ||
|
|
||
| - Delivery runs in the background. A failing or slow collector never prevents an administrator's change from completing. | ||
| - Each request times out after 10 seconds. | ||
| - Tracecat retries up to three times with exponential backoff on `429`, `500`, `502`, `503`, `504`, and transport errors. Other `4xx` responses are terminal. | ||
| - Under sustained backpressure Tracecat sheds events rather than buffering without bound. | ||
|
|
||
| Delivery is best-effort, so treat the stream as a detection source rather than a guaranteed-complete ledger. | ||
| Alert on gaps in `created_at` continuity if you need to catch a silently failing sink. | ||
|
topher-lo marked this conversation as resolved.
Outdated
|
||
|
|
||
| ## Send events to a SIEM | ||
|
|
||
| Point the webhook at an HTTPS ingest endpoint and authenticate with custom headers. | ||
|
|
||
| - Splunk HTTP Event Collector: set `Authorization: Splunk <token>` and wrap the payload under `event`. | ||
| - Elastic and OpenSearch: post to a data-stream ingest endpoint and set `Authorization` to your API key. | ||
| - Datadog: set `DD-API-KEY` and post to the logs intake endpoint. | ||
| - Collector in front of a SIEM: post to your own HTTPS listener when you need queuing, replay, or enrichment that a direct sink cannot provide. | ||
|
|
||
| Use a custom payload to tag the source when several Tracecat streams land in one index, for example `{"tracecat_sink": "platform"}`. | ||
|
|
||
| ## Keep the platform sink separate | ||
|
|
||
| The platform sink is configured independently and is never derived from an organization's settings. | ||
| Organization administrators cannot read it, change it, or receive its events. | ||
|
|
||
| Keep the two streams separate in your SIEM as well. | ||
| Platform events describe changes to the tenancy boundary itself, so an organization administrator who could see or alter them would gain visibility above their own tenant. | ||
|
|
||
| ## Related pages | ||
|
|
||
| - See [Organization audit logs](/audit-logs/organization) to stream user and service-account activity inside an organization. | ||
| - See [Architecture](/security/architecture) for the boundaries that platform audit events record. | ||
| - See [Self-hosted security](/self-hosting/security) for deployment hardening guidance. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.