Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a0291a-1e87-7151-9934-fcbfe3f65eb1
2.9 KiB
2.9 KiB
Tenant secret onboarding
Date: 2026-07-17
Workplan: WARDEN-WP-0028
How to add a client/tenant commercial secret to NetKingdom OpenBao so ops-warden can route it and consumers can use it without pasting values into Git, State Hub, or chat.
Path convention
mount: tenants # dedicated KV v2 mount (not platform/)
path: tenants/<tenant>/<workload>/<bundle>
| Segment | Meaning | Example |
|---|---|---|
tenant |
Stable client slug | binky |
workload |
Capability / system | company-email |
bundle |
One purpose / one CCR | imap |
Do not put new client secrets under platform/workloads/… (fleet/platform
services) or invent secret/prod/… as the production home.
First worked lane: tenants/binky/company-email/imap (CCR-2026-0007).
Ownership
| Step | Owner |
|---|---|
| Business need, non-secret host facts, consumer config | Tenant control repo (e.g. binky-control) |
| CCR, policy HCL, OIDC role, mount hygiene | railiance-platform |
| Catalog front door + playbook + rotation guide | ops-warden |
| Value provision (Red) | Human founder/operator |
| Optional exec wrapper | secrets-engine (same path only) |
Checklist
- Slug + fields — pick
tenant/workload/bundleand field names (no values). - CCR —
railiance-platform/credential-change-requests/CCR-YYYY-NNNN-….yamlopenbao.mount: tenantsopenbao.kv_path: tenants/<tenant>/<workload>/<bundle>policy_namestarts withworkload-kv-read-- OIDC role ends with
-workload-kv-read riskhigh for mailbox/admin/recovery-class secrets
- Policy file — exact
tenants/data/…+tenants/metadata/…read only. - Applier dry-run —
scripts/credential-change.py applier-dry-run <CCR> - Approve + apply metadata — policy + OIDC role; no secret write in apply.
- ops-warden catalog — draft entry with
risk: high, rotation block, concretefetch_commandfor primary field; playbook underwiki/playbooks/. - Founder provision —
bao kv put tenants/… FIELD=@file(mode 0600 file) or secrets-engine provision; never chat/Git. - Verify capabilities-safe —
bao token capabilitiesallow/deny; neverkv getfor deny tests (WP-0026). - Promote catalog
draft→activewhen resolvable; update CCR readiness. - Agent boundary — add exact data
deny+ metadatareadtoagent-high-risk-boundaryfor high-risk lanes.
Worker fetch (after active)
bao login -method=oidc -path=netkingdom role=<lane>-workload-kv-read
warden access <catalog-id> --out /tmp/secret.file # mode 0600
# agents: never raw --fetch stream; WARDEN_AGENT_ID + risk=high → exit 7
See also
wiki/playbooks/binky-company-email-imap.mdwiki/playbooks/catalog-lane-promotion.mdwiki/playbooks/agent-read-boundary.mdrailiance-platform/docs/credential-change-approval.md