Comment installer et sécuriser Grafana sur Ubuntu 16.04

De Get Docs
Aller à :navigation, rechercher

Introduction

Grafana est un outil open source de visualisation et de surveillance des données qui s'intègre à des données complexes provenant de sources telles que Prometheus, 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 didacticiel, vous allez installer Grafana et le sécuriser avec un certificat SSL et un proxy inverse Nginx, puis vous modifierez les paramètres par défaut de Grafana pour une sécurité encore plus stricte.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de :

Étape 1 - Installation de Grafana

Vous pouvez installer Grafana soit en le téléchargeant directement depuis son site officiel ou en passant par un dépôt APT. Parce qu'un référentiel APT facilite l'installation et la gestion des mises à jour de Grafana, nous utiliserons cette méthode.

Bien que Grafana soit disponible dans le référentiel officiel de packages Ubuntu 16.04, la version de Grafana n'est peut-être pas la plus récente, nous utiliserons donc le référentiel officiel de Grafana sur packagecloud.

Téléchargez le packagecloud GPG key avec curl, puis dirigez la sortie vers apt-key. Cela 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 package Grafana signé 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"

Remarque : Bien que ce didacticiel soit écrit pour Ubuntu 16.04, packagecloud ne fournit que les packages Debian, Python, RPM et RubyGem. Vous pouvez cependant utiliser le référentiel basé sur Debian dans la commande précédente, car le package Grafana qu'il contient est le même que celui d'Ubuntu. Assurez-vous simplement d'utiliser le référentiel stretch pour obtenir la dernière version de Grafana.


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 d'où le package sera récupéré. Vérifiez que le candidat à l'installation proviendra du référentiel officiel Grafana sur 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 https://packagecloud.io/grafana/stable/debian stretch/main amd64 Packages
...

Vous pouvez maintenant procéder à l'installation.

sudo apt-get install grafana

Une fois Grafana 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 l'état du service.

sudo systemctl status grafana-server

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

Si l'état du service n'est pas active (running), examinez la sortie et suivez à nouveau 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: active (running) 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 pour démarrer automatiquement 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 devrez d'abord reconfigurer Nginx.

Ouvrez le fichier de configuration Nginx que vous avez créé lors de la configuration du bloc serveur Nginx avec Let's Encrypt dans les Prérequis.

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

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;
    }
...

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

Supprimez la ligne try_files existante dans ce bloc d'emplacement et remplacez-la par le contenu suivant, qui commence tous 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 correctement configuré.

sudo nginx -t

La sortie devrait vous dire que le syntax is ok et que le test is successful. 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 Grafana par défaut en pointant votre navigateur Web sur https://example.com. Si vous ne parvenez pas à atteindre Grafana, vérifiez que votre pare-feu est configuré pour autoriser le trafic sur le port 443, puis reprenez les instructions précédentes.

Avec la connexion à Grafana cryptée, vous pouvez désormais mettre en œuvre 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 de Grafana utilise les mêmes identifiants de connexion administratifs par défaut, dans cette étape, vous mettrez à jour les identifiants pour améliorer la sécurité.

Commencez par naviguer vers https://example.com à partir de votre navigateur Web. Cela fera apparaître l'écran de connexion par défaut où vous verrez le logo Grafana, un formulaire vous demandant d'entrer un Utilisateur et Mot de passe, un bouton Connexion , et un lien Mot de passe oublié ?.

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

Sur l'écran suivant, vous serez accueilli dans le Home Dashboard. 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 faire apparaître 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.

Vous êtes maintenant sur la page Profil utilisateur, où vous pouvez modifier le Nom, E-mail et 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 modifier votre mot de passe.

Saisissez votre nom, votre adresse e-mail et le nom d'utilisateur que vous souhaitez utiliser dans les champs Nom, E-mail et Nom d'utilisateur, puis cliquez sur Mettre à jour[ X161X] dans la section Information pour enregistrer vos paramètres.

Si vous le souhaitez, vous pouvez également modifier le UI Theme et le Timezone en fonction de vos besoins, puis appuyer sur le bouton Update dans les Preferences. zone pour enregistrer vos modifications. Grafana propose les thèmes d'interface utilisateur Dark et Light, ainsi qu'un thème Default, qui est défini sur Dark par défaut.

Enfin, changez le mot de passe associé à votre compte en cliquant sur le bouton Modifier le mot de passe en bas de la page. Cela vous amènera à l'écran Modifier le mot de passe.

Saisissez votre mot de passe actuel, admin, dans le champ Ancien mot de passe, puis saisissez le mot de passe que vous souhaitez commencer à utiliser dans Nouveau mot de passe et . Confirmez les champs 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 utilisateur où vous verrez une boîte verte dans le coin supérieur droit de l'écran vous indiquant que le Mot de passe utilisateur a changé[X186X ].

Vous avez maintenant sécurisé votre compte en modifiant les informations d'identification par défaut, alors assurons-nous également que personne ne peut créer un nouveau compte Grafana sans votre permission.

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

Grafana fournit des options qui permettent aux visiteurs de créer des comptes d'utilisateurs pour eux-mêmes et de prévisualiser les tableaux de bord sans s'inscrire. Comme vous exposez Grafana sur Internet, cela pourrait être un problème de sécurité. Toutefois, lorsque Grafana n'est pas accessible via Internet ou lorsque vous travaillez avec 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

Recherchez la directive allow_sign_up sous l'en-tête [users] :

/etc/grafana/grafana.ini

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

L'activation de cette directive avec true ajoute un bouton S'inscrire à 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 S'inscrire et renforce la sécurité et la confidentialité de Grafana.

À moins que vous n'ayez besoin d'autoriser les visiteurs anonymes à s'enregistrer eux-mêmes, décommentez cette directive en supprimant ; 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 = false
...

Ensuite, localisez la directive enabled sous l'en-tête [auth.anonymous].

/etc/grafana/grafana.ini

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

Le réglage de 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.

À moins que vous n'ayez besoin d'autoriser l'accès anonyme à vos tableaux de bord, décommentez cette directive en supprimant ; au début de la ligne, puis définissez l'option sur false.

/etc/grafana/grafana.ini

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

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 en vérifiant l'état du service de Grafana.

sudo systemctl status grafana-server

Comme précédemment, la sortie doit signaler que Grafana est active (running). 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://example.com pour vérifier qu'il n'y a pas de bouton S'inscrire et que vous ne pouvez pas vous connecter sans entrer les identifiants de connexion.

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

À ce stade, Grafana est entièrement configuré et prêt à l'emploi. En option, vous pouvez simplifier le processus de connexion pour votre organisation en vous authentifiant via GitHub.

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

Pour une approche alternative à 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 aux 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 sur https://github.com/settings/profile.

Cliquez sur le nom de votre organisation sous Paramètres de l'organisation dans le menu de navigation sur le côté gauche de l'écran.

Sur l'écran suivant, vous verrez votre Profil d'organisation où vous pouvez modifier des paramètres tels que votre Nom d'affichage de l'organisation, l'organisation E-mail et l'URL de l'organisation . .

Étant donné que Grafana utilise OAuth - une norme ouverte pour accorder à des tiers distants l'accès aux ressources locales - pour authentifier les utilisateurs via GitHub, vous devrez créer une nouvelle application OAuth dans GitHub.

Cliquez sur le lien Applications OAuth sous Paramètres du développeur en bas à gauche de l'écran.

Si vous n'avez pas encore d'applications OAuth associées à votre organisation sur GitHub, on vous dira qu'il n'y a Aucune application appartenant à l'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 remplirez les détails suivants concernant votre installation Grafana :

  • Nom de l'application - Cela vous aide à distinguer vos différentes applications OAuth les unes des autres.
  • URL de la page d'accueil - Cela indique à GitHub où trouver Grafana.
  • Application Description - Ceci fournit une description de l'objectif de votre application OAuth.
  • URL de rappel d'application - Il s'agit de l'adresse à laquelle les utilisateurs seront envoyés une fois authentifiés avec succès. Pour Grafana, ce champ doit être défini sur https://example.com/login/github.

Gardez à l'esprit 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, alors assurez-vous d'entrer quelque chose de significatif et approprié.

Une fois rempli, le formulaire devrait ressembler à ceci :

Cliquez sur le bouton vert Enregistrer l'application.

Vous allez maintenant être redirigé vers une page contenant le Client ID et le 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.

Avertissement : Assurez-vous de conserver votre ID client et votre Secret client dans un endroit sûr et non public, car ils pourraient être utilisés comme base d'une attaque. .


Une fois 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 l'en-tête [auth.github] et décommentez cette section en supprimant ; au début de chaque ligne, sauf ;team_ids=, que nous n'utiliserons pas dans ce didacticiel.

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

  • Réglez enabled et allow_sign_up sur vrai. Cela activera l'authentification GitHub et permettra aux membres de l'organisation autorisée de créer eux-mêmes des comptes. Notez que ce paramètre est différent de la propriété allow_sign_up sous [users] que vous avez modifiée à l'Étape 4.
  • Définissez client_id et client_secret sur les 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 = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
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 = your_organization_name
...

Vous avez maintenant dit à Grafana tout ce qu'il doit savoir sur GitHub, mais pour terminer la configuration, vous devrez activer les redirections derrière un proxy inverse. Cela se fait en définissant une valeur root_url sous l'en-tête [server].

/etc/grafana/grafana.ini

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

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 la sortie n'indique pas que le service est active (running), consultez les messages à l'écran pour plus d'informations.

Maintenant, testez votre nouveau système d'authentification en accédant à https://example.com. 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 d'origine Connexion qui comprend un bouton GitHub avec le logo GitHub.

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

Cliquez sur le bouton vert Autoriser votre_github_organisation. Dans cet exemple, le bouton indique Autoriser SharkTheSammy.

Si vous essayez de vous authentifier avec un compte GitHub qui n'est pas membre de votre organisation approuvée, vous recevrez un message Échec de la connexion vous indiquant 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 e-mail Grafana correspond à votre adresse e-mail GitHub, vous serez connecté avec votre compte Grafana existant.

Mais, si un compte Grafana n'existe pas déjà pour l'utilisateur avec lequel vous vous êtes connecté, Grafana créera un nouveau compte utilisateur 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 pour les nouveaux utilisateurs, ouvrez le fichier de configuration principal de Grafana pour le modifier.

sudo nano /etc/grafana/grafana.ini

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

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

  • Viewer — ne peut utiliser que des 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 = Viewer
...

Une fois que vous avez enregistré vos modifications, fermez le fichier et redémarrez Grafana.

sudo systemctl restart grafana-server

Vérifiez l'état du service.

sudo systemctl status grafana-server

Comme avant, le statut doit être active (running). Si ce n'est pas le cas, passez en revue la sortie pour plus d'instructions.

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

Conclusion

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

Pour utiliser Grafana dans le cadre d'une pile de logiciels de surveillance du système, consultez Comment installer Prometheus sur Ubuntu 16.04 et Comment ajouter un tableau de bord Prometheus à Grafana.

Pour étendre votre installation actuelle de Grafana, consultez la liste des tableaux de bord officiels et créés par la communauté.

Et, pour en savoir plus sur l'utilisation de Grafana en général, consultez la documentation officielle de Grafana.