2026-10-31 14:19:34 +01:00
|
|
|
---
|
|
|
|
|
id: SECRETS-WP-0017
|
|
|
|
|
type: workplan
|
|
|
|
|
title: "Catalog and guard bounded-executor CAS rotation lanes (NK-WP-0056 pilot)"
|
|
|
|
|
domain: infotech
|
|
|
|
|
repo: secrets-engine
|
|
|
|
|
status: proposed
|
|
|
|
|
flavor: implementation
|
|
|
|
|
owner: secrets-engine
|
2026-10-31 14:36:17 +01:00
|
|
|
topic_slug: custodian
|
2026-10-31 14:19:34 +01:00
|
|
|
created: "2026-10-31"
|
|
|
|
|
updated: "2026-10-31"
|
|
|
|
|
depends_on: []
|
|
|
|
|
related: [SECRETS-WP-0013]
|
2026-10-31 14:42:52 +01:00
|
|
|
state_hub_workstream_id: "c0ca67a0-4404-5ceb-bdcd-7c9f33ece5eb"
|
2026-10-31 14:19:34 +01:00
|
|
|
---
|
|
|
|
|
|
|
|
|
|
Owner answer to NK-WP-0056-T02 (hub message 16adf344). Design and proposed lane
|
|
|
|
|
shapes: `docs/bounded-executor-credential-lanes.md`. The engine catalogs and
|
|
|
|
|
statically guards the executor lane. railiance-platform applies the Kubernetes
|
|
|
|
|
auth role and policy through its own CCR, and the executor holds only its own
|
|
|
|
|
15-minute token. Nothing here is a grant or a live change.
|
|
|
|
|
|
|
|
|
|
## Model an existing-auth CAS rotation lane in the catalog
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
id: SECRETS-WP-0017-T01
|
|
|
|
|
status: wait
|
|
|
|
|
needs_human: true
|
2026-10-31 14:49:13 +01:00
|
|
|
decision_id: c29c6eda-fa13-4d53-8293-17261eb437c1
|
2026-10-31 14:52:45 +01:00
|
|
|
blocked_on: human
|
|
|
|
|
blocking_reason: "founder approval of the Q1 lane shape (docs/bounded-executor-credential-lanes.md)"
|
2026-10-31 14:19:34 +01:00
|
|
|
priority: high
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Add an explicit lane access mode, for example `access: rotate-cas`, for `kv`
|
|
|
|
|
lanes with `delivery_auth.management: existing`. It renders `["read",
|
|
|
|
|
"update"]` on the exact data path and no `create`, metadata, delete, destroy or
|
|
|
|
|
undelete paths. It requires the `cas_required` declaration, a 15m maximum TTL,
|
|
|
|
|
risk `high`, and rotation and deactivation owners. Kubernetes auth is recorded
|
|
|
|
|
as existing-auth metadata only. Keep the default read-only `lane_policy_paths`
|
|
|
|
|
unchanged. Add tests for the rendered policy and for refusal of wildcard, extra
|
|
|
|
|
capability and metadata variants.
|
|
|
|
|
|
|
|
|
|
## Check a platform policy file against the catalog-rendered policy
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
id: SECRETS-WP-0017-T02
|
|
|
|
|
status: todo
|
|
|
|
|
priority: medium
|
2026-10-31 14:42:52 +01:00
|
|
|
state_hub_task_id: "2b1572b3-10d9-54ff-a1e2-047ae36826f8"
|
2026-10-31 14:19:34 +01:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Add a static, offline comparison of a railiance-platform policy HCL with the
|
|
|
|
|
engine-rendered policy for a lane, reported as non-secret pass/fail. Platform
|
|
|
|
|
can run it on the CCR policy file before an attended apply. No OpenBao call.
|
|
|
|
|
|
|
|
|
|
## Add catalog entries for the pilot executor
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
id: SECRETS-WP-0017-T03
|
|
|
|
|
status: wait
|
|
|
|
|
needs_human: true
|
2026-10-31 14:49:13 +01:00
|
|
|
decision_id: 3d0c8f86-7b9c-456b-8951-5ae889829118
|
2026-10-31 14:52:45 +01:00
|
|
|
blocked_on: human
|
|
|
|
|
blocking_reason: "platform CCR for the executor role/policy, and founder choice of LLDAP credential shape"
|
2026-10-31 14:19:34 +01:00
|
|
|
priority: medium
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Add `nk-bind-executor-svc-authelia` (rotate-cas) and the syn-journey check read
|
|
|
|
|
as non-secret entries that reference the platform CCR and NK-WP-0056. If the
|
|
|
|
|
founder chooses the fallback LLDAP account, also add
|
|
|
|
|
`nk-bind-executor-lldap-credential` (high risk). Use `route` for readiness
|
|
|
|
|
pointers only.
|