Ship posture-aware access planning: organization_posture=build (axis C), catalog freshness warnings, warden plan verdicts, localhost founder desk, and playbook/agent guidance that retire /tmp file-drop patterns. Compose route catalog + handoff rather than a second routing layer.
93 lines
3.2 KiB
YAML
93 lines
3.2 KiB
YAML
# NetKingdom Workload Security Posture — machine-readable descriptors
|
||
# WARDEN-WP-0015 T2. Authoritative prose: wiki/WorkloadSecurityPosture.md (pending
|
||
# promotion to net-kingdom + info-tech-canon canon).
|
||
#
|
||
# Rules:
|
||
# - No secret material in this file, ever (it is git-tracked and agent-visible).
|
||
# - DataClassification names are REUSED from the info-tech-canon Data Model.
|
||
# - This is a descriptor/data layer; runtime enforcement is flex-auth's.
|
||
version: 1
|
||
|
||
# --- Axis A — environment posture (how the secret store is secured) ----------
|
||
env_postures:
|
||
- id: dev
|
||
rank: 0
|
||
backend: mock-or-contract-double
|
||
real_values: forbidden # synthetic only
|
||
unseal: n/a
|
||
real_user_data: never
|
||
audit: optional
|
||
- id: test
|
||
rank: 1
|
||
backend: openbao-dev-single-unseal
|
||
real_values: generated-reuse-allowed
|
||
unseal: single-key-or-auto
|
||
real_user_data: never
|
||
audit: "on"
|
||
- id: prod
|
||
rank: 2
|
||
backend: openbao-sealed-shamir
|
||
real_values: generated-fresh-no-reuse
|
||
unseal: shamir-3-of-5-break-glass
|
||
real_user_data: allowed
|
||
audit: full-tamper-evident
|
||
|
||
# --- Axis B — workload maturity (how trusted a workload is) -------------------
|
||
maturity_levels:
|
||
- id: M0
|
||
rank: 0
|
||
phase: experimental-poc
|
||
max_dataclass: synthetic
|
||
promotion_gate: []
|
||
- id: M1
|
||
rank: 1
|
||
phase: alpha-early-access
|
||
max_dataclass: internal
|
||
promotion_gate: [friendly-customer-scope, basic-slo, data-handling-note]
|
||
- id: M2
|
||
rank: 2
|
||
phase: beta-ga
|
||
max_dataclass: confidential
|
||
promotion_gate: [security-review, slo-history, on-call, incident-runbooks]
|
||
- id: M3
|
||
rank: 3
|
||
phase: critical-regulated
|
||
max_dataclass: restricted
|
||
promotion_gate: [pen-test, shamir-3-of-5-custody, human-in-loop-ops, compliance-audit]
|
||
|
||
# --- Data-class floor — minimum maturity to handle each DataClassification ----
|
||
# required_maturity(dataclass). DataClassification names reused from info-tech-canon.
|
||
dataclass_floor:
|
||
synthetic: M0
|
||
internal: M1
|
||
confidential: M2
|
||
restricted: M3
|
||
|
||
# --- Secret-flow lattice (informational; enforced by T3 checker + flex-auth) --
|
||
# deliver(secret -> workload) permitted iff:
|
||
# workload.env_posture == prod
|
||
# and rank(workload.maturity) >= rank(secret.required_maturity)
|
||
# and rank(workload.maturity) >= rank(dataclass_floor[dataclass(secret)])
|
||
lattice:
|
||
requires_env_posture: prod
|
||
rule: no-write-down
|
||
|
||
# --- Axis C — organization lifecycle posture (WARDEN-WP-0029 T02) --------------
|
||
# Third axis: fleet lifecycle, distinct from env (dev/test/prod) and maturity
|
||
# (M0–M3). Answers how aggressive policy relaxations may be for founder-scale
|
||
# operation. Graduate when any trigger fires; do not overload env/maturity.
|
||
organization_posture:
|
||
id: build
|
||
summary: >
|
||
One founder-operator, pre-revenue, velocity prioritized. Pragmatic
|
||
provisioning is acceptable where audit and custody invariants hold
|
||
(values only in OpenBao/process env; metadata-only trails).
|
||
relaxations:
|
||
- workstation_oidc_acceptable
|
||
- per_repo_deploy_keys
|
||
- flex_auth_advisory_default
|
||
- localhost_founder_desk_os_session_trust
|
||
graduation_triggers:
|
||
- first_customer_data
|
||
- first_non_founder_operator
|
||
- production_tier
|