ops-mason/docs/reuse-surface-hub-writer-attended.md
tegwick e4761b843c Accept attended sign-in diagnosis caller proofs
Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a13eab-1e6a-7b33-9c37-372e90ada3a2
2026-10-15 19:23:24 +02:00

60 lines
3 KiB
Markdown

# reuse-surface hub-writer attended verification
Plan: `plans/reuse-surface-hub-writer.md`. Filed request:
`railiance-platform/credential-change-requests/CCR-2026-0044-reuse-surface-hub-writer-caller.yaml`
(applied 2026-10-14). Source copy:
`builds/reuse-surface-hub-writer/credential-change-requests/CCR-DRAFT-REUSE-SURFACE-HUB-WRITER.yaml`.
Run this only after CCR-2026-0044 is approved and applied. LLDAP group
`reuse-surface-hub-writers` exists with member `bernd.worsch-3`, and that
user enrolled a second factor on 2026-10-14. `member` still has to be a
login that KeyCape marks `/assurance/level=aal2`. The reported uuid
`f94b7c34-e151-30bb-b473-df3ccdbb9bf1` is not an OpenBao entity. A token for
`4a1f663c-0621-0483-edd0-f852274f4b6b` fails. Later groups of this
shape go through
identity-provisioner `POST /v1/groups/ensure`; see
`docs/directory-group-binding.md`.
The script leaves `~/.vault-token` in place and reads no operator or root
token. Since NK-WP-0051-T06 it asks `sys/capabilities-self` with the lane
token itself, which needs railiance-platform CCR-2026-0045 applied (the
generated `sys/capabilities-self` grant). Until that apply, `member` fails
with the OpenBao permission error in `openbao_error`. The lane token is not
printed and is revoked before the script exits. A passing receipt is the
sanitized verification record.
`bao login` runs with `skip_browser=true`: it prints the sign-in address and
waits, so the default browser and its Authelia session are not used. Open the
address in a private window, or set `OPS_MASON_LOGIN_BROWSER` to a Chromium or
Firefox binary to open it in a fresh temporary profile.
The receipt follows `net-kingdom/docs/sign-in-diagnosis.md`: `uid`,
`openbao_error` (OpenBao's text, verbatim, with tokens, codes and emails
redacted) and `assurance` when known. Pass `--uid` and `--assurance` as
KeyCape's diagnosis page showed them for this request; otherwise `uid` comes
from the token display name on success, and `assurance=aal2` follows from the
role's aal2 bound claim on success. No token and no KV value is recorded.
```bash
export BAO_ADDR=http://127.0.0.1:18200
python3 scripts/verify-reuse-surface-hub-writer.py member --uid bernd.worsch-3
python3 scripts/verify-reuse-surface-hub-writer.py non-member --uid tegwick --assurance aal2
```
`member` passes when the token's policies are exactly
`workload-kv-read-reuse-surface-runtime`, the entity is not the admin entity,
the runtime-secrets data and metadata paths are `read`, the parent paths and
`platform/data/workloads/issue-core/issue-core/issue-core-runtime` are `deny`,
and revoke succeeded.
`non-member` passes when the role refuses the login and the refusal text is
recorded in `openbao_error`.
Do not run `bao kv get` on this path to prove the lane. Do not attach the
workload policy to the admin entity.
2026-10-15: CCR-2026-0045 was applied in a contained founder admin session.
Both proofs passed with the founder confirming each request's diagnosis;
negative fixture is the founder-selected existing `tegwick` account.
Receipts: `docs/evidence/2026-10-15-sign-in-diagnosis/`.