SOC 2 Trust-Service-Criteria mapping
This page maps the SOC 2 Trust Service Criteria (TSC) 2017 to the OrbitalReg features that satisfy or substantiate them, and points at the OrbitalReg SOC 2 Evidence-Engine that produces auditor-ready bundles for each criterion. Use it to short-cut SOC 2 procurement reviews, draft your auditor's request list, and run dry-runs of an upcoming Type II audit.
How to read this page
For each criterion we publish:
- Status — one of:
- Implemented — the OrbitalReg-shipped behaviour satisfies the criterion with default-secure settings.
- Configurable — OrbitalReg ships the mechanism but the operator must enable or tune it for their environment (SSO, retention, pull-gate, IP allowlist, …).
- Customer-side — the criterion sits in the customer's wider governance, HR, vendor-risk, or facilities programme. OrbitalReg may produce evidence that supports it but does not satisfy it alone.
- Feature — the OrbitalReg surface that backs the criterion.
- Evidence — what the OrbitalReg SOC 2 Evidence-Engine produces, plus the admin URL / API endpoint / runbook the auditor can cross-reference.
Scope
This mapping is informational. SOC 2 Type II attestations are issued by a licensed CPA firm against your organisation's system description and complementary subservice controls — not against OrbitalReg. The criteria below describe how OrbitalReg helps you meet the technical and operational expectations the AICPA's TSC place on a self-hosted artifact registry, not a substitute for the management- system work (control environment, communication and information, risk assessment, monitoring activities) that sit with your organisation.
Built-in evidence engine
OrbitalReg ships a SOC 2 Evidence-Engine that produces a per- criterion ZIP bundle on demand. The web admin page at /admin/compliance#soc2 and the orbital compliance soc2-report CLI both wrap the same engine. The bundle includes one JSON file per TSC plus a manifest.json (scope, criteria, bundle SHA-256) and a summary.md cover sheet. See Generating evidence below.
Common Criteria — CC6 Logical and physical access
CC6.1 Logical access security
The entity implements logical access security software, infrastructure, and architectures over protected information assets to protect them from security events to meet the entity's objectives.
- Status: Implemented
- Feature: Project-scoped RBAC (
viewer / editor / owner) plus a globaladminrole; SAML-provisioned principals for human users, project-scoped service accounts for programmatic identity; bounded-lifetime API tokens withexpires_atenforced at the middleware. - Evidence: Bundle file
evidence/CC6.1-logical-access.jsoncarries the inventory of users, API tokens, and service accounts plus the access-control audit-event tail. Cross-reference at Admin > Users;/api/v1/projects/{id}/role-bindings; Architecture > Identity model.
CC6.2 Authentication & identity
Prior to issuing system credentials and granting system access, the entity registers and authorizes new internal and external users whose access is administered by the entity.
- Status: Configurable
- Feature: SAML 2.0 federation (Azure AD / Okta / Keycloak) is the default for human users; OIDC-token-exchange covers programmatic identity; a small
local_usersbreak-glass surface is available but discouraged. SCIM 2.0 syncs identity from the upstream IdP. - Evidence: Bundle file
evidence/CC6.2-authentication.jsoncarries the auth-method posture (SAML user count + OIDC trust policies + local-users list) plus successful logins and auth-incident counts inside the audit window. Cross-reference at Admin > SAML; Admin > OIDC trust; Reference > REST API.
CC6.3 Access modification & removal
The entity authorizes, modifies, or removes access to data, software, functions, and other protected information assets based on roles, responsibilities, or the system design and changes, giving consideration to the concepts of least privilege and segregation of duties.
- Status: Implemented
- Feature: Every role-binding mutation, SA disable, and token revoke emits an
audit_eventsrow with action, actor, and target; the SCIM sync surfaces upstream group changes; a lazy 90-day dormancy counter highlights candidates for recertification. - Evidence: Bundle file
evidence/CC6.3-access-modification.jsoncarries per-action histograms, the privilege-grants tail (capped at 1000 rows), token-revoke counts, and a dormant-user counter at scope end. Cross-reference at Admin > Audit > filter byuser.role.grant.
CC6.6 Boundary protection
The entity implements logical access security measures to protect against threats from sources outside its system boundaries.
- Status: Implemented (default-secure)
- Feature: Air-gapped-mode-by-default — fresh installs deny every outbound channel until an operator opts in. Per-channel toggles for webhooks / telemetry / Sigstore Rekor / OSV / OTel export. Optional admin-API IP allowlist (CIDR-based). Login rate-limiter (per-IP and per-(IP, email)) fronts every login path.
- Evidence: Bundle file
evidence/CC6.6-boundary-protection.jsoncarries the egress posture (master toggle + per-channel allowances), denied-egress counts by kind, the admin-IP allowlist size + denial tail, and login rate-limit blocks inside the window. Cross-reference at Admin > Network; Operations > Air-gapped mode.
CC6.8 Unauthorized software prevention
The entity implements controls to prevent or detect and act upon the introduction of unauthorized or malicious software to meet the entity's objectives.
- Status: Configurable
- Feature: Multi-algorithm signing-key trust set (Ed25519, RSA- 4096, OpenPGP, X.509-CMS); Sigstore (cosign) keyless verification via
sigstore_trust_policies; the Pull-Gate-Policy-Engine evaluates every artifact serve against per-(global / project / repo) criteria including required-signature, max-severity, max-age, allowed/forbidden licenses, required SBOM, and bypass globs. Verify-on-push and verify-on-pull both consult the same trust set. Detection workers (Trivy / Grype / Syft / OSV) re-scan on upstream feed updates. - Evidence: Bundle file
evidence/CC6.8-unauthorized-software.jsoncarries the trust-bundle counts by algorithm, the Sigstore policy totals (global + scoped), the pull-gate posture (settings + per-scope policy counts), and the audit-window decision histogram (allow / block / bypass). Cross-reference at Admin > Trust; Admin > Sigstore; Admin > Pull-gate.
Common Criteria — CC7 System operations
CC7.1 Vulnerability detection
To meet its objectives, the entity uses detection and monitoring procedures to identify (1) changes to configurations that result in the introduction of new vulnerabilities, and (2) susceptibilities to newly discovered vulnerabilities.
- Status: Implemented
- Feature: Detection workers run Trivy + Grype + Syft + OSV against every uploaded artifact and every upstream feed update; the
scan_findingstable is the canonical surface; CVE-driven promotion blocks (project_cve_policies) gate downstream promotion; auto-quarantine flips a bit when a new CVE matches an in-registry artifact. - Evidence: Bundle file
evidence/CC7.1-vulnerability.jsoncarries the scanner inventory + enabled count, scan-job throughput inside the audit window, finding-severity rollups, and the open critical/high count at scope end. Cross-reference at/api/v1/detection/findings; Concepts > Scanning.
CC7.2 Anomaly monitoring
The entity monitors system components and the operation of those components for anomalies that are indicative of malicious acts, natural disasters, and errors affecting the entity's ability to meet its objectives; anomalies are analyzed to determine whether they represent security events.
- Status: Implemented
- Feature: Append-only
audit_events(the trigger rejects UPDATE / DELETE) plus per-pullartifact_pulls. The audit-forwarder dual-writes every row to a configured SIEM (Loki / Elastic / Splunk); a webhook fan-out pages a configured channel onblock.createdandadvisory.match. Daily volume histograms surface gaps in coverage. - Evidence: Bundle file
evidence/CC7.2-anomaly.jsoncarries the audit-event total + top-30 actions, the daily-volume histogram, the SIEM-forwarder posture (enabled / endpoint / queue / dead-letter), and the notification-subscription posture. Cross- reference at Operations > Structured logs; Admin > Webhooks.
CC7.3 Incident response
The entity evaluates security events to determine whether they could or have resulted in a failure of the entity to meet its objectives (security incidents) and, if so, takes actions to prevent or address such failures.
- Status: Implemented
- Feature:
security_blockscarry CVE-driven, pattern-driven, or artifact-pinned block expressions;security_auditis the per-fire log; the public/blocked/<id>page surfaces a human-readable reason to the blocked caller without leaking details outside the block ID. Webhook fan-out paged on every block creation. - Evidence: Bundle file
evidence/CC7.3-incident.jsoncarries the security-block creations inside the window, the active-now count at scope end, the per-block top-25 hit list, the CVE-driven promotion-block tail, and the notification-fire activity. Cross- reference at Security > Blocks; Security > Audit; Admin > Promotions.
CC7.4 Backup recovery & resilience
The entity responds to identified security incidents by executing a defined incident-response program to understand, contain, remediate, and communicate security incidents, as appropriate.
Most SOC 2 mappings extend CC7.4 (sometimes labelled A1.2/A1.3 in the Availability TSC) to "backup and recovery effectiveness".
- Status: Implemented
- Feature: CloudNativePG backs the Postgres tier with daily base backups + 30-day PITR; the artifact bytes mirror to a configured backup S3; a weekly
backup-verificationcronjob pulls the most recent base, restores into an ephemeral cluster, and runs smoke tests. The Restore-CLI plus DR runbook covers three scenarios (DB-only / S3-only / both). - Evidence: Bundle file
evidence/CC7.4-backup.jsoncarries the backup-verification runs inside the window, pass/fail counts, days-since-last-successful-restore, and per-source coverage (cnpg-base + s3-mirror). Cross-reference at Operations > Backup verification; Operations > Disaster recovery.
Common Criteria — CC8 Change management
CC8.1 Change management
The entity authorizes, designs, develops or acquires, configures, documents, tests, approves, and implements changes to infrastructure, data, software, and procedures to meet its objectives.
- Status: Implemented
- Feature: Every config-mutation path (settings / license / branding / banner / maintenance-mode / network / pull-gate / retention / scan-rule / CVE-policy / webhook / Sigstore policy / OIDC trust / geo-sync / audit forwarder) emits a typed
audit_eventsrow; the migration framework guards against partially-applied schema upgrades via adirtyflag; banners surface scheduled change windows; maintenance mode rejects writes while a change is in progress. - Evidence: Bundle file
evidence/CC8.1-change-management.jsoncarries theschema_migration_state(version + dirty flag), the configuration-change audit tail (capped at 5000 rows), a per- action histogram, the banners created in scope, and a snapshot of the maintenance-mode flag at scope end. Cross-reference at Admin > Audit > filtersettings.*; Admin > Banners; Admin > Maintenance.
Availability — A1
A1.1 Capacity & availability
The entity maintains, monitors, and evaluates current processing capacity and use of system components (infrastructure, data, and software) to manage capacity demand and to enable the implementation of additional capacity to help meet its objectives.
- Status: Implemented
- Feature: Scan-job queue depth is exposed as a Prometheus metric; the
backup_writestable logs every mirror failure plus the recovery-worker outcome;geosync_peers+geosync_peer_statecarry per-peer cursor +consecutive_failures; the audit- forwarder queue + dead-letter sizes surface SIEM ingestion stalls. - Evidence: Bundle file
evidence/A1.1-capacity.jsoncarries the pending scan-jobs at scope end, the mirror-write failed / recovered counts, the geosync peer health table, the audit- forwarder queue + dead-letter sizes, and the audit-window upload volume (artifacts + bytes). Cross-reference at Admin > Overview; the Prometheus alerts in Operations > Monitoring.
Confidentiality — C1
C1.1 Confidentiality of data
The entity identifies and maintains confidential information to meet the entity's objectives related to confidentiality.
- Status: Implemented
- Feature: The per-pull
artifact_pullstable is the access trail (sha + repo + principal + IP + UA + timestamp); per-repo retention policies plus a sweeper produce the disposal trail (retention_audit); project-scoped role-bindings partition read access at the row level; HTTPS terminates in front of every serve path so on-the-wire confidentiality is independent of TLS trust on the upstream side. - Evidence: Bundle file
evidence/C1.1-confidentiality.jsoncarries the artifact-pull totals + per-principal-kind breakdown, the top-25 pulled-by-sha list, the retention-policy posture (total / enabled / dry-run), the in-scope retention deletes (real- dry-run), the last successful sweeper run, and the role-binding partition (project-scoped vs org-wide). Cross-reference at Admin > Retention; Security > Who-pulled.
Generating evidence
Two surfaces drive the same engine:
From the admin UI
- Navigate to Admin > Compliance > SOC 2 (System group).
- Pick the audit window via the start/end date pickers (defaults to the trailing 90 days).
- Tick the in-scope criteria from the checkbox grid (defaults to all twelve).
- Click Preview to see the report inline; click Generate bundle to stream the ZIP and persist the run row.
- Past runs are listed below with per-row SHA-256 + size + criteria chips.
From the CLI
# Default: trailing 90 days, all criteria, file in CWD
orbital compliance soc2-report
# Quarterly bundle, custom path + scope
orbital compliance soc2-report \
--start 2025-07-01 --end 2025-09-30 \
--output ./Q3-2025-soc2.zip
# JSON preview, only the access-control criteria
orbital compliance soc2-report --preview \
--criteria CC6.1,CC6.2,CC6.3 \
--json | jq '.sections[].criterion'
# History of past bundle runs
orbital compliance soc2-report runs
# Canonical TSC catalogue for scripted scope-validation
orbital compliance soc2-report criteria --jsonThe CLI hits the same /api/admin/compliance/soc2/* endpoints the web UI uses, requires a SAML-auth token plus the org_admin role, and writes the same soc2_evidence_runs row server-side so a future auditor can verify the bundle's SHA-256 against the immutable manifest.
Bundle integrity
The server stores the per-bundle metadata (run timestamp, scope, criteria, item count, SHA-256, byte size) but not the bundle bytes themselves. The auditor's copy IS the file the operator downloaded; the server-side row is the integrity counterpart that proves the file the auditor received matches what the engine produced. Both the admin page and orbital compliance soc2-report runs surface the SHA-256 for cross-checking.
Statement-of-Applicability template
A SOC 2 attestation does not require a Statement of Applicability in the same prescriptive form ISO 27001 does, but most auditors will ask for a "system description" + "complementary subservice organization controls" matrix. The mapping above is structured so you can copy each criterion row directly into your control matrix:
| TSC ref | Title | Applicable? | OrbitalReg status | Evidence bundle file |
|---|---|---|---|---|
| CC6.1 | Logical access security | Yes | Implemented | evidence/CC6.1-logical-access.json |
| CC6.2 | Authentication & identity | Yes | Configurable | evidence/CC6.2-authentication.json |
| CC6.3 | Access modification & removal | Yes | Implemented | evidence/CC6.3-access-modification.json |
| CC6.6 | Boundary protection | Yes | Implemented | evidence/CC6.6-boundary-protection.json |
| CC6.8 | Unauthorized software prevention | Yes | Configurable | evidence/CC6.8-unauthorized-software.json |
| CC7.1 | Vulnerability detection | Yes | Implemented | evidence/CC7.1-vulnerability.json |
| CC7.2 | Anomaly monitoring | Yes | Implemented | evidence/CC7.2-anomaly.json |
| CC7.3 | Incident response | Yes | Implemented | evidence/CC7.3-incident.json |
| CC7.4 | Backup recovery & resilience | Yes | Implemented | evidence/CC7.4-backup.json |
| CC8.1 | Change management | Yes | Implemented | evidence/CC8.1-change-management.json |
| A1.1 | Capacity & availability | Yes | Implemented | evidence/A1.1-capacity.json |
| C1.1 | Confidentiality of data | Yes | Implemented | evidence/C1.1-confidentiality.json |
What this page does not do
- It does not assert that a deployment is automatically SOC 2 Type II compliant by virtue of running OrbitalReg. The attestation is issued by a licensed CPA firm against your organisation's system description; the registry is one technical control source among many.
- It does not replace the management-side TSCs (CC1 Control Environment, CC2 Communication and Information, CC3 Risk Assessment, CC4 Monitoring Activities, CC5 Control Activities). Those describe how the organisation operates the control environment and sit entirely with the customer.
- It does not replace your auditor's independent verification. Use this page (and the evidence bundle) to short-cut the what does the product do? conversation, then have the auditor reproduce the assertions from the cited APIs / admin pages.
- It does not cover the Privacy or Processing Integrity TSCs. Privacy applies only when the system processes personal information beyond identity-management; Processing Integrity applies only when the system performs transactional data processing. Neither pattern fits a self-hosted artifact registry.
Related compliance docs
- ISO/IEC 27001:2022 Annex A controls — parallel controls map; many SOC 2 criteria share evidence sources with ISO 27001 controls (e.g. CC6.6 ↔ A.8.20, CC7.1 ↔ A.5.7, CC7.4 ↔ A.5.30 + A.8.13, CC8.1 ↔ A.8.32).
- Operations > Air-gapped mode — the default-secure egress posture relevant to CC6.6.
- Operations > Structured logs — the canonical log schema and SIEM recipes relevant to CC7.2.
- Operations > Backup verification — weekly proof-of-restore relevant to CC7.4 / A1.1.
- Operations > Disaster recovery — three-scenario restore procedure relevant to CC7.4.
- Reference > REST API — every endpoint cited above, with request/response shapes for evidence-collection scripts.