Comment installer et sécuriser Grafana sur Ubuntu 18.04

L’auteur a sélectionné Dev Color pour recevoir un don dans le cadre du programme Write for DOnations .

introduction

Grafana est un outil de visualisation et de surveillance de données en source ouverte qui s’intègre à des données complexes provenant de sources telles que Prometheus, ​​https: //www.influxdata. com / [InfluxDB], Graphite et ElasticSearch. Grafana vous permet de créer des alertes, des notifications et des filtres ad-hoc pour vos données tout en facilitant la collaboration avec vos coéquipiers grâce à des fonctionnalités de partage intégrées.

Dans ce tutoriel, vous allez installer Grafana et le sécuriser avec un certificat SSL et un Nginx reverse proxy. Une fois que vous avez configuré Grafana, vous aurez la possibilité de configurer l’authentification des utilisateurs via GitHub, ce qui vous permettra de mieux organiser les autorisations de votre équipe.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

Étape 1 - Installation de Grafana

Dans cette première étape, vous allez installer Grafana sur votre serveur Ubuntu 18.04. Vous pouvez installer Grafana soit par downloading directement à partir de son site Web officiel ou en passant par https://www.digitalocean.com/community/tutorials/ubuntu-and-debian -package-management-essentials # debian-paquet-management-tools-overview [référentiel APT]. Dans la mesure où un référentiel APT facilite l’installation et la gestion des mises à jour de Grafana, vous utiliserez cette méthode dans ce tutoriel.

Bien que Grafana soit disponible à l’adresse the référentiel officiel des packages Ubuntu 18.04, la version de Grafana n’est peut-être pas la plus récente, utilisez donc le référentiel officiel de Grafana.

Téléchargez la clé Grafana GPG avec https://www.gnu.org/software. / wget / [+ wget +], puis pipe la sortie vers + apt-key + . Ceci ajoutera la clé à la liste des clés de confiance de votre installation APT, ce qui vous permettra de télécharger et de vérifier le paquet Grafana signé par GPG.

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

Dans cette commande, l’option + -q + désactive le message de mise à jour de statut pour + wget +, et + -O + affiche le fichier que vous avez téléchargé sur le terminal. Ces deux options garantissent que seul le contenu du fichier téléchargé est pipeline vers + apt-key +.

Ensuite, ajoutez le référentiel Grafana à vos sources APT:

sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

Actualisez votre cache APT pour mettre à jour vos listes de paquets:

sudo apt update

Ensuite, assurez-vous que Grafana sera installé à partir du référentiel Grafana:

apt-cache policy grafana

Le résultat de la commande précédente vous indique la version de Grafana que vous êtes sur le point d’installer et où vous allez récupérer le paquet. Vérifiez que le candidat à l’installation en haut de la liste proviendra du référentiel officiel Grafana à l’adresse + https: // packages.grafana.com / oss / deb +.

Output of apt-cache policy grafanagrafana:
 Installed: (none)
 Candidate: 6.3.3
 Version table:
    6.3.3 500
       500 https://packages.grafana.com/oss/deb stable/main amd64 Packages
...

Vous pouvez maintenant procéder à l’installation:

sudo apt install grafana

Une fois Grafana installé, utilisez + systemctl + pour démarrer le serveur Grafana:

sudo systemctl start grafana-server

Ensuite, vérifiez que Grafana est en cours d’exécution en vérifiant le statut du service:

sudo systemctl status grafana-server

Vous recevrez une sortie similaire à celle-ci:

Output of grafana-server status● grafana-server.service - Grafana instance
  Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
  Active:  since Tue 2019-08-13 08:22:30 UTC; 11s ago
    Docs: http://docs.grafana.org
Main PID: 13630 (grafana-server)
   Tasks: 7 (limit: 1152)
...

Cette sortie contient des informations sur le processus de Grafana, notamment son statut, son identifiant de processus principal (PID), etc. ++ indique que le processus s’exécute correctement.

Enfin, activez le service pour démarrer automatiquement Grafana au démarrage:

sudo systemctl enable grafana-server

Vous recevrez le résultat suivant:

Output of systemctl enable grafana-serverSynchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.

Cela confirme que + systemd + a créé les liens symboliques nécessaires au démarrage automatique de Grafana.

Grafana est maintenant installé et prêt à être utilisé. Ensuite, vous allez sécuriser votre connexion à Grafana avec un proxy inverse et un certificat SSL.

Étape 2 - Configuration du proxy inverse

L’utilisation d’un certificat SSL garantira la sécurité de vos données en cryptant la connexion vers et depuis Grafana. Toutefois, pour utiliser cette connexion, vous devez d’abord reconfigurer Nginx en tant que proxy inverse pour Grafana.

Ouvrez le fichier de configuration Nginx que vous avez créé lors de la configuration du bloc de serveur Nginx avec Let Encrypt dans le lien: #prerequisites [Prérequis]. Vous pouvez utiliser n’importe quel éditeur de texte, mais pour ce tutoriel, nous utiliserons + nano +:

sudo nano /etc/nginx/sites-available/

Localisez le bloc suivant:

/ etc / nginx / sites-available / votre_domaine

...
   location / {
       try_files $uri $uri/ =404;
   }
...

Comme vous avez déjà configuré Nginx pour la communication via SSL et que tout le trafic Web sur votre serveur transite déjà par Nginx, il vous suffit de demander à Nginx de transférer toutes les demandes à Grafana, qui s’exécute par défaut sur le port + 3000 +.

Supprimez la ligne + try_files + existante dans ce bloc + location + et remplacez-la par l’option + proxy_pass + suivante.

/ etc / nginx / sites-available / votre_domaine

...
   location / {
       proxy_pass http://localhost:3000;
   }
...

Cela mappera le proxy sur le port approprié. Une fois que vous avez terminé, sauvegardez et fermez le fichier en appuyant sur + CTRL + X +, suivi de + Y + et ensuite + ENTER + si vous utilisez + nano +.

Maintenant, testez les nouveaux paramètres pour vous assurer que tout est configuré correctement:

sudo nginx -t

Vous recevrez le résultat suivant:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Enfin, activez les modifications en rechargeant Nginx:

sudo systemctl reload nginx

Vous pouvez maintenant accéder à l’écran de connexion par défaut de Grafana en pointant votre navigateur Web sur + https: // +. Si vous ne parvenez pas à atteindre Grafana, vérifiez que votre pare-feu est configuré pour autoriser le trafic sur le port + 443 +, puis suivez à nouveau les instructions précédentes.

Avec la connexion chiffrée à Grafana, vous pouvez maintenant appliquer des mesures de sécurité supplémentaires, en commençant par modifier les informations d’identification administratives par défaut de Grafana.

Étape 3 - Mise à jour des informations d’identification

Étant donné que chaque installation Grafana utilise les mêmes informations d’identification administratives par défaut, il est recommandé de modifier vos informations de connexion dès que possible. Dans cette étape, vous allez mettre à jour les informations d’identification pour améliorer la sécurité.

Commencez par naviguer vers + https: // + à partir de votre navigateur Web. Ceci affichera l’écran de connexion par défaut où vous verrez le logo Grafana, un formulaire vous demandant de saisir un * email ou un nom d’utilisateur * et * un mot de passe *, un bouton * Connexion * et un lien * Mot de passe oublié? * .

image: https: //assets.digitalocean.com/articles/66778/Grafana_Login.png [Connexion Grafana]

Entrez + admin + dans les champs * Utilisateur * et * Mot de passe *, puis cliquez sur le bouton * Connexion *.

Sur l’écran suivant, il vous sera demandé de sécuriser votre compte en modifiant le mot de passe par défaut:

image: https: //assets.digitalocean.com/articles/66778/Change_Password.png [Changer de mot de passe]

Entrez le mot de passe que vous souhaitez commencer à utiliser dans les champs * Nouveau mot de passe * et * Confirmer le nouveau mot de passe *.

De là, vous pouvez cliquer sur * Enregistrer * pour enregistrer les nouvelles informations ou appuyer sur * Sauter * pour ignorer cette étape. Si vous ignorez, vous serez invité à changer le mot de passe lors de votre prochaine connexion.

Pour augmenter la sécurité de votre configuration Grafana, cliquez sur * Enregistrer *. Vous retournerez à la page * Home Dashboard *:

image: https: //assets.digitalocean.com/articles/66778/Home_Dashboard.png [Tableau de bord principal]

Vous avez maintenant sécurisé votre compte en modifiant les informations d’identification par défaut. Ensuite, vous apporterez des modifications à votre configuration Grafana afin que personne ne puisse créer un nouveau compte Grafana sans votre permission.

Étape 4 - Désactivation des enregistrements Grafana et de l’accès anonyme

Grafana propose des options permettant aux visiteurs de créer des comptes utilisateurs et de prévisualiser des tableaux de bord sans s’inscrire. Lorsque Grafana n’est pas accessible via Internet ou lorsqu’il utilise des données accessibles au public, telles que l’état des services, vous pouvez autoriser ces fonctionnalités. Cependant, lorsque vous utilisez Grafana Online pour traiter des données sensibles, l’accès anonyme peut être un problème de sécurité. Pour résoudre ce problème, apportez quelques modifications à votre configuration Grafana.

Commencez par ouvrir le fichier de configuration principal de Grafana pour le modifier:

sudo nano /etc/grafana/grafana.ini

Localisez la directive + allow_sign_up + suivante sous l’en-tête + [utilisateurs] +:

/etc/grafana/grafana.ini

...
[users]
# disable user signup / registration
;allow_sign_up = true
...

L’activation de cette directive avec + true + ajoute un bouton * Inscription * à l’écran de connexion, permettant aux utilisateurs de s’enregistrer et d’accéder à Grafana.

La désactivation de cette directive avec + false + supprime le bouton * Inscription * et renforce la sécurité et la confidentialité de Grafana.

Décommentez cette directive en supprimant le signe «; +» au début de la ligne, puis en définissant l'option sur « faux +»:

/etc/grafana/grafana.ini

...
[users]
# disable user signup / registration
allow_sign_up =
...

Ensuite, localisez la directive + enabled + suivante sous l’en-tête + [auth.anonymous] +:

/etc/grafana/grafana.ini

...
[auth.anonymous]
# enable anonymous access
;enabled = false
...

Définir + enabled + sur + true + permet aux utilisateurs non enregistrés d’accéder à vos tableaux de bord; définir cette option sur + false + limite l’accès au tableau de bord aux utilisateurs enregistrés uniquement.

Décommentez cette directive en supprimant le signe «; +» au début de la ligne, puis en définissant l'option sur « faux +».

/etc/grafana/grafana.ini

...
[auth.anonymous]
enabled =
...

Enregistrez le fichier et quittez votre éditeur de texte.

Pour activer les modifications, redémarrez Grafana:

sudo systemctl restart grafana-server

Vérifiez que tout fonctionne correctement en vérifiant le statut du service Grafana:

sudo systemctl status grafana-server

Comme auparavant, la sortie indiquera que Grafana est + actif (en cours d’exécution) +.

Maintenant, pointez votre navigateur Web sur + https: // +. Pour revenir à l’écran * Inscription *, amenez votre curseur sur votre avatar en bas à gauche de l’écran et cliquez sur l’option * Déconnexion * qui apparaît.

Une fois que vous vous êtes déconnecté, vérifiez qu’il n’ya pas de bouton * Inscription * et que vous ne pouvez pas vous connecter sans entrer vos identifiants de connexion.

Grafana est maintenant entièrement configuré et prêt à être utilisé. Ensuite, vous pouvez simplifier le processus de connexion de votre organisation en vous authentifiant via GitHub.

(Facultatif) Étape 5 - Configuration d’une application GitHub OAuth

Pour une autre approche de la connexion, vous pouvez configurer Grafana pour s’authentifier via GitHub, qui fournit un accès de connexion à tous les membres des organisations GitHub autorisées. Cela peut être particulièrement utile lorsque vous souhaitez autoriser plusieurs développeurs à collaborer et à accéder à des métriques sans avoir à créer des informations d’identification spécifiques à Grafana.

Commencez par vous connecter à un compte GitHub associé à votre organisation, puis accédez à votre page de profil GitHub à l’adresse https://github.com/settings/profile [+ https: // github.com / settings / profile +].

Cliquez sur le nom de votre organisation sous * Paramètres de l’organisation * dans le menu de navigation situé à gauche de l’écran.

image: https: //assets.digitalocean.com/articles/66778/GitHub_Organization_Settings.png [Paramètres d’organisation GitHub]

Sur l’écran suivant, vous verrez votre * profil d’organisation * où vous pourrez modifier des paramètres tels que votre * nom complet d’organisation *, organisation * Email * et organisation * URL *.

Etant donné que Grafana utilise OAuth - un standard ouvert permettant d’accorder l’accès de tiers distants aux ressources locales - pour authentifier les utilisateurs via GitHub, vous devez créer un nouveau https: //developer.github. com / apps / building-oauth-apps / créer-une-oauth-app / [application OAuth dans GitHub].

Cliquez sur le lien * Applications OAuth * sous * Paramètres du développeur * dans le coin inférieur gauche de l’écran.

Si aucune application OAuth n’est déjà associée à votre organisation sur GitHub, on vous dira qu’il n’y a * aucune application appartenant à une organisation *. Sinon, vous verrez une liste des applications OAuth déjà connectées à votre compte.

Cliquez sur le bouton * Enregistrer une application * pour continuer.

Sur l’écran suivant, renseignez les informations suivantes sur votre installation Grafana:

  • * Nom de l’application * - Ceci vous aide à distinguer vos différentes applications OAuth les unes des autres.

  • * URL de la page d’accueil * - Ceci indique à GitHub où trouver Grafana. Tapez + https: // + dans ce champ, en remplaçant ++ par votre domaine.

  • * Description de l’application * - Fournit une description du but de votre application OAuth.

  • * URL de rappel de l’application * - Il s’agit de l’adresse où les utilisateurs seront envoyés une fois authentifiés avec succès. Pour Grafana, ce champ doit être défini sur + https: /// login / github +.

N’oubliez pas que les utilisateurs de Grafana qui se connectent via GitHub verront les valeurs que vous avez entrées dans les trois premiers champs précédents. Veillez donc à saisir quelque chose de significatif et approprié.

Une fois rempli, le formulaire ressemblera à quelque chose comme:

image: https: //assets.digitalocean.com/articles/66778/GitHub_Register_OAuth_Application.png [Application OAuth de GitHub]

Cliquez sur le bouton vert * Enregistrer l’application *.

Vous allez maintenant être redirigé vers une page contenant les * ID client * et * Client Secret * associés à votre nouvelle application OAuth. Notez les deux valeurs, car vous devrez les ajouter au fichier de configuration principal de Grafana pour terminer la configuration.

Avec votre application GitHub OAuth créée, vous êtes maintenant prêt à reconfigurer Grafana pour utiliser GitHub pour l’authentification.

(Facultatif) Étape 6 - Configuration de Grafana en tant qu’application GitHub OAuth

Pour compléter l’authentification GitHub pour votre configuration Grafana, vous allez maintenant apporter quelques modifications à vos fichiers de configuration Grafana.

Pour commencer, ouvrez le fichier de configuration principal de Grafana.

sudo nano /etc/grafana/grafana.ini

Recherchez le titre + [auth.github] + et décommentez cette section en supprimant le signe '+; + au début de chaque ligne, à l’exception de +; team_ids = + `, qui ne sera pas modifié dans ce didacticiel.

Ensuite, configurez Grafana pour utiliser GitHub avec les valeurs + client_id + et + client_secret + de votre application OAuth.

  • Définissez + enabled et` + allow_sign_up + sur + true`. Cela permettra l’authentification GitHub et permettra aux membres de l’organisation autorisée de créer leurs comptes eux-mêmes. Notez que ce paramètre est différent de la propriété + allow_sign_up + sous + [utilisateurs] + que vous avez modifiée dans le lien: # step-4-% E2% 80% 94-désactivation-grafana-registrations-and-anonymous-access [Étape 4].

  • Définissez + client_id + et + client_secret + aux valeurs que vous avez obtenues lors de la création de votre application GitHub OAuth.

  • Définissez + allowed_organizations + sur le nom de votre organisation pour vous assurer que seuls les membres de votre organisation peuvent s’inscrire et se connecter à Grafana.

La configuration complète ressemblera à:

/etc/grafana/grafana.ini

...
[auth.github]
enabled =
allow_sign_up =
client_id =
client_secret =
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
;team_ids =
allowed_organizations =
...

Vous venez de dire à Grafana tout ce qu’il faut savoir sur GitHub. Pour terminer la configuration, vous devez activer les redirections derrière un proxy inverse. Ceci est fait en définissant une valeur + racine_url + sous la rubrique + [serveur] +.

/etc/grafana/grafana.ini

...
[server]
root_url = https://
...

Enregistrez votre configuration et fermez le fichier.

Ensuite, redémarrez Grafana pour activer les modifications:

sudo systemctl restart grafana-server

Enfin, vérifiez que le service est opérationnel.

sudo systemctl status grafana-server

La sortie indiquera que le service est + actif (en cours d’exécution) +.

Maintenant, testez votre nouveau système d’authentification en accédant à + ​​https: // +. Si vous êtes déjà connecté à Grafana, passez votre souris sur le journal de l’avatar dans le coin inférieur gauche de l’écran et cliquez sur * Déconnexion * dans le menu secondaire qui apparaît à côté de votre nom.

Sur la page de connexion, vous verrez une nouvelle section sous le bouton * Connexion * original qui comprend un bouton * Connexion avec GitHub * avec le logo GitHub.

image: https: //assets.digitalocean.com/articles/66778/Grafana_Login_Page_With_GitHub.png [Page de connexion Grafana avec GitHub]

Cliquez sur le bouton * Connexion avec GitHub * pour être redirigé vers GitHub, où vous vous connecterez à votre compte GitHub et confirmerez votre intention de * Autoriser Grafana *.

Cliquez sur le bouton vert * Autoriser *.

Vous allez maintenant être connecté avec votre compte Grafana existant. Si un compte Grafana n’existe pas déjà pour l’utilisateur que vous avez connecté en tant que tel, Grafana créera un nouveau compte utilisateur doté des autorisations * Viewer *, afin que les nouveaux utilisateurs ne puissent utiliser que les tableaux de bord existants.

Pour modifier les autorisations par défaut des nouveaux utilisateurs, ouvrez le fichier de configuration principal Grafana pour le modifier.

sudo nano /etc/grafana/grafana.ini

Localisez la directive + auto_assign_org_role + sous l’en-tête + [utilisateurs] + et décommentez le paramètre en supprimant le signe +; + au début de la ligne.

Définissez la directive sur l’une des valeurs suivantes:

  • + Viewer + - ne peut utiliser que les tableaux de bord existants

  • + Editor + - peut modifier l’utilisation, modifier et ajouter des tableaux de bord

  • + Admin + - a la permission de tout faire

Ce tutoriel définira l’attribution automatique sur + Viewer +:

/etc/grafana/grafana.ini

...
[users]
...
auto_assign_org_role =
...

Une fois vos modifications enregistrées, fermez le fichier et redémarrez Grafana:

sudo systemctl restart grafana-server

Vérifier l’état du service:

sudo systemctl status grafana-server

Comme auparavant, l’état indiquera + actif (en cours d’exécution) +.

À ce stade, vous avez entièrement configuré Grafana pour permettre aux membres de votre organisation GitHub de s’inscrire et d’utiliser votre installation Grafana.

Conclusion

Dans ce didacticiel, vous avez installé, configuré et sécurisé Grafana, et vous avez également appris à permettre aux membres de votre organisation de s’authentifier via GitHub.

Pour étendre votre installation Grafana actuelle, voir la liste https://grafana.com/dashboards de tableaux de bord officiels et construits par la communauté]. Pour en savoir plus sur l’utilisation de Grafana en général, consultez la official Grafana documentation ou consultez notre https://www.digitalocean.com/community/tags/monitoring?type=tutorials [autres tutoriels de surveillance].

Related