Establish attended telemetry Grafana custody and record private activation
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a06ecb-456a-71c2-b41e-0755d336e883
This commit is contained in:
codex 2026-09-06 22:36:09 +02:00
parent 4c320cf053
commit 92a0f5ed59
7 changed files with 263 additions and 0 deletions

View file

@ -0,0 +1,44 @@
# Grafana administrator custody
This is the attended bootstrap lane for rapp-telemetry on railiance01, not a
coding-agent credential vending interface or an accepted operator OIDC design.
User authorized service activation on September 6, 2026.
- KV: platform/workloads/telemetry/grafana-admin; ADMIN_USERNAME and ADMIN_PASSWORD.
- ESO identity: telemetry/telemetry-grafana-eso, automount disabled.
- Kubernetes auth role: telemetry-grafana-eso; policy telemetry-grafana-admin-eso.
- Exact data-only read, self-lookup/revoke, audience openbao, 15-minute maximum;
no default policy, wildcard namespace, sibling grant or secret write.
- ClusterSecretStore openbao-telemetry-grafana restricts consumers to telemetry;
ExternalSecret telemetry-grafana-admin refreshes every 5 minutes and retains
the delivered Secret. Grafana references admin-user and admin-password.
- Coding-agent high-risk boundary denies both data and metadata, including when
combined with the ESO read policy. Cluster administration/ESO remain trusted.
Source manifests belong to ../rapp-telemetry/manifests/. The platform writer
scripts/telemetry_grafana_custody.py uses CAS zero, refuses existing role/policy
or credential shape drift, preserves existing boundary policy text, and checks
positive and negative login/access before verifying ESO delivery. Run only under
scripts/openbao-attended-exec.py after warden route show
openbao-platform-admin-login. A unique --receipt path is required; receipts contain
metadata only. The bootstrap does not rotate existing credentials.
scripts/telemetry_grafana_access.py checks anonymous and forged proxy-header
denials, positive native-admin API access, datasource and dashboards inside the
same attended envelope. It requires an operator-created localhost-only port
forward on 13001 to the known Grafana service. Do not substitute an untrusted
endpoint. It emits only a metadata receipt and never logs passwords or headers.
Rotation must update the existing Grafana database administrator credential as
well as OpenBao; changing ESO/environment alone does not reset an initialized
Grafana admin password. Coordinate and test old-login rejection/new-login success
before calling rotation complete. Disable the ESO role to revoke future delivery
but remember the existing Kubernetes Secret and application password persist;
revoke application access and remove the binding deliberately in a compromise.
Do not delete retained recovery material as an implicit rollback.
Accepted September 6 evidence: exact read and delivery match; wrong identity,
namespace and audience denied; sibling/write denied; coding-agent deny wins;
native login succeeds; anonymous/proxy-header requests denied. See
../rapp-telemetry/evidence/live/2026-09-06-railiance01.json. Independent backup and
isolated restore, operator OIDC and public production admission remain open.

View file

@ -0,0 +1,9 @@
{
"schema": "rapp-telemetry.access.v1",
"status": "verified",
"anonymous_denied": true,
"forged_proxy_denied": true,
"native_admin_authenticated": true,
"prometheus_datasource_present": true,
"dashboard_count": 20
}

View file

@ -0,0 +1,14 @@
{
"schema": "rapp-telemetry.custody.v1",
"status": "verified",
"coding_agent_deny_wins": true,
"exact_read": true,
"secret_write_and_sibling_denied": true,
"wrong_sa_denied": true,
"wrong_namespace_denied": true,
"wrong_audience_denied": true,
"bounded_ttl": true,
"kv_version": 1,
"custody": "platform/workloads/telemetry/grafana-admin",
"delivery_matches": true
}