The founder's three-identity model and the finding that the human admin is also the directory bind account lead to a proposed workplan: svc-<service> bind accounts, per-service admin accounts, a governing standard and a conformance health check. docs/crisis-custody-list.md is the first concrete list of what unlocks recovery, with unknowns marked TO CONFIRM. NK-WP-0053-T04 extends the quarterly drill to the Authelia and by-user MFA stages with admin as operator. Hub decision routes the three founder gates. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: sonnet Assistant-Process: 328925@bnt-lap001 Assistant-Session: 14b795fd-c632-4c01-8d28-e7e490c7b0ed
56 lines
5.4 KiB
Markdown
56 lines
5.4 KiB
Markdown
# Crisis custody list
|
|
|
|
NK-WP-0054-T07. Drafted 2026-10-24 from repository documents and the founder's statements
|
|
that day. **This list holds no secret value, ever.** It names what unlocks recovery, who
|
|
holds it, where, and whether using it needs the very services being recovered. Anything
|
|
the repository cannot establish is marked `TO CONFIRM`; the founder confirms each one.
|
|
|
|
It belongs with the backup documentation:
|
|
[disaster recovery guide](disaster-recovery-storage-share.md),
|
|
[identity restore drill](identity-restore-drill.md) and
|
|
[Credential Management Standard §4](../canon/standards/credential-management_v0.2.md).
|
|
That standard names the custody categories. This list makes them concrete.
|
|
|
|
## The one rule
|
|
|
|
For every row, answer: **does using this item work when SSO and OpenBao are down?**
|
|
A recovery path that is satisfied only by logging in to something being restored is a
|
|
circular dependency and is recorded as a gap, not as custody.
|
|
|
|
## Roles used below
|
|
|
|
| Role | Identity | Used for |
|
|
| --- | --- | --- |
|
|
| Crisis operator | `admin` | Runs recovery and routine validation (founder intent, 2026-10-24) |
|
|
| Authorizer | `platform-root` / king credential | Break-glass authority from offline custody; nothing routine |
|
|
| Developer | `tegwick` | Builds and tests tooling; holds no recovery keys |
|
|
|
|
## Items
|
|
|
|
| # | Item | Unlocks | Holder and location | Works with SSO and OpenBao down? | Last proven use | Gap or action |
|
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
| 1 | Custodian/backup age private key (recipient `age1zvry…50syr3tsz`, labelled `railiance-backup`) | Decrypts the identity backup bundle and the SOPS custody files | Founder, independently held password safe or offline packet (Standard §4) | Yes, offline | Entered by the founder at hidden prompts 2026-10-24 (LLDAP, Authelia, privacyIDEA stages) | `TO CONFIRM`: number of copies, who else could recover if the founder cannot |
|
|
| 2 | Storage Share `Backup` account app password | Downloads the protected ciphertext without OpenBao or SSO | Founder, independent custody `TO CONFIRM` | Yes, provider is outside the platform | Fresh retrieval 2026-10-24 | One provider copy only; residual risk accepted until 2027-01-31 (G1, NK-WP-0053) |
|
|
| 3 | OpenBao unseal shares (2 of 3 required in the restore drill) | Unseals a restored or production OpenBao | Holders `TO CONFIRM` (custody doc: escrow holders "to be named") | Yes, offline | Original shares used in the isolated restore RPF-WP-0064-T07, 2026-10-24 | Name the three holders and where each share is kept; confirm none depends on SSO |
|
|
| 4 | `platform-root` / king account and factors | Final authority; break-glass | Independently held password safe or offline packet (Standard §4; custody doc) | **No if used through KeyCape**: its login and OTP are validated by the services being recovered | OTP validated against restored privacyIDEA 2026-10-24 (isolated) | `TO CONFIRM` the offline path that works with SSO down (OpenBao shares, item 3) and record it |
|
|
| 5 | Founder admission signing key (SSH, principal `bernd`) | Signs attempt and restore admissions | Founder, workstation key; verifier anchor `/etc/secrets-engine/admission/allowed_signers` | Yes | Signed the T40 admission 2026-10-23 | `TO CONFIRM` which identity this key belongs to; the anchor is workstation-bound, so a backup of key and anchor is needed |
|
|
| 6 | `admin` password and OTP token | Day-to-day platform administration and, per intent, recovery operation | Founder; OTP enrolled 2026-10-24 | **No**: login and token checks need KeyCape, LLDAP and privacyIDEA | Token not yet in any restored backup; first restore proof after the 2026-10-25 03:45 UTC capture | Same account as the directory bind used by Authelia and privacyIDEA until the split in NK-WP-0054-T05 |
|
|
| 7 | `pi-admin` credentials (privacyIDEA internal admin) | Token repair and re-enrolment | Founder's personal password safe (stated 2026-10-24) | Custody yes if the safe opens offline; use needs a running privacyIDEA | Not yet drilled | Confirm the safe is reachable offline and mirrored; add a pi-admin check to the drill |
|
|
| 8 | Ops bundle (age-encrypted tar of service secrets, `make creds-bundle`) | Point-in-time service secrets | Offsite location `TO CONFIRM` (Standard §7) | Yes, needs item 1 | Not drilled | Confirm location and age; decide whether it duplicates the identity bundle |
|
|
| 9 | Operator access to the production host or cluster for a real restore (SSH certificate or kubeconfig) | Applying a restore to production | `TO CONFIRM` | `TO CONFIRM`: ops-warden issues SSH certificates; whether that works with SSO down is unknown | Not drilled | Establish the crisis path and record it |
|
|
|
|
## Non-secret recovery assets
|
|
|
|
These need no custody but must be reachable: the published recovery kit on Storage Share
|
|
(guide, tools ZIP, checksum; verify the checksum against a trusted copy), the pinned
|
|
container images, and a trusted checkout of this repository. TLS for `kc.coulomb.social`
|
|
has no custody: it is reissued through ACME and needs working public DNS and HTTP-01.
|
|
|
|
## Maintenance
|
|
|
|
- Review at every restore drill (NK-WP-0053), and record the date each item was last
|
|
proven. An item never proven stays marked as such.
|
|
- Loss or suspected exposure of any item goes to its owner's rotation and revocation
|
|
process (Standard §6); this list rotates nothing.
|
|
- A machine-readable, non-secret record with a freshness check, modelled on
|
|
`tools/custody-record`, is proposed in NK-WP-0054-T07. Until then this document is the list.
|