monitoring: recupera el SSO de Grafana con Authentik
Grafana llevaba ~15 días sin SSO: ignoraba la cabecera X-authentik-username, de modo que Authentik te dejaba pasar y Grafana te pedía credenciales igual. El último acceso de akadmin (el usuario que crea auto_sign_up) es de hace 15 días. El bloque [auth.proxy] estaba en el ConfigMap vivo en abril — así consta en el export de git de aquel momento — pero el chart NUNCA lo ha generado en ninguna de sus 7 revisiones, así que era un retoque a mano que se perdió por el camino. Ahora va declarado en values y sobrevive a una reconstrucción. Aparecida al arreglarlo, otra pieza del mismo tipo: la anotación router.middlewares que engancha el forward-auth de Authentik al Ingress. Vivía sólo por el three-way merge de Helm, igual que el montaje de alerting (0501aab) y el token de Telegram (28f1631). Reconstruir el release habría dejado Grafana en internet SIN autenticación de Authentik, con sólo su formulario delante. NO se restaura disable_login_form, que sí traía la config de abril: el formulario local se queda como puerta de emergencia, con la contraseña del secret grafana-admin. Que el SSO fallara en silencio es justo lo que pasó aquí. Verificado: con la cabecera, autentica como akadmin; sin ella sigue dando 401; una petición externa a grafana.chemavx.xyz redirige (302) al authorize de Authentik; el formulario local responde 200 y la contraseña de emergencia entra; 0 errores en el arranque. Exports regenerados: el auditor deja monitoring en 2 hallazgos, ambos conocidos (una anotación del controlador y el tag de uptime-kuma, pendiente de decidir con el resto de tags flotantes). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,44 +1,25 @@
|
||||
apiVersion: v1
|
||||
data:
|
||||
grafana.ini: '[analytics]
|
||||
|
||||
grafana.ini: |
|
||||
[analytics]
|
||||
check_for_updates = true
|
||||
|
||||
[log]
|
||||
|
||||
mode = console
|
||||
|
||||
[paths]
|
||||
|
||||
data = /var/lib/grafana/
|
||||
|
||||
logs = /var/log/grafana
|
||||
|
||||
plugins = /var/lib/grafana/plugins
|
||||
|
||||
provisioning = /etc/grafana/provisioning
|
||||
|
||||
[server]
|
||||
|
||||
domain = grafana.chemavx.xyz
|
||||
|
||||
root_url = https://grafana.chemavx.xyz
|
||||
|
||||
[unified_storage]
|
||||
|
||||
index_path = /var/lib/grafana-search/bleve
|
||||
|
||||
[auth]
|
||||
|
||||
disable_login_form = true
|
||||
|
||||
[auth.proxy]
|
||||
|
||||
auto_sign_up = true
|
||||
enabled = true
|
||||
|
||||
header_name = X-authentik-username
|
||||
|
||||
auto_sign_up = true'
|
||||
header_property = username
|
||||
[log]
|
||||
mode = console
|
||||
[paths]
|
||||
data = /var/lib/grafana/
|
||||
logs = /var/log/grafana
|
||||
plugins = /var/lib/grafana/plugins
|
||||
provisioning = /etc/grafana/provisioning
|
||||
[server]
|
||||
domain = grafana.chemavx.xyz
|
||||
root_url = https://grafana.chemavx.xyz
|
||||
[unified_storage]
|
||||
index_path = /var/lib/grafana-search/bleve
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
annotations:
|
||||
@@ -52,4 +33,3 @@ metadata:
|
||||
helm.sh/chart: grafana-11.5.0
|
||||
name: kube-prometheus-stack-grafana
|
||||
namespace: monitoring
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
annotations:
|
||||
deployment.kubernetes.io/revision: '16'
|
||||
deployment.kubernetes.io/revision: '17'
|
||||
meta.helm.sh/release-name: kube-prometheus-stack
|
||||
meta.helm.sh/release-namespace: monitoring
|
||||
labels:
|
||||
@@ -29,7 +29,7 @@ spec:
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
checksum/config: b835787868e1c1e3616db22add4a94b4f3a7b8ccedf24d3e48c323334a2b023c
|
||||
checksum/config: a6301dce6c406cc2f76aa94d5b1ea97e65ba7ab52b6cd5b7c57ee4787a91977a
|
||||
checksum/sc-dashboard-provider-config: e70bf6a851099d385178a76de9757bb0bef8299da6d8443602590e44f05fdf24
|
||||
kubectl.kubernetes.io/default-container: grafana
|
||||
kubectl.kubernetes.io/restartedAt: '2026-07-22T08:00:01Z'
|
||||
|
||||
@@ -32,4 +32,3 @@ spec:
|
||||
- hosts:
|
||||
- grafana.chemavx.xyz
|
||||
secretName: grafana-tls
|
||||
|
||||
|
||||
@@ -29,6 +29,14 @@
|
||||
# grafana.sidecar.datasources.alertmanager.enabled. Y quitarla del fichero de
|
||||
# provisioning NO la borra de grafana.db: hay que provisionar el borrado con
|
||||
# una directiva deleteDatasources de un solo uso (se hizo y se retiró).
|
||||
# rev 7 (2026-07-22): recuperado el SSO de Authentik, roto desde hace ~15 días
|
||||
# (último acceso de akadmin). Grafana ignoraba la cabecera X-authentik-username
|
||||
# -> Authentik te dejaba pasar y Grafana te pedía credenciales igual. El bloque
|
||||
# auth.proxy existía en el ConfigMap vivo en abril (está en el export de git),
|
||||
# pero el chart NUNCA lo ha generado en ninguna de sus 6 revisiones, así que
|
||||
# era otro retoque a mano que se perdió por el camino. Ahora va declarado.
|
||||
# Junto con él, la anotación del middleware de Traefik: tampoco la generaba el
|
||||
# chart, y sin ella Grafana queda expuesta sin Authentik delante.
|
||||
# rev 6 (2026-07-22): grafana.envValueFrom. Mismo caso que rev 3, encontrado al
|
||||
# auditar el Deployment contra el render: TELEGRAM_BOT_TOKEN y TELEGRAM_CHAT_ID
|
||||
# estaban puestas A MANO y el chart no las generaba. El contact point de
|
||||
@@ -61,11 +69,27 @@ grafana:
|
||||
mountPath: /etc/grafana/provisioning/alerting
|
||||
name: grafana-alerting
|
||||
grafana.ini:
|
||||
# SSO con Authentik. Traefik autentica en el borde con el middleware de
|
||||
# abajo y reenvía X-authentik-username; esto es lo que hace que Grafana se
|
||||
# fíe de esa cabecera y no vuelva a pedir credenciales. Sin este bloque el
|
||||
# SSO queda a medias: Authentik te deja pasar y Grafana te enseña SU
|
||||
# formulario. auto_sign_up crea el usuario (así nació akadmin).
|
||||
# El formulario local se deja habilitado a propósito, como puerta de
|
||||
# emergencia: la contraseña vive en el secret grafana-admin.
|
||||
auth.proxy:
|
||||
auto_sign_up: true
|
||||
enabled: true
|
||||
header_name: X-authentik-username
|
||||
header_property: username
|
||||
server:
|
||||
root_url: https://grafana.chemavx.xyz
|
||||
ingress:
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||
# Sin esta anotación Grafana queda expuesta sin Authentik delante. Estaba
|
||||
# puesta a mano en el Ingress vivo y el chart no la generaba: sobrevivía
|
||||
# sólo por el three-way merge, como el montaje de alerting (rev 3).
|
||||
traefik.ingress.kubernetes.io/router.middlewares: authentik-authentik-forward-auth@kubernetescrd
|
||||
traefik.ingress.kubernetes.io/router.entrypoints: websecure
|
||||
enabled: true
|
||||
hosts:
|
||||
|
||||
Reference in New Issue
Block a user