Your SOC 2 tasks¶
Target: hand the evidence pack to GetAgency by Friday 11 September. Find your name, do the things, capture the evidence. Everything here is also in Linear.
The weekly slot — Thursday 13:00–14:00 CEST
27 Aug · 3 Sep · 10 Sep. It is a working session, not a status meeting. Join with your laptop open and capture your evidence live on the call. Screenshots assigned as homework do not happen — that is exactly why the last plan slipped.
Plus 15 minutes Monday 09:15, or async in #Security before 10:00.
Thomas — the technical track¶
Four of these are gaps between what we already tell customers and what is actually configured. That is why they are first.
| Task | Why now | Linear | |
|---|---|---|---|
| 1 | Branch protection on main — all six repos: require a PR, 1 approval, Code Owner review, status checks, no force push |
Verified 22 Aug: no repo has any protection or ruleset. Rows #61/#62/#64 are marked Done and soon.works/trust says every change is peer-reviewed. One API call disproves it | S-405 |
| 2 | GitHub org-wide 2FA | two_factor_requirement_enabled: false. Warn the team first — members without 2FA get removed and need re-inviting |
S-406 |
| 3 | Sentry: sendDefaultPii: false + enable scrubbing + confirm the project region |
soon-server/src/instrument.js:19 sends PII by default and beforeSend does no scrubbing. Live GDPR exposure |
S-407 |
| 4 | Revoke the DeepSeek / Mistral / xAI keys; prune the CSP allowlist | Unused live credentials, and ~10 dead domains each of which is a permitted exfiltration route | S-408 |
| 5 | ✅ Done 19 Aug — public DB endpoint removed. Now: capture the evidence (PubliclyAccessible: false + the security-group export) and delete the unattached legacy security groups |
We can assert it; we can't yet show it, and CC6.6 turns on showing it | S-299 |
| 6 | First quarterly access review — AWS IAM, GitHub, Workspace, WorkOS. Export the lists, mark each row keep/remove, sign it | Never performed. The row needs the record, not the policy | — |
| 7 | Network diagram — VPC, subnets, security groups, data path. Draw it from soon-terraform/modules/network |
Row #45, and the auditor will use it to frame questions | — |
| 8 | Annual firewall / security-group review — walk every rule, delete the legacy groups in the S-299 runbook step 5, sign the record | Row #46 wants a performed review | — |
The big one is already closed
The public database endpoint was removed on 19 August (soon-server#1675), which takes the qualified-opinion risk off the table. Engineers now reach the database through SSM Session Manager — see Production Database Access §2.
What's left is evidential. A control an auditor can't see tested is one they treat as absent, so the config export is worth more than the fix being done.
Alessandro — the paperwork and people track¶
None of this needs AWS or the codebase. Roughly a day and a half spread over three weeks, and it unblocks nine checklist rows that nobody else is going to pick up.
| Task | What good looks like | Linear | |
|---|---|---|---|
| 1 | Org chart + job descriptions | A diagram of the four founders + Andrea showing reporting lines and — the part the auditor actually wants — who owns security (Olaf). Then one paragraph per founder: role, security responsibilities, competence. §1 of Roles & Responsibilities already has the prose | S-409 |
| 2 | Signed NDAs and agreements | Do not send the existing NDA to the founders — it is a one-way third-party agreement with unfilled brackets. Founders get the new Founder Undertaking; Andrea gets the NDA with its three blanks filled. Then fill in the Schedule | S-410 |
| 3 | Vendor DPAs and SOC 2 reports | One folder per vendor in Drive → Legal → Vendors, for the 12 core sub-processors in the register. Download the PDFs — a link is not evidence of what the terms said on the audit date | S-411 |
| 4 | Training round — schedule all four founders + Andrea through /isms:onboard, and collect the acknowledgement form |
The training log is currently empty, which is what rows #14 and #18 read from. Run it as one round, not person by person | — |
| 5 | Device attestation round | Each person completes the Device Security Standard checklist and screenshots FileVault, firewall, screen-lock timeout and OS version. Makes the no-MDM position evidenced rather than asserted | — |
Andrea is your brother — so Olaf signs, not you
On the CyberSquad paperwork specifically. It is recorded as a related-party relationship in Roles & Responsibilities §1.7, and a countersignature from you would create the exact problem that note exists to manage.
Melvin — infrastructure¶
| Task | Why | Linear | |
|---|---|---|---|
| 1 | Restore test — restore the latest snapshot to a throwaway instance, verify a known table, record the timings, delete it | The single most-cited SOC 2 gap. "PITR is enabled" is not an answer; a backup never restored is a hypothesis. The timings also fill in the BC/DR Plan | S-412 |
| 2 | Isolated backup copy — AWS Backup vault in the log-archive account + a copy to eu-central-1 (~€25/month) | Today one account compromise destroys the database and all 30 days of snapshots | — |
Olaf — approvals, decisions, handover¶
| Task | Linear | |
|---|---|---|
| 1 | Fix the evidence store — the KMS key does not resolve, so nothing can be filed and soon-grc has failed daily since 18 Aug | S-413 |
| 2 | Settle the report mechanics with Tad — management assertion, Trust Services Categories, as-of date, carve-out method | S-416 |
| 3 | Approve the ready policy set — 30 documents with no open questions | S-414 |
| 4 | IR + DR tabletop, 90 minutes, minuted — the only two rows still Not started | S-415 |
| 5 | Trust Center fix, Chatbot → Slack, the remaining owner decisions, handover | — |
Capturing evidence — one command¶
Everything above ends in an artefact. The tool stamps a visible timestamp into the image, hashes it, files it in the WORM store, and logs it:
python3 tools/evidence.py shot --control A.5.17 --desc mfa-enforced-github --soc2 34 --cc CC6.1
Run this once per machine so full-screen captures carry the system clock too — it is the first thing an auditor looks for:
python3 tools/evidence.py clock
The store is not accepting uploads yet
A KMS problem is blocking every write (S-413). Capture into a folder in the meantime; the tool will file the backlog once it is fixed.
Screenshot rules: whole window including the URL bar or CLI prompt so the account and system are visible · a date visible somewhere · the real setting, not a cropped fragment · redact secrets by drawing over, never by cropping out context.
The full picture¶
- The three-week plan — including Appendix A, all 38 open controls with owner and effort
- All 68 controls · Readiness · Policies SOC 2 expects