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
..
hive-c0re
swarm-logs: authenticate as the agent with its own queue secret
2026-10-13 08:38:05 +02:00
hive-forge
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
hive-gateway
hive-matrix: run the homeserver in its own netns, behind a unix socket
2026-10-15 09:52:06 +02:00
lib
swarm-bao-agent-pki: decide openbao's restart on the shared locale-independent compare
2026-10-13 17:00:56 +02:00
swarm-grafana /dashboards
swarm-grafana: drop stale windows from the subscription usage line, match sibling panel interval
2026-10-07 23:54:53 +02:00
bao-bootstrap-policy.hcl
bao: disable the unused approle auth method, declaratively
2026-09-28 22:58:36 +02:00
default.nix
swarm metrics store: the read API needs Grafana's bearer or an operator session
2026-10-15 10:48:20 +02:00
deploy.nix
hive-matrix: run the homeserver in its own netns, behind a unix socket
2026-10-15 09:52:06 +02:00
glue-bao-readers-policy-order.nix
swarm metrics store: the read API needs Grafana's bearer or an operator session
2026-10-15 10:48:20 +02:00
glue-bao-readers-store-order.nix
swarm metrics store: the read API needs Grafana's bearer or an operator session
2026-10-15 10:48:20 +02:00
glue-bao-tls.nix
swarm metrics store: the read API needs Grafana's bearer or an operator session
2026-10-15 10:48:20 +02:00
glue-bao-ui-oidc-client.nix
bao: OIDC login to the browser UI via authelia, as a metadata-only viewer
2026-09-28 19:56:38 +02:00
glue-builder-oidc-client.nix
swarm-builder: build each agent config PR head and post a commit status
2026-10-14 03:30:46 +02:00
glue-controller-bao-identity.nix
nix: gate hive-c0re on deploy.hive-controller.enable, drop hyperhive.enable
2026-09-26 01:19:49 +02:00
glue-controller-env.nix
glue: the controller's authelia and otel environment moves out of the controller module
2026-10-14 10:15:29 +02:00
glue-controller-oidc-client.nix
glue: the controller's authelia and otel environment moves out of the controller module
2026-10-14 10:15:29 +02:00
glue-forge-controller.nix
glue: forge's controller-dependent settings move out of the forge module
2026-10-13 22:14:28 +02:00
glue-forge-oidc-client.nix
nix: gate hive-c0re on deploy.hive-controller.enable, drop hyperhive.enable
2026-09-26 01:19:49 +02:00
glue-grafana-oidc-client.nix
nix: gate hive-c0re on deploy.hive-controller.enable, drop hyperhive.enable
2026-09-26 01:19:49 +02:00
glue-hive-otel-authelia.nix
glue: hive-otel's ordering after authelia moves out of the otel module
2026-10-13 22:04:52 +02:00
glue-hive-tls-bao-identity.nix
hive-tls: the gateway leaf uses the services-issuer identity, not a hive's
2026-10-06 14:54:07 +02:00
glue-logs-auth-bao-identity.nix
swarm-logs-auth: check agent tokens on the log store's query route
2026-10-13 08:38:05 +02:00
glue-matrix-ctl-bao-identity.nix
swarm-nats, matrix: the queue's and matrix-ctl's store identity paths are their own, not the hive's
2026-10-06 12:04:48 +02:00
glue-matrix-oidc-client.nix
swarm: OIDC clients registered wherever authelia runs; nats + matrix secrets from bao
2026-10-05 09:58:02 +02:00
glue-metrics-auth-bao-identity.nix
swarm metrics store: the read API needs Grafana's bearer or an operator session
2026-10-15 10:48:20 +02:00
glue-nats-auth-bao-identity.nix
swarm-nats: the auth responder's store identity path is its own, not the hive's
2026-10-06 10:04:30 +02:00
glue-nats-bao-identity.nix
swarm-nats, matrix: the queue's and matrix-ctl's store identity paths are their own, not the hive's
2026-10-06 12:04:48 +02:00
glue-nats-oidc-client.nix
swarm: OIDC clients registered wherever authelia runs; nats + matrix secrets from bao
2026-10-05 09:58:02 +02:00
glue-nats-wireguard.nix
glue: nats firewall on the wireguard interface moves out of the nats module
2026-10-14 10:15:19 +02:00
glue-queue-agent-credential.nix
swarm-bao-pki: sign every other hive's three store leaves
2026-10-12 21:41:28 +02:00
glue-review-classifier-oidc-client.nix
nix: run the review classifier in a container of its own when a host enables it
2026-10-12 13:11:21 +02:00
glue-secret-publisher-authelia.nix
glue: the secret publisher's authelia-dependent settings move out of the publisher module
2026-10-14 01:52:53 +02:00
glue-secret-publisher-bao-identity.nix
nix: gate hive-c0re on deploy.hive-controller.enable, drop hyperhive.enable
2026-09-26 01:19:49 +02:00
glue-swarm-bao-otel-oidc-client.nix
ops: update option pointers after grafana/bao split
2026-10-01 09:53:04 +02:00
glue-swarm-otel-oidc-client.nix
ops: update option pointers after otel split
2026-10-01 13:00:40 +02:00
hive-matrix-service.nix
hive-matrix: run the homeserver in its own netns, behind a unix socket
2026-10-15 09:52:06 +02:00
hive-matrix.nix
hive-matrix: run the homeserver in its own netns, behind a unix socket
2026-10-15 09:52:06 +02:00
hive-network.nix
nix: run swarm-ui wherever swarm-controller runs
2026-10-13 20:05:19 +02:00
hive-priv.nix
swarm-ci-runner: run the forge CI runner as a swarm service
2026-10-05 13:55:37 +02:00
hive-tls.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
host-ca-removed.nix
hive CA: catch a deleted CA file however its path is spelled
2026-10-05 21:17:10 +02:00
hyperhive.nix
nix: finish the current-behaviour comment sweep in touched files
2026-10-05 09:58:57 +02:00
local-defaults.nix
swarm-nats: take the callout issuer and user keys from the store
2026-10-06 14:53:33 +02:00
nats-callout-removed.nix
nats-callout-removed: remove the container's OIDC secret copy here, ungated
2026-10-06 15:25:29 +02:00
otel.nix
hive otel: keep file_storage defined when the collector authenticates upstream
2026-10-14 10:13:58 +02:00
stylix-theme.nix
swarm-ui: apply the operator's stylix theme, same as the dashboard already does
2026-08-24 14:28:25 +02:00
swarm-authelia-service.nix
hive-matrix: run the homeserver in its own netns, behind a unix socket
2026-10-15 09:52:06 +02:00
swarm-authelia.nix
swarm metrics store: the read API needs Grafana's bearer or an operator session
2026-10-15 10:48:20 +02:00
swarm-bao-service.nix
nix: split swarm-bao into service and deploy-mode files
2026-10-01 09:37:36 +02:00
swarm-bao.nix
swarm metrics store: the read API needs Grafana's bearer or an operator session
2026-10-15 10:48:20 +02:00
swarm-builder.nix
swarm-bao-pki: enabling a service mints its client leaf on the same switch
2026-10-15 08:31:33 +02:00
swarm-ci-runner.nix
glue: consumers' start-after-bao ordering moves into one glue module
2026-10-13 22:05:16 +02:00
swarm-controller.nix
swarmctl: on a controller host, trust the swarm's root without SWARMCTL_CA_FILE
2026-10-14 12:49:16 +02:00
swarm-grafana-service.nix
swarm-otel: scrape grafana through its published name
2026-10-14 23:45:04 +02:00
swarm-grafana.nix
swarm metrics store: the read API needs Grafana's bearer or an operator session
2026-10-15 10:48:20 +02:00
swarm-nats-service.nix
hive-matrix: run the homeserver in its own netns, behind a unix socket
2026-10-15 09:52:06 +02:00
swarm-nats.nix
swarm-bao-pki: enabling a service mints its client leaf on the same switch
2026-10-15 08:31:33 +02:00
swarm-otel-service.nix
swarm-otel: scrape nats through its published name
2026-10-15 08:03:46 +02:00
swarm-otel.nix
swarm-victoriametrics: own network namespace, gateway over a unix socket
2026-10-14 18:15:20 +02:00
swarm-peers-removed.nix
swarm CA: retire the host-held root CA, the store holds the only anchor
2026-10-05 21:17:10 +02:00
swarm-required-services.nix
swarm builder: the all-swarm-services switch turns it on, like every other swarm service
2026-10-15 05:44:37 +02:00
swarm-review-classifier.nix
swarm-bao-pki: enabling a service mints its client leaf on the same switch
2026-10-15 08:31:33 +02:00
swarm-secret-publisher.nix
swarm-builder: build each agent config PR head and post a commit status
2026-10-14 03:30:46 +02:00
swarm-snapshot-store.nix
swarm snapshot store: the receiver socket binds the mesh address even when wg-hive comes up after sockets.target
2026-10-15 08:27:54 +02:00
swarm-ui.nix
swarm-ui: name the group the operator rule actually requires
2026-10-14 23:41:13 +02:00
swarm-victorialogs-service.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
swarm-victorialogs.nix
swarm-victoriametrics: own network namespace, gateway over a unix socket
2026-10-14 18:15:20 +02:00
swarm-victoriametrics-service.nix
swarm-victoriametrics: own network namespace, gateway over a unix socket
2026-10-14 18:15:20 +02:00
swarm-victoriametrics.nix
swarm metrics store: the read API needs Grafana's bearer or an operator session
2026-10-15 10:48:20 +02:00
swarm-wireguard.nix
swarm options: no swarm.* value depends on a deploy option or this host's hive
2026-10-04 18:13:47 +02:00
swarm.nix
swarm metrics store: the read API needs Grafana's bearer or an operator session
2026-10-15 10:48:20 +02:00