Configurer l'authentification et les accès par la configuration
Configurez la connexion, OAuth et le mappage des rôles dans grafana.ini, et gérez utilisateurs et équipes comme du code.
Qui peut se connecter, et avec quel rôle, fait partie de la plateforme et mérite autant que les tableaux de bord d’être sous gestion de versions. L’essentiel se trouve dans grafana.ini. Le reste, comme les utilisateurs, les équipes et les comptes de service, n’a pas de format de fichier de provisionnement ; ce guide montre donc aussi comment les gérer comme du code. Les noms d’options ci-dessous correspondent à la référence de configuration de Grafana, mais vérifiez-les dans defaults.ini pour votre version avant de vous y fier.
Paramètres de base
[users]
allow_sign_up = false # pas d'auto-inscription
auto_assign_org = true
auto_assign_org_role = Viewer # rôle par défaut des nouveaux utilisateurs
[auth]
disable_login_form = false # passez à true une fois le SSO fonctionnel et le formulaire inutile
[auth.anonymous]
enabled = false
Gardez allow_sign_up = false sauf si vous voulez délibérément une instance ouverte. Si vous activez l’accès anonyme, donnez-lui le rôle le moins privilégié possible :
[auth.anonymous]
enabled = true
org_role = Viewer
Authentification unique avec generic OAuth
Tout fournisseur OpenID Connect ou OAuth 2 peut être branché dans le fichier. Les secrets viennent de l’environnement :
[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'
À savoir :
- L’URI de redirection du fournisseur est
<root_url>login/generic_oauth, doncroot_urldoit être exact. role_attribute_pathest une expression JMESPath évaluée sur le jeton ou le userinfo de l’utilisateur. Elle associe les groupes du fournisseur d’identité aux rôles Grafana (Admin,Editor,Viewer), de sorte que les changements de rôle se font dans le fournisseur d’identité, pas dans Grafana.allow_sign_upsignifie ici « créer un utilisateur Grafana à la première connexion SSO », ce que vous voulez même lorsque[users] allow_sign_upest à false.- Des sections dédiées existent pour les fournisseurs courants (
[auth.github],[auth.google],[auth.azuread],[auth.gitlab], et d’autres), et SAML et LDAP sont disponibles dans Grafana Enterprise et Grafana Cloud. LDAP lit aussi un fichierldap.tomldistinct.
Une fois le SSO opérationnel, définissez disable_login_form = true et gardez le compte admin uniquement comme accès de secours (break-glass), ou laissez le formulaire activé mais protégez-le par des règles réseau.
Rôles et ce que les fichiers ne peuvent pas définir
Grafana a des rôles d’organisation (Admin, Editor, Viewer), et le RBAC ajoute des rôles fins dans Enterprise et Cloud. Ces ressources n’ont aucun format de fichier de provisionnement dans Grafana open source :
| Ressource | Comment la gérer comme du code |
|---|---|
| Utilisateurs | Création via le SSO, ou l’API Admin dans un script d’amorçage |
| Équipes et appartenance aux équipes | Terraform (grafana_team), l’API, ou la synchronisation d’équipes depuis le fournisseur d’identité |
| Organisations | Terraform (grafana_organization) ou l’API |
| Comptes de service et jetons | Terraform (grafana_service_account, grafana_service_account_token) ou l’API |
| Permissions des dossiers et des tableaux de bord | Terraform (grafana_folder_permission, grafana_dashboard_permission), l’Operator ou l’API |
Le guide Terraform montre le modèle. Pour une petite installation, un script ponctuel qui appelle l’API HTTP avec un identifiant admin, conservé dans le dépôt et exécuté en CI, est une alternative raisonnable.
Amorcer des comptes de service pour l’automatisation
Des outils comme Terraform, l’Operator et la CI ont besoin d’une identité non humaine. Créez un compte de service une seule fois, avec le rôle le plus bas qui fonctionne, et stockez son jeton comme secret :
# créer le compte de service (API Admin, authentification basique)
curl -s -X POST -u admin:$GRAFANA_ADMIN_PASSWORD \
-H 'Content-Type: application/json' \
-d '{"name":"terraform","role":"Admin"}' \
http://localhost:3000/api/serviceaccounts
# créer un jeton pour ce compte, avec l'id renvoyé ci-dessus
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
Le jeton n’est affiché qu’une fois. Placez-le directement dans votre magasin de secrets, et définissez une expiration ou faites-le tourner selon un calendrier.
Paramètres de durcissement à commiter
[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
Relisez-les à chaque mise à niveau, et gardez-les identiques entre les environnements sauf lorsqu’une valeur diffère réellement, comme root_url.
Vérifier sans l’interface
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'
Pour la liste complète des options par fournisseur, consultez la documentation d’authentification de Grafana.
Guides populaires
-
Opérer Grafana comme du code : vue d'ensemble Ce qui peut vivre dans des fichiers, ce qui nécessite une API, et comment les pièces s'assemblent. -
Configurer le serveur Grafana avec grafana.ini et les variables d'environnement Sachez où se trouvent les fichiers de configuration, comment les surcharges sont ordonnées et comment garder les paramètres dans Git. -
Provisionner les tableaux de bord depuis des fichiers JSON Chargez les tableaux de bord depuis le disque, associez les dossiers aux répertoires et créez-les sans perdre vos modifications. -
Provisionner les règles d'alerte, les points de contact et les politiques de notification Définissez toute la chaîne d'alerting en YAML pour qu'elle soit relue et versionnée comme du code. -
Déployer Grafana sur Kubernetes avec Helm et des valeurs de provisionnement Exécutez Grafana depuis un chart Helm où sources de données, tableaux de bord et paramètres proviennent tous de fichiers de valeurs. -
Recharger, vérifier et dépanner le provisionnement en ligne de commande Découvrez ce que Grafana a chargé, rechargez sans redémarrer et corrigez les erreurs de provisionnement habituelles.