Skip to content

docs: add SSH session recording compliance guide#2226

Open
desimone wants to merge 1 commit into
mainfrom
bdd/eng-4106-docs-ssh-session-recording-audit-compliance-guide
Open

docs: add SSH session recording compliance guide#2226
desimone wants to merge 1 commit into
mainfrom
bdd/eng-4106-docs-ssh-session-recording-audit-compliance-guide

Conversation

@desimone

@desimone desimone commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a follow-on guide, "SSH Session Recording for Audit and Compliance," as a companion to the SSH Session Recording reference page. The reference page covers how to turn recording on; this guide covers how to operate it so recordings hold up as audit evidence under SOC 2, PCI DSS, HIPAA, and FedRAMP.

It leads with a shared-responsibility model -- Pomerium produces a tamper-evident record and a correlatable audit trail, and the customer configures storage immutability, encryption, retention, and identity controls -- then walks through WORM/object lock plus retention, encryption at rest, least-privilege storage access, audit-log correlation between Pomerium and cloud-provider logs, integrity verification, playback governance, a control-mapping table across the four frameworks, and the feature's limitations with compensating controls. Each section includes concrete verification guidance. Includes an evidence-flow diagram, screenshots, and a short terminal recording captured from a live end-to-end deployment.

This branch is now rebased onto main; the guide is nested under the Session Recording docs and cross-linked from the main Session Recording page.

Review feedback addressed

  • Nested the compliance guide under docs/capabilities/session-recording/ and added it beneath the Session Recording sidebar category.
  • Clarified audit-log correlation: Enterprise audit entries with an access_id also carry the matching user_hmac_id.
  • Kept S3 per-request encryption scoped to S3 and left bucket-default encryption as the durable recommendation.
  • Removed the HEAD/existence-check wording and route-policy evidence row from earlier revisions.
  • Softened over-absolute write-once wording and emphasized storage-layer object lock / retention for regulated evidence.

AI disclosure

Drafted with Claude and refined manually. Reviewed across Claude and Codex; adopted corrections include: managed storage roles can include delete and should not be treated as WORM protection; WORM verification must use a delete-capable principal to prove immutability rather than IAM; the S3 user-agent correlation string was softened to match SDK sanitization; encryption now leads with a bucket-default customer-managed key; least-privilege guidance gained custom-role nuance; and the final rebase/comment-addressing pass was reviewed and validated before publishing. The screenshots and terminal recording were captured from a live end-to-end run, and the documented behavior was verified against that deployment.

Validation

  • yarn format-check
  • yarn cspell "**/*"
  • yarn build
  • git diff --cached --check

Checklist

  • reference any related issues / PRs
  • updated docs
  • updated UPGRADING.md (n/a)
  • updated CHANGELOG.md (n/a)
  • disclosed AI usage per AI_POLICY.md

@desimone desimone requested a review from a team as a code owner June 5, 2026 03:21
@desimone desimone requested review from kenjenkins and removed request for a team June 5, 2026 03:21
@netlify

netlify Bot commented Jun 5, 2026

Copy link
Copy Markdown

Deploy Preview for pomerium-docs ready!

Name Link
🔨 Latest commit e2170ad
🔍 Latest deploy log https://app.netlify.com/projects/pomerium-docs/deploys/6a3356b37f1c2300086e58fe
😎 Deploy Preview https://deploy-preview-2226--pomerium-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@CLAassistant

CLAassistant commented Jun 5, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@desimone desimone requested a review from alexandreLamarre June 5, 2026 03:31
@desimone desimone force-pushed the bdd/eng-4106-docs-ssh-session-recording-audit-compliance-guide branch from 9855e02 to f76a156 Compare June 5, 2026 03:52
@desimone desimone mentioned this pull request Jun 5, 2026
5 tasks
Comment thread content/docs/capabilities/session-recording-compliance.mdx Outdated
Comment thread content/docs/capabilities/session-recording/compliance.mdx
Comment thread content/docs/capabilities/session-recording-compliance.mdx Outdated
Comment thread content/docs/capabilities/session-recording-compliance.mdx Outdated
Comment thread content/docs/capabilities/session-recording-compliance.mdx Outdated
desimone added a commit that referenced this pull request Jun 8, 2026
- Scope per-request encryption note to S3 (S3-only option)
- Relabel evidence-flow diagram edges to 'emits' to avoid implying
  audit logs are routed off Pomerium Core
- Correct HEAD/existence-check accuracy: S3 HEAD requests carry no
  access_id or user-agent HMAC and Azure/GCS don't surface them;
  exclude HEAD checks when auditing for un-annotated reads
- Drop the route-policy evidence row (a recording's existence already
  implies the route policy was active at capture time; policy can change)

Addresses alexandreLamarre review comments on #2226.
Comment thread content/docs/capabilities/session-recording-compliance.mdx Outdated
Comment thread content/docs/capabilities/session-recording-compliance.mdx Outdated
@desimone

desimone commented Jun 8, 2026

Copy link
Copy Markdown
Contributor Author

Thanks @alexandreLamarre — addressed the technical-accuracy comments in 62ea1c3:

  • S3-only encryption: scoped the per-request encryption note (ssetype=aws:kms&...) to S3 explicitly.
  • Evidence-flow diagram: relabeled the Core/Console edges to "emits ... audit logs" so it no longer reads as logs being routed off Pomerium Core.
  • HEAD / user_hmac_id: corrected — on S3, HEAD existence checks carry neither access_id nor the UA HMAC, and Azure/GCS generally don't surface existence checks at all. Also added a note to exclude HEAD checks when auditing for un-annotated reads.
  • Route policy evidence row: removed it (and the matching mention in the SOC 2 section) — a recording's existence already implies the route policy was active at capture time, and the policy can change later.

One open item: nesting this under the Session Recording tab depends on #2214 (which introduces that tab) landing first — there's no session-recording tab on main yet. Once #2214 merges I'll move this to capabilities/session-recording/compliance.mdx mirroring the mcp/ structure. Flagging so we don't block the accuracy fixes on it.

@desimone desimone requested a review from alexandreLamarre June 8, 2026 19:48
desimone added a commit that referenced this pull request Jun 8, 2026
- Remove the HEAD/existence-check blurbs entirely (steps 2 and 4) per
  review -- they added unrelated context to the correlation guidance.
- Refine evidence-flow diagram: the default Core cluster emits Console
  access audit logs, and the Console surfaces session-recording access
  logs, rather than a generic 'emits audit logs' edge.

Addresses alexandreLamarre follow-up comments on #2226.
Base automatically changed from session-recording-docs to main June 9, 2026 17:43
Comment thread content/docs/capabilities/session-recording-compliance.mdx Outdated

@alexandreLamarre alexandreLamarre left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Besides the two open comments about audit entries & nesting the tab, I think this is ready to go once it is rebased

Add the SSH session recording audit and compliance guide under the Session Recording docs, including WORM/retention guidance, audit-log correlation, evidence collection, operational controls, and compliance control mapping.

Also update the Session Recording page and sidebar so the guide is nested under Session Recording and clarify that entries with access_id carry the matching user_hmac_id.

AI assistance: Codex helped rebase, address review feedback, and validate the docs. Final wording and validation were manually reviewed before publishing.
@desimone desimone force-pushed the bdd/eng-4106-docs-ssh-session-recording-audit-compliance-guide branch from 3368c27 to e2170ad Compare June 18, 2026 02:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants