Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a13eab-1e6a-7b33-9c37-372e90ada3a2
133 lines
6.6 KiB
YAML
133 lines
6.6 KiB
YAML
id: CCR-2026-0047
|
|
kind: credential-change-request
|
|
schema_version: 1
|
|
request_type: workload-kv-read
|
|
title: rapp-qonto collector exact audit sender custody and delivery
|
|
status: applied
|
|
created: '2026-10-15'
|
|
updated: '2026-10-15'
|
|
requester:
|
|
agent: codex
|
|
reason: NK-WP-0035 operational receiver admission requires actual Qonto delivery. This proposed new
|
|
grant requires explicit owner approval of the concrete packet; prior timing rollout approval does
|
|
not approve it.
|
|
review:
|
|
required: true
|
|
required_approvers:
|
|
- platform-operator
|
|
- audit-core-owner
|
|
- rapp-qonto-owner
|
|
- qonto-assistant-owner
|
|
comments:
|
|
- at: '2026-10-15T19:27:15.042944+00:00'
|
|
reviewer: user explicit session approval (platform-operator, audit-core-owner, rapp-qonto-owner,
|
|
qonto-assistant-owner)
|
|
decision: approved
|
|
comment: User selected "Approve packet and proceed" for the complete exact packet including CCR-2026-0047
|
|
new bearer/ESO lane, compatible source/receiver upgrades and migrations, exact registry admission,
|
|
collector and one-hour observation. This approval applies to reviewed exact scopes; prerequisites,
|
|
attended custody and independent receipts remain required.
|
|
target:
|
|
domain: financials
|
|
tenant: friendly:binky
|
|
workload: rapp-qonto
|
|
environment: production
|
|
purpose: Sender rapp-qonto-collector, sole source qonto-assistant, sole tenant tenant:friendly:binky,
|
|
may_write=true, may_read=false, secret_policy=redact. Envelope admission load-bearing; preserve
|
|
the source declaration per-class distinction. One source heartbeat maps to audit-core.heartbeat
|
|
covering only audit.deny. Wait 2f=7200s, effective deadline3f=10800s. No bank calls or authority
|
|
changes.
|
|
openbao:
|
|
mount: platform
|
|
kv_path: platform/workloads/rapp-qonto/audit-sender
|
|
fields:
|
|
- AUDIT_TOKEN
|
|
- CUSTODY_REQUEST
|
|
policy_name: workload-kv-read-rapp-qonto-audit
|
|
policy_file: openbao/policies/workload-kv-read-rapp-qonto-audit.hcl
|
|
metadata_read: false
|
|
auth:
|
|
method: kubernetes
|
|
mount: kubernetes
|
|
role: external-secrets-rapp-qonto-audit
|
|
bound_claims:
|
|
service_account_names:
|
|
- external-secrets
|
|
service_account_namespaces:
|
|
- external-secrets
|
|
bound_claims_confirmed: true
|
|
policies:
|
|
- workload-kv-read-rapp-qonto-audit
|
|
ttl: 15m
|
|
access_frontdoor:
|
|
type: external-secrets
|
|
catalog_id: rapp-qonto-audit
|
|
readiness: pending-review
|
|
resolvable: false
|
|
delivery:
|
|
surface: external-secrets
|
|
target: ClusterSecretStore openbao-rapp-qonto-audit restricted to namespace rapp-qonto; ExternalSecret
|
|
and Secret rapp-qonto/rapp-qonto-audit-sender key bearer. Source manifests/rapp-qonto-audit-sender.yaml.
|
|
No namespace is created.
|
|
risk:
|
|
classification: high
|
|
notes:
|
|
- A bearer permits append only for exact collector sender/source/tenant. Own-source reconciliation
|
|
is available as receiver contract, cross-source and other read routes remain refused.
|
|
- The registry update reads existing sender credentials inside the attended platform process only.
|
|
No registry is delivered to a producer.
|
|
- OpenBao login TTL limits the ESO reader session, not the audit bearer. Revocation must remove the
|
|
sender token from the receiver registry and prove refusal.
|
|
- New paths extend the existing coding-agent deny boundary. No existing high-risk grant is widened.
|
|
verification:
|
|
positive:
|
|
- CAS=0 first provision; durable provenance-bound version1 resume without rotation; exact sender registry
|
|
CAS merge preserves all existing credentials/senders/other fields.
|
|
- ESO copies only AUDIT_TOKEN to the named bearer key, exact source/delivery readback, receiver registry
|
|
delivery and compatible reload.
|
|
- Actual capture, periodic real elapsed frame, per-instance reconciliation and independent observer
|
|
acceptance remain required after provisioning.
|
|
negative:
|
|
- Proposed or missing owner approval refuses before native calls; drifted custody, sender or source
|
|
hashes refuse.
|
|
- Reader cannot read registry, sibling custody, metadata or parent listing; wrong service account/namespace
|
|
refused; coding-agent boundary deny wins.
|
|
- Wrong sender source/tenant and non-own-source read routes refused. Audit bearer revocation is separate
|
|
from reader-session revoke.
|
|
activation_conditions:
|
|
- Explicit approval of this complete concrete packet from platform-operator, audit-core-owner, rapp-qonto-owner
|
|
and qonto-assistant-owner.
|
|
- Compatible immutable receiver release with cadence parser and per-instance reconciliation is deployed/ready
|
|
before credential reads.
|
|
- Use attended Warden platform-admin --exec envelope, no shell-exported credentials; keep nonsecret
|
|
independent receipt and self-revoke.
|
|
- Apply only reviewed exact policy/role/projection; retain custody on failure and resume explicitly;
|
|
no destructive rollback or blind rotation.
|
|
- No claim of operational completion until native positive/negative and independent observer receipts.
|
|
evidence:
|
|
- at: '2026-10-15T19:40:23.546597+00:00'
|
|
actor: codex via attended user platform-admin (root execution)
|
|
kind: cadence_receiver_custody_and_native_sender
|
|
result: passed
|
|
details:
|
|
- "Native custody receipt receiver-custody-live.json: protected registry CAS15\u219216, version1\
|
|
\ new sender custody, Approval credentials and all other senders preserved; exact readers/negative\
|
|
\ checks/revocation, ESO values and loaded receiver registry matched."
|
|
- Independent attended wrapper exit0/session self-revocation confirmed by root; initial rejected
|
|
OPENBAO_TOKEN-ambient attempt made no credential mutation and session self-revocation was confirmed.
|
|
Retry launch removed all three token aliases before OIDC.
|
|
- 'Native collector source/tenant admission: heartbeat1 and deny1 reconciled for one exact instance;
|
|
duplicate200, wrong-source400, wrong-tenant400, archive-read403, invalid-bearer401; pending0.
|
|
Original202 receipts persisted across actual collector pod restart.'
|
|
- Source receipts copied unchanged to docs/evidence/2026-10-15-cadence-receiver/. Status applied
|
|
only; elapsed-hour periodic observation, independent protected observer readback and complete
|
|
native matrix remain pending.
|
|
lifecycle:
|
|
deactivate: Stop only collector; remove only its bearer from receiver via CAS and prove refusal; detach
|
|
exact reader role and ESO projection; retain custody versions and evidence.
|
|
rotate: Separate reviewed overlap-first change; this helper only provisions version1 and resumes without
|
|
rotation.
|
|
compromised: Stop collector and revoke its exact receiver bearer first; preserve evidence and perform
|
|
separate reviewed rotation.
|
|
state_hub:
|
|
related_workplan: NK-WP-0035
|