whitehat-security/plane/README.md

45 lines
2.1 KiB
Markdown
Raw Permalink Normal View History

# Governed test plane
This repository does not apply cluster objects, request credentials, or send
packets. `ops-mason` provisions the foundational plane from these files
**before** a fresh engagement is proposed. Cancelled or expired IDs
`WH-ENG-20260821-AUDIT-E2`, `WH-ENG-20260821-TENANT-E2`,
`WH-ENG-20260822-AUDIT-E2-01`, `WH-ENG-20260822-AUDIT-E2-02`, and
`WH-ENG-20260822-AUDIT-E2-03` are terminal.
## Ordering
1. Foundational plane: Namespace `whitehat`, default-deny NetworkPolicy,
audit-core egress NetworkPolicy, ServiceAccount `whitehat-runner` with
`automountServiceAccountToken: false`.
2. A **new** unretired engagement proposal (`status: proposed`).
3. Operator approval, then target-owner acknowledgement.
4. Custody projection of two short-lived identities into the runner mount.
5. `whitehat admit-plane`, then a runner pod. Not before.
ops-mason applied step 1 on 2026-08-22 (evidence `c26a6e5`, bundle digest
`9636f48f0b994118ff60a8c014e0099486945d66a2b3d3582dc57a09862b2035`). The
namespace had zero Pods and zero Secrets at apply. That apply authorizes no
runner, credential, engagement or traffic.
## Controls
1. Namespace `whitehat`, default-deny networking, explicit target egress.
2. Immutable runner identity with required engagement labels and no standing
service-account token.
3. Custody broker projects two short-lived tenant-scoped identities into the
runner mount and revokes them. Values never enter Git, chat, evidence or
State Hub.
4. Pinned runner image digest on the engagement.
5. Independently usable kill switch: create `plane/KILL` or set
`WHITEHAT_KILL_SWITCH=1`. Admission fails closed while it is engaged.
6. Rate watcher and automatic lease cleanup in `whitehat_security.plane`.
## Standing versus live
`fixture-e2`, `fixture-e3` and `fixture-capacity` are in-process classes
already permitted by the rules of engagement. `live-e2` still needs a dated
engagement, target-owner acknowledgement, the provisioned plane namespace, a
pinned digest and a connected custody broker. Live `e3` and `capacity` keep
separate approval classes and extra envelope fields.