Traefik permet d'ajouter une authentification simple Ă  vos services web grĂące Ă  un couple identifiant/mot de passe. En effet, certaines applications n'ont pas de mĂ©canisme d'authentification interne, l'exposition de ces services sans sĂ©curitĂ© peut ĂȘtre critique.

Version Date Commentaires
1 05/2022 Création de l'article

Objectif : Utiliser l'authentification (HTTP Basic auth) avec Traefik

Environnement : Debian 11.2 (bullseye), Docker 20.10.x, docker-compose 2.4.x, Traefik 2.6

Pour ce faire, j'utiliserai une configuration dite "dynamique" (rappel sur les configurations sur le site).

Nous allons utiliser un "middleware", permettant d'effectuer une opération à la volée avant de fournir le service demandé/ciblé. Il en existe de plusieurs types dont les listes sont les suivantes :

traefik middlewares architecture
Schéma récapitulatif de l'utilisation des middleware dans Traefik

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 du paquet htpasswd est aussi envisageable (en installation le paquet apache2-utils).

Une authentification basique est un identifiant et un mot de passe. Seul le mot de passe doit ĂȘtre chiffrĂ© en bcrypt. Ajoutons dans un premier temps le middleware, puis configurons le tableau de bord Traefik avec ce middleware, dans le fichier de configuration dynamique (dans mon exemple : /opt/docker/traefik/conf/traefikdynamic/dynamic.yml) :

http:
  middlewares:
    authentification:
      basicAuth:
        users: # admin / admin
        - admin:$2y$10$KbBxnjLyBfFi355gJKhgJuXzGUaWbSRvNnvB2R9WDKpLFG1NEdcdi

  routers:
    rt-traefik:
      entryPoints:
      - websecure
      middlewares:
      - authentification
      service: api@internal
      rule: Host (`traefik.rezo.net`)

L'utilisateur crĂ©Ă© (admin) a pour mot de passe "admin". Puisqu'il s'agit d'une configuration dynamique, pas besoin de redĂ©marrer les conteneurs ni mĂȘme Traefik. Il s'agit lĂ , encore une fois, d'une sĂ©curitĂ© assez simple et ne remplacera pas un enchaĂźnement d'autres mĂ©canismes de sĂ©curitĂ©.

Ce middleware est utilisable pour toutes les ressources (routeurs) derriÚre Traefik. Pensez à ajouter le nom du middleware dans les définitions de vos routeurs à protéger.

Partager l'article