đ Traefik 2, crĂ©er une authentification web basique
Traefik permet d'ajouter une authentification simple par couple identifiant/mot de passe. Cet article vous montre comment le faire.
Traefik permet d'ajouter une authentification dite "basique" pour vos services web grĂące Ă un couple identifiant/mot de passe. En effet, certaines applications n'ont pas de mĂ©canisme d'authentification interne (par exemple Prometheus), l'exposition de ces services web sans authentification peut ĂȘtre critique.
Version | Date | Commentaires |
---|---|---|
1 | 05/2022 | Création de l'article |
1.1 | 05/2023 | Mise à jour de la syntaxe, ajout du contexte d'exécution, mise à jour des numéros de version, ajout d'un bloc exemple d'utilisation du middleware |
1.2 | 06/2023 | Reformulations, mise Ă jour des chemins |
1.3 | 08/2023 | Mise Ă jour des versions |
Objectif : Utiliser l'authentification (HTTP Basic auth) avec Traefik
Environnement : Debian 12
, Docker 24.x
, docker compose (plugin) 2.20.x
, Traefik 2.10
.
Contexte d'exécution :
- dossier oĂč se trouvent tous les fichiers et dossiers pour cet exemple :
/opt/docker/dc
- emplacement du fichier de configuration principal de Traefik :
/opt/docker/dc/conf/traefik.yml
- dossier oĂč se trouvent les configurations de Traefik (fichiers dynamiques) :
/opt/docker/dc/conf/traefikdynamic
- emplacement du fichier comportant tous les certificats générés par let's encrypt (ou autre) :
/opt/docker/dc/conf/acme.json
- dossier oĂč se trouvent les journaux d'Ă©vĂ©nements (logs) :
/opt/docker/dc/logs/
J'utiliserai une configuration dite "dynamique" (rappel sur les configurations sur le site).
Pour ajouter une authentification basique, nous allons utiliser un "middleware", une configuration intermédiaire, qui effectue une opération à la volée avant de rediriger vers le service ciblé. Traefik propose plusieurs types de middlewares, dont voici les listes :
- HTTP : https://doc.traefik.io/traefik/middlewares/http/overview/#available-http-middlewares
- TCP : https://doc.traefik.io/traefik/middlewares/tcp/overview/#available-tcp-middlewares
Une authentification basique nĂ©cessite un identifiant et un mot de passe. Seul le mot de passe doit ĂȘtre chiffrĂ©, et nous utiliserons l'algorithme BCrypt pour cela. Ajoutons dans un premier temps le middleware, puis configurons le tableau de bord Traefik avec ce middleware, dans le fichier de configuration dynamique (fichier  /opt/docker/dc/conf/traefikdynamic/general.yml
) :
Le chiffrement des mots de passe d'authentification pour Traefik se fait via MD5, SHA1 ou BCrypt. Ici, ce sera du BCrypt, en utilisant le site web "bcrypt.fr" pour générer les hash. L'utilisation de la commande htpasswd
est aussi envisageable (en installation le paquet apache2-utils
) = htpasswd -nbB admin Le-Motdepa$$e
.
Dans cet exemple, l'utilisateur créé (admin) a pour mot de passe "admin". Comme il s'agit d'une configuration dynamique, il n'est pas nécessaire de redémarrer Traefik. Il est important de noter que cette méthode d'authentification est relativement simple et ne remplace pas une suite de mécanismes de sécurité complets.
Vous pouvez réutiliser ce middleware pour toutes les ressources derriÚre Traefik, pour chaque définition de routeur que vous souhaitez protéger. Il vous suffit d'ajouter le nom du middleware dans les définitions de vos routeurs, comme dans l'exemple ci-dessous :
---
http:
services:
sc-prometheus:
loadBalancer:
servers:
- url: "http://prometheus:9090"
routers:
rt-prometheus:
entryPoints:
- websecure
middlewares:
- authentification
service: sc-prometheus
rule: Host (`prometheus.prive.hommet.local`)
Il est également important de prendre en compte d'autres mesures de sécurité pour renforcer la protection de vos services web. Par exemple, vous pouvez configurer TLS pour sécuriser les communications avec Traefik et les services protégés. De plus, Traefik prend en charge d'autres méthodes d'authentification telles que l'authentification OAuth, JWT et les certificats SSL. Vous pouvez explorer ces options pour renforcer la sécurité de vos applications.
En résumé, en ajoutant une authentification basique à Traefik à l'aide d'un middleware, vous pouvez protéger vos services web qui n'ont pas de mécanisme d'authentification interne. Cependant, il est important de compléter cette mesure par d'autres mesures de sécurité et de choisir des méthodes de chiffrement plus robustes, comme l'algorithme BCrypt.