Files
ops-warden/wiki/CredentialRouting.md
tegwick 1865e0744e WARDEN-WP-0006: NetKingdom stewardship docs and alignment
Add credential routing, actor patterns, security map, OpenBao SSH
checklist, and policy-gated signing design. Update registry and SCOPE;
record INTENT↔SCOPE reassessment (C3 completeness).
2026-06-17 08:22:45 +02:00

5.2 KiB

Credential Routing — NetKingdom Access Desk

Date: 2026-06-17

Use this page when a development worker (human, kaizen agent, CI job, or custodian tool) needs access or credentials and is unsure which subsystem owns the request.

ops-warden maintains this routing guide. It issues SSH certificates only. For every other credential type, follow the routed path — do not paste secrets into Git, State Hub, agent chat, or workplans.


Quick decision tree

What do you need?
|
+-- Log in as a human / get OIDC claims / MFA
|       -> key-cape (lightweight) or Keycloak (expanded)
|          net-kingdom/docs/platform-identity-security-architecture.md
|
+-- Permission to perform an action on a resource
|       -> flex-auth (policy decision)
|          flex-auth/INTENT.md
|
+-- API key, DB password, provider token, K8s secret, dynamic lease
|       -> OpenBao (after flex-auth approval where policy requires it)
|          railiance-platform/docs/openbao.md
|          NEVER ops-warden
|
+-- S3 / object-storage temporary credentials
|       -> NK-WP-0007 vending path (flex-auth + OpenBao + storage STS)
|          net-kingdom/docs/object-storage-sts-credential-vending.md
|          NEVER ops-warden
|
+-- SSH certificate for host / ops reachability (adm/agt/atm)
|       -> ops-warden (warden sign / cert_command)
|          wiki/OpsWardenConfig.md
|
+-- SSH tunnel / port forward (already have or will get a cert)
|       -> ops-bridge
|          ops-bridge tunnels.yaml + cert_command from ops-warden
|
+-- Host accepts your SSH principal / force-command on server
|       -> railiance-infra Ansible
|          /etc/ssh/auth_principals/, sshd hardening

Under two minutes: match your need to a branch above, open the linked doc, stop if you landed on "NEVER ops-warden" for non-SSH secrets.


Routing table

I need… Subsystem ops-warden role
Interactive login, OIDC token, MFA key-cape / Keycloak Document only — use IAM Profile
"May I do X on resource Y?" flex-auth (+ Topaz PDP) Future pre-sign gate for SSH; document only today
OpenRouter / LLM provider API key OpenBao → K8s Secret Do not ask ops-warden
Inter-Hub operator / runtime API key OpenBao or 0600 temp file See wiki/InterHubBootstrapAccessLane.md
Database or service password OpenBao dynamic/KV Document only
Short-lived SSH cert for operator ops-warden (adm-*) Issue via warden sign
Short-lived SSH cert for agent ops-warden (agt-*) Issue via warden sign / wrapper
Short-lived SSH cert for CI/cron ops-warden (atm-*) Issue via warden sign / warden issue
Tunnel to remote service ops-bridge Consumer of cert_command
Principal file on host railiance-infra Document only

Examples — do NOT ask ops-warden

Request Correct path
"Populate OPENROUTER_API_KEY for llm-connect" Operator → OpenBao/K8s Secret in activity-core namespace
"Store Inter-Hub admin key for bootstrap" Operator → OpenBao or IHUB_OPERATOR_KEY_FILE (CUST-WP-0049)
"Give me Vault root token" Break-glass ceremony → railiance-platform/docs/openbao.md
"S3 credentials for artifact upload" NK-WP-0007 / artifact-store consumer path
"JWT for my app" key-cape / Keycloak IAM Profile

Examples — ops-warden IS correct

Request Command / pattern
ops-bridge tunnel needs a cert cert_command: warden sign <actor> --pubkey <path>
Agent reaching bootstrap host agt-codex-interhub-bootstrapwiki/InterHubBootstrapAccessLane.md
Check cert expiry before shift warden status <actor>
New tunnel actor warden inventory addwiki/ActorInventoryPatterns.md
Lab without OpenBao backend: localwiki/OpsWardenConfig.md

Typical flows

Human operator → remote host

  1. Identity: key-cape login if web/API access needed (optional for pure SSH).
  2. SSH cert: warden sign adm-<you> --pubkey ~/.ssh/id_ed25519.pub.
  3. Tunnel (if needed): ops-bridge with cert_command pointing at warden.
  4. Host: principal deployed by railiance-infra.

Kaizen / Codex agent → attended task

  1. Register actor: agt-codex-<task> per wiki/ActorInventoryPatterns.md.
  2. SSH cert: WARDEN_ACTOR=... ops-ssh-wrapper ssh ... or warden sign.
  3. Secrets for task (API keys): OpenBao path — not warden.
  4. Tunnel: ops-bridge if required.

CI automation → scheduled job

  1. Actor: atm-<job> with narrow principal and low TTL (≤ 8 h).
  2. warden issue atm-<job> or sign with pre-provisioned key.
  3. No long-lived keys in CI env vars.

When guidance drifts

NetKingdom security architecture is canonical in net-kingdom. When it changes (OpenBao, IAM Profile, new bootstrap lanes), ops-warden updates:

  • This file
  • wiki/NetKingdomSecurityMap.md
  • SCOPE.md / INTENT.md as needed

Report drift via custodian workplan or State Hub message to ops-warden.


See also

  • INTENT.md — steward mission
  • wiki/NetKingdomSecurityMap.md — component literacy
  • wiki/ActorInventoryPatterns.md — actor naming
  • wiki/OpenBaoSshEngineChecklist.md — production SSH signing verify
  • net-kingdom/docs/platform-identity-security-architecture.md — platform canon