net-kingdom/sso-mfa/k8s
tegwick 634b3a41df
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
NK-WP-0056-T10: attended OpenBao setup and proof for the executor lanes
tools/service-binds/executor-lanes.py (bind-lane.py shape): under both
sha256-bound, approved, binding-confirmed CCRs (0058 write, 0059 journey) and
an attended platform-admin, apply both policies, set cas_required on the
svc-authelia key, create the standing journey-read role, refuse if the
window-scoped write role exists, prove the agent fence; verify proves the
journey token reads only its path (<=15m) and denies wrong SA, wrong audience
and write-role login. Value-free receipts. 12 tests on a fake OpenBao (real
helpers), in make bounded-executor-test. Founder runbook:
sso-mfa/k8s/bounded-executor/T10-LANES-RUNBOOK.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 5502@bnt-lap001
Assistant-Session: 68b3b02f-5d0f-4e71-8421-796f62e50196
2026-10-31 19:15:46 +01:00
..
authelia NK-WP-0056-T04: svc-authelia bind lane (source only, CCR-2026-0053) 2026-10-31 09:20:53 +01:00
backup Harden remaining bootstrap custody callers and prepare isolated recovery 2026-10-15 22:57:14 +02:00
bounded-executor NK-WP-0056-T10: attended OpenBao setup and proof for the executor lanes 2026-10-31 19:15:46 +01:00
cert-manager custodian integration and some cleanuo 2026-03-04 23:31:28 +01:00
identity-provisioner NK-WP-0056-T04: bind ESO sets explicit target metadata so the last-applied annotation is not copied 2026-10-30 23:16:21 +01:00
keycape NK-WP-0056-T04: svc-keycape bind lane (source only, CCR-2026-0054) 2026-10-31 10:31:30 +01:00
lldap Prepare guarded reset-role transition and native recovery proof 2026-10-31 14:26:17 +01:00
namespaces feat(sso-mfa): T02 K8s foundations manifests (NK-WP-0001-T02) 2026-03-02 09:49:39 +01:00
network-policies NK-WP-0056: sso ingress for the bounded executor; README and handoff follow-up 2026-10-31 18:27:30 +01:00
postgresql NK-WP-0052-T01: prepare wave-2 requests for sso, mfa and net-kingdom-pg 2026-10-22 00:08:06 +02:00
privacyidea NK-WP-0056-T04 done: svc-privacyidea written through from OpenBao; all four binds in platform custody 2026-10-31 11:19:21 +01:00
storage feat(sso-mfa): T02 K8s foundations manifests (NK-WP-0001-T02) 2026-03-02 09:49:39 +01:00
synthetic-journey NK-WP-0056-T09: enroll with a privacyIDEA-generated key, write KV last 2026-10-31 13:23:47 +01:00
tenant-engine Follow the access-engine CLI rename: ./cmd/flex-auth -> ./cmd/access-engine 2026-10-10 15:28:05 +02:00
user-engine Harden remaining bootstrap custody callers and prepare isolated recovery 2026-10-15 22:57:14 +02:00
FOUNDATIONS-HISTORICAL.md Refresh operating guidance and standardize new workplan naming 2026-09-28 12:40:10 +02:00
README.md fix(identity): retain group provenance and prepare sealed recovery custody 2026-10-17 00:28:17 +02:00
verify-identity-cutover-dependencies.sh Harden remaining bootstrap custody callers and prepare isolated recovery 2026-10-15 22:57:14 +02:00
verify-t02.sh Allow user-engine OIDC exchange with KeyCape 2026-07-29 21:40:52 +02:00
verify-t03.sh feat(sso-mfa): T02/T03 live apply — age-encrypted secrets, CNPG cluster (NK-WP-0001-T02/T03) 2026-03-20 02:57:41 +00:00
verify-t04.sh security: preserve privacyIDEA key custody and restore the actual PVC 2026-10-13 21:46:41 +02:00
verify-t05.sh feat(sso-mfa): T05 SSO stack pivot — Keycloak → Authelia + LLDAP + KeyCape (NK-WP-0001-T05) 2026-03-19 08:31:51 +00:00
verify-t06.sh Validate cadence contract and require functional MFA verification 2026-09-05 01:28:05 +02:00
verify-t07.sh security: repair LDAP group callers and fail incomplete T07 acceptance 2026-10-14 01:17:35 +02:00
verify-t08.sh feat(t09): backup, break-glass, DR drill — NK-WP-0003-T09 done 2026-03-25 23:56:40 +00:00

NetKingdom Kubernetes integration guidance

This directory holds bootstrap tooling, integration references and migration history. Current managed deployment belongs to the service/package owners under ADR-0015. The original foundation procedure is retained as historical material, including its old prerequisites and apply commands.

Operating baseline

The September 28 review observed one Ready Railiance01 node at 92.205.62.239, healthy lightweight identity components and single-instance CNPG databases. This is a dated inventory, not an HA, recovery or user-login acceptance claim.

Surface Current role and owner
KeyCape / Authelia / LLDAP (sso) and privacyIDEA (mfa) Lightweight identity composition; issuer implementation in key-cape, integration contracts here
User Engine rapp-user-engine owns managed manifests, rollout and rollback
Tenant Engine rapp-tenant-engine owns managed runtime and database-consumption configuration
flex-auth consumer services Owner values and chart pointers; caller authentication is enforced by the owner declarations
OpenBao and database custody railiance-platform, with managed packages and consumer declarations in their owning repositories
Kubernetes and host substrate railiance-cluster operator runbook and railiance-infra

OpenBao's public browser endpoint bao.coulomb.social is retired. Operators use the named openbao-ui-railiance01 tunnel at http://127.0.0.1:18200; workloads use the internal Service. Follow the platform's operator-only cutover record and credential routing in AGENTS.md. Route access before requesting credentials; never copy tokens or Secret values into evidence.

Read-only orientation

Check the context before interpreting these results. All commands below read resource metadata and readiness; none applies manifests or initiates login.

kubectl config current-context
kubectl get nodes -o wide
kubectl -n sso get deployments
kubectl -n mfa get deployments
kubectl -n user-engine get deployments
kubectl -n tenant-engine get deployments
kubectl -n flex-auth get deployments
kubectl -n openbao get statefulsets,deployments,services,ingresses
kubectl get clusters.postgresql.cnpg.io -A

Ready replicas do not prove negative authorization, actual-user MFA, successful backup restoration or independent failure domains. Use the relevant owner's verification and recovery procedure for those claims.

Deployment and recovery

Start with the owning package's current declaration, immutable image and reviewed rollout/rollback procedure. Do not recursively apply this tree. tenant-engine/runtime.yaml is retired (NK-WP-0039-T04) and holds owner pointers only, no objects; the Tenant Engine and flex-auth declarations live with their owners.

The scripts and manifests elsewhere in this directory have individual scopes; their presence here does not make them current production repair commands. The attended procedure inventory records their exercise limits. Use the custody model and current owner runbooks to prepare recovery. A database-only drill does not prove restoration of LLDAP, Authelia, privacyIDEA and its matching encryption material, or all identity database state.

CoulombCore identity cutover and retained cluster deletion completed on 2026-10-15 under the recorded approval and passing restart gate in NK-WP-0022. Railiance01 is authoritative. Recover through current owner runbooks and protected independent backups; the old cluster and its local PVCs are gone.

Identity-provisioner service group provenance

The owner storage and request migration contract describes the durable journal required by governed service-group ensure/revoke. The existing reference identity-provisioner Deployment has a read-only root filesystem, UID10001 and no provenance volume. The implemented SQLite backend is local/disposable only. Accepted ADR-0015 rejects SQLite-on-a-PVC for production; native journal storage requires the CNPG/rapp-postgres consumer contract or an explicit governed exception, plus owner-admitted image/storage/caller and writer isolation. Keep production group operations disabled pending that admission. This guidance does not apply or authorize a native volume change.