AUDIT-WP-0018-T02 done: nk-bounded-executor sender scope and sso ingress prepared
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s

- deploy/senders-scope.{json,yaml}: nk-bounded-executor (source
  net-kingdom.bounded-executor, tenants [platform], write-only,
  secret_policy reject, load-bearing); inert until a token is seeded
- senders.py: the scope overlay may tighten secret_policy redact->reject,
  never relax it
- networkpolicies.yaml: audit-core-nk-bounded-executor-ingress (sso AND
  app.kubernetes.io/name=bounded-executor, TCP 8080); not applied
- tests on the executor's envelope shape: 202, 200 duplicate, 409, wrong
  source/tenant, secret-shaped step check 400
- T03 unblocked (window bound = admission window.not_after)
- docs: emitter defect: executor AuditCore.emit rejects 202

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
This commit is contained in:
tegwick 2026-10-31 23:02:44 +01:00
parent 716900b8a7
commit 7728fde9b4
9 changed files with 452 additions and 11 deletions

View file

@ -63,6 +63,33 @@ spec:
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: audit-core-nk-bounded-executor-ingress
namespace: audit-core
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: audit-core
policyTypes: [Ingress]
ingress:
# AUDIT-WP-0018-T02. NetKingdom's bounded executor (Job pods run as
# ServiceAccount nk-bind-executor, package rapp-bounded-executor). Both
# selectors belong to one peer and are therefore ANDed. The whole sso
# namespace is NOT admitted: Authelia, LLDAP and KeyCape run there too.
# Prepared, not applied: the rollout is founder-run, together with the
# nk-bounded-executor registry seed.
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: sso
podSelector:
matchLabels:
app.kubernetes.io/name: bounded-executor
ports:
- {protocol: TCP, port: 8080}
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: audit-core-whitehat-ingress
namespace: audit-core

View file

@ -49,5 +49,18 @@
"heartbeat_classes": {
"informed-decision.memo.posed": 86400
}
},
{
"name": "nk-bounded-executor",
"sources": [
"net-kingdom.bounded-executor"
],
"tenants": [
"platform"
],
"may_write": true,
"may_read": false,
"secret_policy": "reject",
"evidence_kind": "load-bearing"
}
]

View file

@ -7,6 +7,10 @@
# entry here for a sender with no token yet is inert. That is what makes the
# approval-engine entry safe to land ahead of its credential.
#
# secret_policy may be tightened here (redact -> reject) but never relaxed
# (AUDIT-WP-0018-T02): nk-bounded-executor receipts are kept by hash, so a
# secret-shaped field must refuse the event rather than be silently masked.
#
# evidence_kind may be raised here (attributive -> load-bearing) but never
# lowered: a ConfigMap refresh must not be able to drop a source's §9.6
# atomicity and detection obligations without anyone deciding to.
@ -71,5 +75,18 @@ data:
"heartbeat_classes": {
"informed-decision.memo.posed": 86400
}
},
{
"name": "nk-bounded-executor",
"sources": [
"net-kingdom.bounded-executor"
],
"tenants": [
"platform"
],
"may_write": true,
"may_read": false,
"secret_policy": "reject",
"evidence_kind": "load-bearing"
}
]