Configura la autenticación y el acceso mediante configuración
Configura el inicio de sesión, OAuth y el mapeo de roles en grafana.ini, y gestiona usuarios y equipos como código.
Quién puede iniciar sesión, y con qué rol, es parte de la plataforma y pertenece al control de versiones tanto como los dashboards. La mayor parte vive en grafana.ini. El resto, como usuarios, equipos y service accounts, no tiene formato de archivo de provisioning, así que esta guía también muestra cómo gestionarlos como código. Los nombres de las opciones de abajo coinciden con la referencia de configuración de Grafana, pero verifícalos en defaults.ini de tu versión antes de confiar en ellos.
Ajustes básicos
[users]
allow_sign_up = false # sin autorregistro
auto_assign_org = true
auto_assign_org_role = Viewer # rol predeterminado para usuarios nuevos
[auth]
disable_login_form = false # actívalo cuando SSO funcione y ya no necesites el formulario
[auth.anonymous]
enabled = false
Mantén allow_sign_up = false a menos que quieras deliberadamente una instancia abierta. Si habilitas el acceso anónimo, dale el rol mínimo posible:
[auth.anonymous]
enabled = true
org_role = Viewer
Inicio de sesión único con OAuth genérico
Cualquier proveedor OpenID Connect u OAuth 2 puede conectarse en el archivo. Los secretos vienen del entorno:
[server]
root_url = https://grafana.example.com/
[auth.generic_oauth]
enabled = true
name = Company SSO
allow_sign_up = true
client_id = grafana
client_secret = ${OAUTH_CLIENT_SECRET}
scopes = openid profile email groups
auth_url = https://sso.example.com/oauth2/authorize
token_url = https://sso.example.com/oauth2/token
api_url = https://sso.example.com/oauth2/userinfo
login_attribute_path = preferred_username
email_attribute_path = email
role_attribute_path = contains(groups[*], 'grafana-admins') && 'Admin' || contains(groups[*], 'grafana-editors') && 'Editor' || 'Viewer'
Qué conviene saber:
- La URI de redirección del proveedor es
<root_url>login/generic_oauth, así queroot_urldebe ser exacta. role_attribute_pathes una expresión JMESPath evaluada contra el token o el userinfo del usuario. Asigna los grupos del proveedor de identidad a roles de Grafana (Admin,Editor,Viewer), de modo que los cambios de rol ocurren en el proveedor de identidad, no en Grafana.allow_sign_upaquí significa “crear un usuario de Grafana en el primer inicio de sesión SSO”, que es lo que quieres incluso cuando[users] allow_sign_upes false.- Existen secciones dedicadas para los proveedores comunes (
[auth.github],[auth.google],[auth.azuread],[auth.gitlab]y otros), y SAML y LDAP están disponibles en Grafana Enterprise y Grafana Cloud. LDAP además lee un archivo aparteldap.toml.
Una vez que SSO funcione, define disable_login_form = true y conserva la cuenta de admin solo como opción de emergencia, o deja el formulario habilitado pero protégelo con reglas de red.
Roles y lo que los archivos no pueden definir
Grafana tiene roles de organización (Admin, Editor, Viewer), y RBAC añade roles de grano fino en Enterprise y Cloud. Estos recursos no tienen formato de archivo de provisioning en Grafana de código abierto:
| Recurso | Cómo gestionarlo como código |
|---|---|
| Usuarios | Crear mediante SSO, o la Admin API en un script de bootstrap |
| Equipos y pertenencia a equipos | Terraform (grafana_team), la API o la sincronización de equipos desde el proveedor de identidad |
| Organizaciones | Terraform (grafana_organization) o la API |
| Service accounts y tokens | Terraform (grafana_service_account, grafana_service_account_token) o la API |
| Permisos de carpetas y dashboards | Terraform (grafana_folder_permission, grafana_dashboard_permission), el Operator o la API |
La guía de Terraform muestra el patrón. Para una configuración pequeña, una alternativa razonable es un script puntual que llame a la API HTTP con una credencial de admin, guardado en el repositorio y ejecutado en CI.
Crea service accounts para la automatización
Herramientas como Terraform, el Operator y el CI necesitan una identidad no humana. Crea una service account una vez, con el rol más bajo que funcione, y guarda su token como secreto:
# crea la service account (Admin API, autenticación básica)
curl -s -X POST -u admin:$GRAFANA_ADMIN_PASSWORD \
-H 'Content-Type: application/json' \
-d '{"name":"terraform","role":"Admin"}' \
http://localhost:3000/api/serviceaccounts
# crea un token para ella, usando el id devuelto arriba
curl -s -X POST -u admin:$GRAFANA_ADMIN_PASSWORD \
-H 'Content-Type: application/json' \
-d '{"name":"terraform-token"}' \
http://localhost:3000/api/serviceaccounts/<id>/tokens
El token se muestra una sola vez. Colócalo directamente en tu almacén de secretos, y define una caducidad o rótalo según un calendario.
Ajustes de hardening que vale la pena versionar
[security]
cookie_secure = true
cookie_samesite = lax
disable_gravatar = true
allow_embedding = false
[auth]
login_maximum_lifetime_duration = 30d
login_maximum_inactive_lifetime_duration = 7d
Revísalos cuando actualices, y mantenlos idénticos entre entornos excepto donde un valor difiera genuinamente, como root_url.
Verifica sin la interfaz
curl -s -u admin:$GRAFANA_ADMIN_PASSWORD http://localhost:3000/api/admin/settings | jq '."auth.generic_oauth" | {enabled, name}'
curl -s -u admin:$GRAFANA_ADMIN_PASSWORD http://localhost:3000/api/users | jq '.[] | {login, isAdmin}'
curl -s -u admin:$GRAFANA_ADMIN_PASSWORD http://localhost:3000/api/teams/search | jq '.teams[].name'
Para la lista completa de opciones por proveedor, consulta la documentación de autenticación de Grafana.
Guías populares
-
Opera Grafana como código: la visión de conjunto Qué puede vivir en archivos, qué necesita una API y cómo encajan las piezas. -
Configura el servidor de Grafana con grafana.ini y variables de entorno Sabe dónde viven los archivos de configuración, cómo se ordenan las sobrescrituras y cómo mantener los ajustes en Git. -
Provisiona dashboards desde archivos JSON Carga dashboards desde disco, asigna carpetas a partir de directorios y crea dashboards sin perder cambios. -
Provisiona reglas de alertas, contact points y políticas de notificación Define todo el pipeline de alertas en YAML para que se revise y versione como código. -
Despliega Grafana en Kubernetes con Helm y valores de provisioning Ejecuta Grafana desde un chart de Helm donde los data sources, dashboards y ajustes provienen de archivos de valores. -
Recarga, verifica y soluciona problemas de provisioning desde la línea de comandos Averigua qué cargó Grafana, recarga sin reiniciar y arregla los errores de provisioning más habituales.