feat: verify live KeyCape custody and preserve versions on resume
Assistant: codex Assistant-Model: gpt-5.6-luna Assistant-Session: 01a07ff8-19d0-7820-b4d0-1353833cb7fc
This commit is contained in:
parent
b7861de20e
commit
c6dc4286e2
8 changed files with 382 additions and 57 deletions
|
|
@ -1,45 +1,28 @@
|
|||
# KeyCape approval-client custody: review packet
|
||||
# KeyCape approval-client custody: accepted verifier delivery
|
||||
|
||||
Prepared 2026-09-09 by the-custodian. Both requests are **approved** by the user as platform operator and KeyCape
|
||||
owner, explicitly recorded on 2026-09-09. The admission receipt is
|
||||
[here](../evidence/2026-09-09-keycape-approval-admission.json). This is the review record for
|
||||
RPF-WP-0035-T05, consumed by HFACT-WP-0001-T03.
|
||||
Both CCR-2026-0017 and CCR-2026-0018 have the user's explicit approval as platform
|
||||
operator and KeyCape owner. Both are now **verified**. Their existing decision
|
||||
IDs remain resolved; no renewed review is needed for this completed scope.
|
||||
|
||||
| Request | Secret path and field | Client authority | Resolved decision |
|
||||
| --- | --- | --- | --- |
|
||||
| [CCR-2026-0017](../../credential-change-requests/CCR-2026-0017-keycape-secrets-engine-approval-client.yaml) | `platform/workloads/secrets-engine/approval-client`, `CLIENT_SECRET` | `approval:read`, `approval:consume` | `b533a271-b704-4c5c-98a2-9a5951aadfb6` |
|
||||
| [CCR-2026-0018](../../credential-change-requests/CCR-2026-0018-keycape-approval-engine-operator-client.yaml) | `platform/workloads/approval-engine/operator-client`, `CLIENT_SECRET` | create/read/approve/revoke/supersede/observe/emit; no consume | `efa90517-0cae-4eb6-a68d-5b0489c84d65` |
|
||||
[Combined live receipt](../evidence/2026-09-09-keycape-verifier-admission.json) records version-1 custody, both ESO
|
||||
stores and Secrets, exact native scope/auth/namespace denials, reader revocation,
|
||||
compatible pinned KeyCape deployment and both service-client verification runs.
|
||||
The existing human OpenBao login passed before and after the rollout.
|
||||
|
||||
Both named **platform-operator and key-cape-owner** reviews are approved. Each has its own
|
||||
exact-path policy, Kubernetes auth role and ClusterSecretStore, bound to
|
||||
`external-secrets/external-secrets`, limited to `sso`. ESO owns the resulting
|
||||
Secret; authentication tokens have a 15-minute TTL. Client secrets require
|
||||
explicit rotation or registration disablement; token expiry does not revoke them.
|
||||
The two Warden fetch selectors remain unresolved: these CCRs authorize verifier
|
||||
copies only. Client-side reads, audit custody, natural JWT expiry, real predecessor
|
||||
rotation and factory operating/spend admission remain with the existing owner
|
||||
records. See [the owner sequence](keycape-approval-clients.md).
|
||||
|
||||
The approved requests authorize verifier-side custody only. Client-side
|
||||
retrieval, audit sender/receiver custody, operator `approval:consume`, adoption
|
||||
of the Qonto Secret and factory spending remain outside these two requests.
|
||||
The exercised procedure is `scripts/keycape_approval_custody.py`: `activate` for
|
||||
first provision, `resume-activate` only with a completed rollback receipt, and
|
||||
`verify` for existing custody. The selected kubeconfig must identify railiance01;
|
||||
on this workstation it is `/home/worsch/.kube/config-railiance01`. Use the
|
||||
Warden attended wrapper, a unique metadata receipt and protected recovery file.
|
||||
The pinned native verifier is extracted from image digest `7ff54c54e63e...` and
|
||||
hash-checked; its child environment carries credentials only during execution.
|
||||
No Kubernetes egress policy changes are needed.
|
||||
|
||||
Technical review completed: both CCRs validate, their generated policies match
|
||||
the two source HCL files, and the delivery manifests map exactly to the declared
|
||||
paths and fields. The signed upstream issuer is verified; NetKingdom's exact live
|
||||
pin is independently read back at Secret revision `58713343`. The compatible
|
||||
KeyCape image and rollout patch are prepared. These checks are evidence for the
|
||||
review, not substitutes for either named approval.
|
||||
|
||||
Execution still follows the [owner rollout sequence](keycape-approval-clients.md)
|
||||
through the founder-attended Warden/OpenBao envelope: policy/roles, CAS=0 initial
|
||||
custody, Valid stores, SecretSynced delivery, compatible config/image replacement,
|
||||
then positive and negative acceptance and metadata-only receipts. The contained owner command is now `scripts/keycape_approval_custody.py activate`.
|
||||
It preflights both config and deployment changes, seeds with CAS=0, verifies native
|
||||
and namespace boundaries, then calls NetKingdom's contained compatible rollout.
|
||||
A failure restores the prior config/image pair before detaching verifier delivery;
|
||||
initial KV versions remain in custody. The four new exact data/metadata deny
|
||||
stanzas extend the coding-agent boundary without changing any grant.
|
||||
|
||||
Validation: six checks against a disposable local OpenBao, eight config/rollback
|
||||
tests, and real HTTP signature/claim/scope acceptance against the pinned KeyCape
|
||||
image with synthetic keys. Production in-pod CLI and existing-human-login checks
|
||||
remain part of the live window. The image exercise omits the in-pod CLI explicitly.
|
||||
Use a unique private receipt and protected owner recovery path; a fresh attended
|
||||
login after the rollout establishes the existing human path on the new build.
|
||||
Validation: eight local OpenBao checks, ten config/rollback/clock checks, 53
|
||||
existing credential-change tests, plus a disposable pinned-image HTTPS exercise
|
||||
that runs the exact native verifier with synthetic keys and client credentials.
|
||||
|
|
|
|||
|
|
@ -1,14 +1,20 @@
|
|||
# KeyCape approval-engine client custody admission
|
||||
|
||||
**2026-09-09 accepted:** verifier custody and the compatible image/config are live;
|
||||
both service verifiers and a fresh existing-human OpenBao login passed. Both CCRs
|
||||
are verified. [Live evidence](../evidence/2026-09-09-keycape-verifier-admission.json) supersedes the preparation
|
||||
status below. Client-side reads and factory operating grants remain separate.
|
||||
|
||||
Answer to KEY-WP-0013-T02 (State Hub message
|
||||
`278a3ebe-b529-49f6-bd1a-e3ebcf318260`, KeyCape packet
|
||||
`key-cape: docs/approval-engine-provisioning-request.yaml`). Tracked here as
|
||||
RPF-WP-0035-T05. Requests: [CCR-2026-0017](../../credential-change-requests/CCR-2026-0017-keycape-secrets-engine-approval-client.yaml),
|
||||
[CCR-2026-0018](../../credential-change-requests/CCR-2026-0018-keycape-approval-engine-operator-client.yaml).
|
||||
|
||||
Nothing below is an activation. Both CCRs are `proposed`; no value has been
|
||||
generated, no KV version written, no manifest applied. Source preparation is not
|
||||
live completion.
|
||||
Both CCRs are **verified** following explicit user approval in both reviewer
|
||||
roles. Version-1 custody, ESO delivery, the compatible KeyCape rollout and the
|
||||
fresh existing-human login all passed. The contract below defines the completed
|
||||
verifier-side scope; client-side reads remain a separate admission.
|
||||
|
||||
## a) Custody paths and field names
|
||||
|
||||
|
|
@ -53,7 +59,7 @@ keycape-rapp-qonto-client, key: client-secret}`. Read-only observation
|
|||
2026-09-08, and it confirms KeyCape's own statement that the image carries only
|
||||
that one client reference.
|
||||
|
||||
Manifests are written and client-validated but unapplied:
|
||||
Both delivery manifests are applied and live-verified:
|
||||
`argocd/platform-addons/openbao-secretstore/openbao-keycape-approval-clients.clustersecretstore.yaml`
|
||||
and `keycape-approval-clients.externalsecrets.yaml`.
|
||||
|
||||
|
|
@ -146,9 +152,10 @@ ExternalSecrets, detach the policies from the roles. The KV versions are retaine
|
|||
until KeyCape confirms whether the registrations stay; if they are abandoned,
|
||||
KeyCape disables the registrations first and platform then destroys the versions.
|
||||
|
||||
**Date is not set here.** It depends on the founder's availability, which is not
|
||||
mine to schedule. Propose a slot from 2026-09-10 and I will confirm the
|
||||
platform side; the window needs roughly 60–90 minutes with both owners present.
|
||||
The attended window completed on **2026-09-09** under the user's explicit
|
||||
approval. Failed checks restored the compatible config/image and detached ESO
|
||||
delivery. The final resume preserved both initial KV versions and passed all
|
||||
service checks plus a fresh existing-human OpenBao login.
|
||||
|
||||
## What is not admitted
|
||||
|
||||
|
|
@ -184,4 +191,4 @@ approval is performed by this preflight.
|
|||
|
||||
2026-09-09: the live issuer pin is complete. The next review is captured in
|
||||
[keycape-approval-clients-review.md](keycape-approval-clients-review.md), with
|
||||
one pending Hub decision per existing CCR and both required reviewer roles.
|
||||
the resolved Hub decisions, both recorded reviewer roles and completed live verification.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue