Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/nix
Repository files (latest commit first)
Filename Latest commit message Latest commit date
atlas 6aab2ebb65 swarm metrics store: the read API needs Grafana's bearer or an operator session
The metrics vhost forwarded the store's read API (query, series, labels,
export, vmui, ...) with no credential, so anything that could reach
metrics.<swarm> could read every hive's and agent's metrics. mara ruled on
checked by an auth_request responder, and operators use their authelia
session.

- swarm-metrics-auth (new crate): auth_request responder on the metrics
  store's host. Compares the presented bearer, in constant time, with the
  one stored at swarm/services/<grafana client id>/metrics/bearer, read
  under its own bao leaf and cached for 60s. Static user, the post-#5264
  swarm-logs-auth unit shape.
- swarm-bao-grafana-metrics-bearer: on Grafana's host, creates that bearer
  in bao if absent (create without update, Grafana's existing leaf) and
  writes "Bearer <value>" into the container; the datasource sends it as
  its Authorization header via $__file{}.
- The vhost: read locations take auth_request through a map (a bearer goes
  to swarm-metrics-auth, anything else to authelia, no login redirect);
  vmui takes an authelia session with the login redirect; forceSSL like
  the logs vhost. The authelia subrequest location is renamed from
  /__metrics_push_authz to /__metrics_authelia since it now serves reads.
- Authelia: the collector keeps every path; everyone else is refused the
  collector's push and /metrics paths; group admins is admitted to the
  rest; then deny.
- bao: a swarm-metrics-auth cert role and policy (read on the one leaf),
  its leaf minted by glue-bao-tls, the CN reserved as a hive name, and
  Grafana's grant gains create on the bearer leaf.

Fixes #3596
2026-10-15 10:48:20 +02:00
..
agent-modules hive-matrix-mcp: retry a secondary account that failed to come up 2026-10-14 16:20:04 +02:00
builder/check-flake swarm-builder: build each agent config PR head and post a commit status 2026-10-14 03:30:46 +02:00
container-modules nix: move the in-container modules to nix/container-modules/ 2026-09-29 19:51:46 +02:00
docs nix: finish the "moved to" comment sweep 2026-10-05 09:59:02 +02:00
host-modules swarm metrics store: the read API needs Grafana's bearer or an operator session 2026-10-15 10:48:20 +02:00
module-eval swarm metrics store: the read API needs Grafana's bearer or an operator session 2026-10-15 10:48:20 +02:00
packages swarm metrics store: the read API needs Grafana's bearer or an operator session 2026-10-15 10:48:20 +02:00
script-tests swarm-bao-agent-pki: decide openbao's restart on the shared locale-independent compare 2026-10-13 17:00:56 +02:00
templates nix: move the agent option namespace under services.hyperhive.agent 2026-09-17 20:19:30 +02:00
checks.nix module-eval: three duplicate nixosSystem fixtures come from shared.nix 2026-10-15 08:29:58 +02:00
devshell.nix CI and devshell comments say what the config does: jobTimeout bounds jobs, coverage runs nightly, dead timeout keys removed 2026-10-15 08:27:32 +02:00
journald-severity.nix otel: map journald PRIORITY onto a severity at every journald receiver 2026-09-20 14:23:56 +02:00
reserved-hive-fragments.nix swarm: extract the name guards, so the module just says what is forbidden 2026-08-31 18:50:15 +02:00
reserved-names.nix swarm-builder: scope the forge token to the forge, one build at a time, opt-in 2026-10-14 03:30:46 +02:00
rust.nix add review classifier rules for this repo 2026-10-12 21:05:38 +02:00
sources.nix refactor: slim flake.nix into nix/ entry files 2026-07-13 20:55:43 +02:00
treefmt.nix treefmt: format the web files with prettier 2026-09-02 15:25:07 +02:00