Comment installer et sécuriser Grafana sur Ubuntu 16.04

introduction

Grafana est un outil open source de visualisation et de surveillance de données 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, puis vous modifierez les paramètres par défaut de Grafana pour qu’ils soient encore plus stricts. Sécurité.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

Étape 1 - Installation de Grafana

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]. Comme un référentiel APT facilite l’installation et la gestion des mises à jour de Grafana, nous allons utiliser cette méthode.

Bien que Grafana soit disponible dans the référentiel officiel des packages Ubuntu 16.04, il est possible que la version de Grafana ne soit pas la plus récente. Nous allons donc utiliser le référentiel officiel de Grafana à l’adresse https: // packagecloud.io/[packagecloud].

Téléchargez la clé packagecloud GPG avec + curl +, puis https: // www .digitalocean.com / community / tutorials / une-introduction-à-linux-io-redirection # conduit [dirige 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.

curl https://packagecloud.io/gpg.key | sudo apt-key add -

Ensuite, ajoutez le référentiel packagecloud à vos sources APT.

sudo add-apt-repository "deb https://packagecloud.io/grafana/stable/debian/ stretch main"

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

sudo apt-get update

Et assurez-vous que Grafana sera installé à partir du référentiel packagecloud.

apt-cache policy grafana

La sortie vous indique la version de Grafana qui sera installée et l’emplacement de récupération du paquet. Vérifiez que le candidat à l’installation proviendra du référentiel Grafana officiel à l’adresse + https: // packagecloud.io / grafana / stable / debian +.

Output of apt-cache policy grafanagrafana:
 Installed: (none)
 Candidate: 4.6.2
 Version table:
    4.6.2 500
       500  stretch/main amd64 Packages
...

Vous pouvez maintenant procéder à l’installation.

sudo apt-get install grafana

Une fois que Grafana est installé, vous êtes prêt à le démarrer.

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

La sortie contient des informations sur le processus de Grafana, y compris son statut, son identifiant de processus principal (PID), son utilisation de la mémoire, etc.

Si l’état du service n’est pas + actif (en cours d’exécution) +, passez en revue le résultat et relancez les étapes précédentes pour résoudre le problème.

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 Thu 2017-12-07 12:10:33 UTC; 19s ago
    Docs: http://docs.grafana.org
Main PID: 14796 (grafana-server)
   Tasks: 6
  Memory: 32.0M
     CPU: 472ms
  CGroup: /system.slice/grafana-server.service
          └─14796 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins
...

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

sudo systemctl enable grafana-server

La sortie confirme que + systemd + a créé les liens symboliques nécessaires au démarrage automatique de Grafana. Si vous recevez un message d’erreur, suivez les instructions du terminal pour résoudre le problème avant de continuer.

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

Grafana est maintenant installé et prêt à être utilisé. Ensuite, sécurisez 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. Mais pour utiliser cette connexion, vous devez d’abord reconfigurer Nginx.

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].

sudo nano /etc/nginx/sites-available/

Localisez le bloc suivant:

/etc/nginx/sites-available/example.com

...
   location / {
       # First attempt to serve request as file, then
       # as directory, then fall back to displaying a 404.
       try_files $uri $uri/ =404;
   }
...

Parce que vous avez déjà configuré Nginx pour communiquer via SSL et que tout le trafic Web + sur votre serveur passe déjà par Nginx, il vous suffit de demander à Nginx de transférer toutes les requêtes à Grafana, qui s’exécute par défaut sur le port + 3000 +.

Supprimez la ligne + try_files + existante dans ce bloc d’emplacement et remplacez-la par le contenu suivant, qui commence par «+ proxy_ +».

/etc/nginx/sites-available/example.com

...
   location / {
       proxy_pass http://localhost:3000;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection 'upgrade';
       proxy_set_header Host $host;
       proxy_cache_bypass $http_upgrade;
   }
...

Une fois que vous avez terminé, enregistrez le fichier et fermez votre éditeur de texte.

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

sudo nginx -t

Le résultat devrait vous dire que la syntaxe + est ok + et que le test + a réussi + `. Si vous recevez un message d’erreur, suivez les instructions à l’écran.

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 de connexion administrative par défaut, vous allez mettre à jour ces informations pour améliorer la sécurité.

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

image: http: //assets.digitalocean.com/articles/install-and-secure-grafana/default-login.png [Connexion Grafana]

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

Sur l’écran suivant, vous serez accueilli dans le * Tableau de bord principal *. Ici, vous pouvez ajouter des sources de données et créer, prévisualiser et modifier des tableaux de bord.

Cliquez sur le petit logo Grafana dans le coin supérieur gauche de l’écran pour afficher le menu principal de l’application. Ensuite, survolez le bouton * admin * avec votre souris pour ouvrir un ensemble secondaire d’options de menu. Enfin, cliquez sur le bouton * Profil *.

image: http: //assets.digitalocean.com/articles/install-and-secure-grafana/main-menu.png [menu Grafana]

Vous êtes maintenant sur la page * Profil utilisateur *, où vous pouvez modifier le * nom *, le * courrier électronique * et le * nom d’utilisateur * associés à votre compte. Vous pouvez également mettre à jour vos * Préférences * pour des paramètres tels que le * Thème de l’interface utilisateur *, et vous pouvez changer votre mot de passe.

image: http: //assets.digitalocean.com/articles/install-and-secure-grafana/user-profile.png [Préférences de profil Grafana]

Entrez votre nom, votre adresse électronique et le nom d’utilisateur que vous souhaitez utiliser dans les champs * Nom *, * Email * et * Nom d’utilisateur *, puis cliquez sur le bouton * Mettre à jour * de la section * Informations * pour enregistrer vos paramètres.

Si vous le souhaitez, vous pouvez également modifier le * Thème de l’interface utilisateur * et le * Fuseau horaire * pour répondre à vos besoins, puis appuyer sur le bouton * Mettre à jour * de la zone * Préférences * pour enregistrer vos modifications. Grafana propose des thèmes d’interface utilisateur * Dark * et * Light *, ainsi qu’un thème * Default *, qui est réglé sur * Dark * par défaut.

Enfin, changez le mot de passe associé à votre compte en cliquant sur le bouton * Changer le mot de passe * en bas de la page. Cela vous mènera à l’écran * Changer le mot de passe *.

Entrez votre mot de passe actuel, * admin *, dans le champ * Ancien mot de passe *, puis entrez le mot de passe que vous souhaitez commencer à utiliser dans les champs * Nouveau mot de passe * et * Confirmer le mot de passe *.

Cliquez sur * Modifier le mot de passe * pour enregistrer les nouvelles informations ou appuyez sur * Annuler * pour abandonner vos modifications.

À partir de là, vous serez renvoyé à la page * Profil d’utilisateur * où vous verrez une boîte verte dans le coin supérieur droit de l’écran vous indiquant que le * mot de passe de l’utilisateur * a changé *.

image: http: //assets.digitalocean.com/articles/install-and-secure-grafana/user-profile2.png [Changer le mot de passe Grafana avec succès]

Vous avez maintenant sécurisé votre compte en modifiant les informations d’identification par défaut. Veillez donc également à ce que personne ne puisse créer un nouveau compte Grafana sans votre autorisation.

É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 vous exposez Grafana sur Internet, cela pourrait poser un problème de sécurité. Toutefois, lorsque Grafana n’est pas accessible via Internet ou lorsque vous utilisez des données accessibles au public, telles que les statuts de service, vous pouvez autoriser ces fonctionnalités. Il est donc important que vous sachiez comment configurer Grafana pour répondre à vos besoins.

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.

Sauf si vous devez autoriser les visiteurs anonymes à s’enregistrer eux-mêmes, supprimez la mise en commentaire de cette directive en supprimant le signe +; + au début de la ligne, puis définissez l’option sur + false +.

/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.

Sauf si vous devez autoriser un accès anonyme à vos tableaux de bord, supprimez la mise en commentaire de cette directive en supprimant le signe "; +" au début de la ligne, puis définissez l'option sur " false +".

/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, le résultat devrait indiquer que Grafana est + actif (en cours d’exécution) +. Si ce n’est pas le cas, consultez les messages du terminal pour obtenir de l’aide supplémentaire.

Maintenant, pointez votre navigateur Web sur + https: // + pour vérifier qu’il n’ya pas de bouton * Inscription * et que vous ne pouvez pas vous connecter sans entrer vos identifiants de connexion.

Si vous voyez le bouton * S’inscrire * ou si vous pouvez vous connecter anonymement, réexaminez les étapes précédentes pour résoudre le problème avant de poursuivre le didacticiel.

Grafana est maintenant entièrement configuré et prêt à être utilisé. Facultativement, 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 +.

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

image: http: //assets.digitalocean.com/articles/install-and-secure-grafana/github-settings.png [page des paramètres 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 *.

Étant donné que Grafana utilise OAuth - un standard ouvert pour 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 la partie inférieure gauche de l’écran.

image: http: //assets.digitalocean.com/articles/install-and-secure-grafana/organization-profile.png [Paramètres d’organisation GitHub]

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, vous entrerez 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.

  • * 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 devrait ressembler à quelque chose comme:

image: http: //assets.digitalocean.com/articles/install-and-secure-grafana/new-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.

image: http: //assets.digitalocean.com/articles/install-and-secure-grafana/client-id.png [Détails de l’application GitHub]

Avec votre application GitHub OAuth créée, vous êtes maintenant prêt à reconfigurer Grafana.

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

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

sudo nano /etc/grafana/grafana.ini

Localisez le titre + [auth.github] +, et décommentez cette section en supprimant le +; + au début de chaque ligne, sauf +; team_ids = +, que nous n’utiliserons pas ici. 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 devrait ressembler à:

/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 avez maintenant dit à Grafana tout ce qu’il avait besoin de savoir sur GitHub, mais 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

Si le résultat n’indique pas que le service est + actif (en cours d’exécution +) +, consultez les messages à l’écran pour plus d’informations.

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

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

image: http: //assets.digitalocean.com/articles/install-and-secure-grafana/login-with-github.png [Page de connexion Grafana avec GitHub]

Cliquez sur le bouton * GitHub * pour être redirigé vers GitHub, où vous devrez confirmer votre intention de * Autoriser Grafana *.

Cliquez sur le bouton vert * Autoriser votre_github_organisation *. Dans cet exemple, le bouton lit, * Authorize SharkTheSammy *.

image: http: //assets.digitalocean.com/articles/install-and-secure-grafana/authorize-grafana.png [Autoriser avec GitHub]

Si vous essayez de vous authentifier avec un compte GitHub qui n’est pas membre de votre organisation approuvée, vous recevrez un message * Login Failed * vous indiquant que, * L’utilisateur n’est pas membre de l’une des organisations requises *.

Si le compte GitHub est membre de votre organisation approuvée et que votre adresse électronique Grafana correspond à votre adresse électronique GitHub, vous serez connecté à votre compte Grafana existant.

Toutefois, si un compte Grafana n’existe pas déjà pour l’utilisateur auquel vous vous êtes connecté, Grafana créera un nouveau compte avec les autorisations * Viewer *, garantissant que les nouveaux utilisateurs ne peuvent 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

/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érifiez l’état du service.

sudo systemctl status grafana-server

Comme auparavant, l’état doit indiquer + actif (en cours d’exécution) +. Si ce n’est pas le cas, examinez le résultat pour plus d’instructions.

À 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 utiliser Grafana dans le cadre d’une pile logicielle de surveillance du système, voir Comment installer Prometheus sur Ubuntu 16.04 et Comment ajouter un tableau de bord Prometheus à Grafana.

Pour étendre votre installation Grafana actuelle, voir la liste https://grafana.com/dashboards de tableaux de bord officiels et construits par la communauté].

Et, pour en savoir plus sur l’utilisation de Grafana en général, voir la /official Grafana documentation.

Related