Contents · Reference

Docs / Reference

SOC 2 ↔ ISO SoA

Status: engineering crosswalk stub — not a Statement of Applicability, not an ISMS, not a certification.

EdgeCMS joins the SOC 2 control checklist (Trust Services Criteria CC1–CC9) to the ISO 27001 Annex A evidence map so a host can draft a real SoA and risk register (CMP-02). This file is a starting matrix, not a finished host document and not an audit report (SAAS-PRD.md SP-07 / D7).

Related: CMP-01–CMP-18, HS-11, HS-12, OPS-02. Code pointers for Annex A live in apps/api/src/compliance/iso27001/.

How to read this table

ColumnMeaning
SOC 2AICPA TSC Common Criteria series
ISO Annex APrimary ISO/IEC 27001:2022 Annex A controls for that theme
ApplicabilityDraft SoA hint for EdgeCMS Cloud product scope (host must confirm)
Evidence todayWhat the product/repo already exposes
Host SoA gapWhat still belongs in the host ISMS before examination

Applicability vocabulary

ValueMeaning
applicableIn product scope; expect engineering evidence plus host procedure
partialSome evidence exists; residual risk / justification still required
host_ismsHost decides include/exclude with written rationale
out_of_scopeNot claimed for this product slice

Never treat applicable or partial as “certified”, “compliant”, or “SoA complete”.

Crosswalk

SOC 2ThemeISO Annex A (primary)ApplicabilityEvidence todayHost SoA gap
CC1Control environmentA.5.1, A.5.2, A.5.4host_ismsNamed operators (SUPER_ADMIN_EMAILS); legal stubs under apps/website/legal/Yearly policy set (CMP-01); oversight; staff agreements (CMP-17)
CC2Communication & informationA.5.1, A.6.3partialPublic docs; website standards ledger tagged Planned / In progressDated customer trust page (CMP-18); internal control-change communications
CC3Risk assessmentA.5.9 (+ risk treatment via privileged-access / inventory themes)partialThis crosswalk; PRD §4.8 risk notes; abac.denied audit eventsLiving risk register + quarterly SoA review (CMP-02)
CC4MonitoringA.8.15, A.8.16applicableGET .../audit/export, /verify, /completeness; optional AUDIT_SIEM_*Continuous monitoring runbooks; alert SLAs; management review of findings
CC5Control activitiesA.5.15–A.5.18, A.8.2, A.8.3, A.8.5applicableRBAC + ABAC; MFA flags; CSRF; rate limits; security headers — see Auth and accessOps-owned control matrix; documented exception handling
CC6Logical accessA.5.15–A.5.18, A.8.2, A.8.3, A.8.5applicableAccess-review stub: GET .../compliance/access-review; membership roles; MFA (HS-11)Quarterly acknowledgement; joiner/mover/leaver tickets; 1-day offboarding proof (CMP-04)
CC7System operationsA.8.15, A.8.16 (+ host backup / BC controls)partialHealth routes; audit retention ≥ 365 days; Operations and securityStated RPO/RTO; restore drills; incident runbook with 72h breach path (CMP-09, CMP-10)
CC8Change managementA.8.9, A.8.32applicableReviewed PRs + CI + tagged deploys (OPS-02); host.changeControlSink; GET .../compliance/change-log; root CHANGELOG.mdEmergency-change after-action; consistent ticket↔deploy linkage (CMP-06)
CC9Risk mitigationA.5.19, A.5.21, A.5.23partialSupplier/deps note; Cloudflare-only year-one posture; Stripe SAQ A intent; Supply chainYearly vendor security reviews (CMP-14); pen-test cadence (CMP-08)

Theme → Annex A (same focus as the ISO map)

ThemeControlsProduct anchors
Access controlA.5.15–A.5.18, A.8.2, A.8.3, A.8.5RBAC, ABAC, MFA, tenant isolation (HS-01, HS-11, PL-03)
Logging / monitoringA.8.15, A.8.16Hash-chained audit ledger, SIEM hooks (HS-12, CMP-05)
Change / configA.8.9, A.8.32wrangler.toml, CI/deploy, changeControlSink (CMP-06)
Asset inventoryA.5.9buildAssetInventoryStub() (completeness: "stub")
Supplier / cloudA.5.19, A.5.21, A.5.23Supplier note + lockfile; SBOM track separate

Full Annex A pointer list and gaps: apps/api/src/compliance/iso27001/controls.ts. Verify paths with bun scripts/iso27001-evidence.ts.

Draft SoA workflow for hosts

  1. Copy this matrix into the host ISMS SoA template (control id, applicable Y/N, implementation status, owner, evidence link, residual risk).
  2. For each applicable / partial row, attach EdgeCMS evidence exports and host procedure artefacts (tickets, reviews, drill receipts).
  3. For each host_isms / out_of_scope row, write an exclusion justification or expand scope deliberately.
  4. Review quarterly with the risk register (CMP-02). Do not mark website standards “audited” until an independent report has a date.

Explicit non-claims

  • No SOC 2 Type I/II report, ISO 27001 certificate, surveillance audit, or accredited certification body engagement is asserted here.
  • No completed host Statement of Applicability or risk register ships in this repository — only this crosswalk stub.
  • No production backup, penetration-test, or remote performance proof is claimed by this document.
  • Staff security training, background checks, and physical controls remain out of product scope (CMP-17).

What not to say

  • Do not write “SOC 2 certified”, “ISO 27001 certified”, “SOC/ISO compliant”, “we passed SOC 2”, or “SoA approved”.
  • Prefer: “We maintain a SOC 2 ↔ ISO Annex A SoA crosswalk and exportable engineering evidence; host SoA and examination are planned.”
  • Website build tests already fail on certification language (SP-07).

Edit docs/public/soc2-iso-soa.md on GitHub