Aller au contenu principal

🔐 SĂ©curitĂ©

Introduction​

La sécurité est une priorité absolue dans Semaphore UI. Que vous automatisiez des tùches d'infrastructure critiques ou que vous gériez les accÚs de votre équipe à des systÚmes sensibles, Semaphore UI est conçu pour offrir des opérations robustes et sécurisées dÚs l'installation. Cette section décrit la façon dont Semaphore gÚre la sécurité et ce que vous devez prendre en compte lors d'un déploiement en production.

Authentification et autorisation​

Semaphore prend en charge une authentification sécurisée et des mécanismes d'autorisation flexibles :

  • MĂ©thodes de connexion :

    • Nom d'utilisateur / mot de passe
      Méthode par défaut utilisant des identifiants stockés dans la base de données Semaphore. Les mots de passe ne sont jamais stockés en clair ; ils sont hachés avec Argon2id (voir Hachage des mots de passe).

    • LDAP
      Permet l'intégration avec des annuaires d'entreprise. Prend en charge le filtrage des utilisateurs et des groupes ainsi que les connexions sécurisées via LDAPS.

    • OpenID Connect (OIDC)
      Permet l'authentification unique avec des fournisseurs d'identité tels que Google, Azure AD ou Keycloak. Prend en charge les revendications personnalisées et les correspondances de groupes.

  • Authentification Ă  deux facteurs (2FA)
    La 2FA basĂ©e sur TOTP est disponible et recommandĂ©e pour tous les utilisateurs. Elle peut ĂȘtre activĂ©e par utilisateur et prend en charge des codes de rĂ©cupĂ©ration facultatifs. Voir les options de configuration mfa.totp.enabled et mfa.totp.allow_recovery.

  • ContrĂŽle d'accĂšs basĂ© sur les rĂŽles
    Vous pouvez attribuer différents rÎles aux utilisateurs, comme Admin, Maintainer ou Viewer, afin de limiter les accÚs selon les responsabilités.

  • Gestion des sessions
    Les sessions sont protégées par des cookies HTTP sécurisés. L'expiration des sessions et les mécanismes de déconnexion garantissent une exposition minimale.

Hachage des mots de passe​

Depuis la v2.20

Le hachage des mots de passe avec Argon2id est disponible depuis Semaphore 2.20. Les versions antérieures utilisent bcrypt.

Les mots de passe des utilisateurs locaux sont hachés avec Argon2id, l'algorithme recommandé par l'OWASP pour le stockage des mots de passe. Semaphore utilise les paramÚtres de robustesse minimale de l'OWASP :

ParamĂštreValeur
Mémoire19 Mio (m=19456)
Itérations2 (t=2)
Parallélisme1 (p=1)
Sel16 octets aléatoires par mot de passe
Longueur du hachage32 octets

Les hachages sont stockés au format de chaßne PHC standard, par exemple $argon2id$v=19$m=19456,t=2,p=1$<salt>$<hash>, de sorte que les paramÚtres utilisés pour chaque hachage sont enregistrés à cÎté de celui-ci.

Cela s'applique à toutes les façons de définir un mot de passe : l'interface web, l'API et les commandes CLI semaphore user add, semaphore user change-by-login et semaphore setup.

Mise à niveau depuis une version antérieure à la 2.20. Les versions antérieures à la 2.20 hachaient les mots de passe avec bcrypt. Aucune étape de migration n'est nécessaire :

  • Les hachages bcrypt existants sont toujours acceptĂ©s Ă  la connexion, de sorte que tous les utilisateurs continuent de fonctionner aprĂšs la mise Ă  niveau.
  • À la premiĂšre connexion rĂ©ussie, le mot de passe est rĂ©hachĂ© de façon transparente avec Argon2id et le hachage bcrypt est remplacĂ©.
  • Si les paramĂštres Argon2id de Semaphore sont renforcĂ©s dans une version future, les hachages créés avec les anciens paramĂštres sont mis Ă  niveau de la mĂȘme maniĂšre lors de la connexion suivante.

Comme le réhachage n'a lieu qu'à la connexion, les utilisateurs qui ne se reconnectent jamais conservent leur hachage bcrypt. Pour forcer la mise à niveau de ces comptes, réinitialisez leur mot de passe avec semaphore user change-by-login --password ... ou depuis l'interface d'administration.

remarque

Les codes de récupération de l'authentification à deux facteurs ne sont pas des mots de passe utilisateur et continuent d'utiliser bcrypt.

Secrets et identifiants​

La gestion sécurisée des secrets est une fonctionnalité essentielle :

  • Magasin de clĂ©s chiffrĂ©
    Les identifiants et les variables secrÚtes sont chiffrés au repos avec un chiffrement AES.

  • Isolation de l'environnement
    Les secrets ne sont transmis aux jobs qu'au moment de l'exécution et ne sont pas exposés directement à l'environnement du conteneur.

  • ClĂ©s SSH et jetons
    Il revient aux utilisateurs de téléverser des clés SSH et des jetons valides. Ceux-ci sont chiffrés et utilisés uniquement lors de l'exécution des tùches.

  • IntĂ©gration HashiCorp Vault (Pro)
    Les secrets peuvent ĂȘtre stockĂ©s dans une instance Vault externe. Choisissez le mode de stockage secret par secret lors de sa crĂ©ation ou de sa modification.

Chiffrement des donnĂ©es​

Les donnĂ©es sensibles sont stockĂ©es dans la base de donnĂ©es sous forme chiffrĂ©e. Vous devez dĂ©finir l'option de configuration access_key_encryption dans le fichier de configuration pour activer le chiffrement des clĂ©s d'accĂšs. Elle doit ĂȘtre gĂ©nĂ©rĂ©e par la commande :

head -c32 /dev/urandom | base64

ExĂ©cuter du code ou des playbooks non fiables​

Semaphore exécute des playbooks et des commandes définis par les utilisateurs, ce qui peut présenter des risques :

  • Isolation de l'exĂ©cution
    Par défaut, une tùche est un processus ordinaire sur le serveur Semaphore, avec son systÚme de fichiers et son accÚs réseau. L'isolation est facultative : confiez la tùche à un runner configuré avec l'executor docker ou k8s et chaque tùche obtient un conteneur ou un Pod neuf, supprimé à la fin.

  • Moindre privilĂšge
    Avec les executors Docker et Kubernetes, vous choisissez l'image, le réseau et le compte de service : la tùche ne reçoit que ce dont elle a besoin.

  • ExĂ©cution en chroot
    Semaphore peut exécuter les tùches dans une prison chroot afin d'isoler davantage l'environnement d'exécution du systÚme hÎte.

  • Utilisateur du processus de tĂąche
    Les tĂąches peuvent ĂȘtre exĂ©cutĂ©es sous un utilisateur systĂšme dĂ©diĂ© non root (par exemple, semaphore) afin de rĂ©duire l'impact d'Ă©ventuelles failles exploitĂ©es. C'est facultatif et configurable selon les politiques du systĂšme.

DĂ©ploiement sĂ©curisé​

Pour garantir un déploiement sécurisé de Semaphore :

  • Utilisez HTTPS
    Semaphore prend en charge HTTPS à la fois via sa prise en charge TLS intégrée et au travers d'un reverse proxy comme Nginx. Il est fortement recommandé d'activer HTTPS en production.

    Pour activer la prise en charge HTTPS intégrée, ajoutez le bloc suivant à config.json :

    {
    ...
    "tls": {
    "enabled": true,
    "cert_file": "/path/to/cert/example.com.cert",
    "key_file": "/path/to/key/example.com.key"
    }
    ...
    }
  • ExĂ©cutez derriĂšre un pare-feu
    Limitez l'accÚs à l'interface Semaphore et à la base de données aux seules adresses IP de confiance.

  • SĂ©curitĂ© de la base de donnĂ©es
    Utilisez des mots de passe forts et restreignez l'accÚs à la base de données à Semaphore uniquement.

Mises à jour et gestion des correctifs​

Des mises à jour de sécurité sont publiées réguliÚrement :

  • Restez Ă  jour
    Utilisez toujours la derniĂšre version stable.

  • Journal des modifications
    Examinez les changements sur GitHub avant de mettre Ă  jour.

  • Mises Ă  jour automatiques
    Si vous utilisez Docker, envisagez des pipelines d'automatisation pour des mises à jour réguliÚres.

Signaler des vulnĂ©rabilitĂ©s​

Vous avez découvert une vulnérabilité ? Aidez-nous à garder Semaphore sécurisé :

Objectifs de rĂ©solution des vulnĂ©rabilitĂ©s​

Nous visons à résoudre les vulnérabilités signalées dans les délais cibles suivants :

  • Critique : sous 30 jours
  • ÉlevĂ©e : sous 60 jours
  • Moyenne : sous 90 jours
  • Faible : au mieux, gĂ©nĂ©ralement sous 180 jours

Des correctifs hors cycle peuvent ĂȘtre publiĂ©s pour les problĂšmes activement exploitĂ©s qui affectent les derniĂšres versions stables.

Outillage de sĂ©curitĂ© du code​

Nous utilisons CodeQL, Codacy, Snyk et Renovate pour analyser le code et les dépendances, et pour automatiser les mises à jour de dépendances.

  • Pas d'exploits publics
    Ne divulguez pas publiquement les vulnérabilités avant qu'elles ne soient corrigées.

  • Remerciements
    Les chercheurs en sĂ©curitĂ© peuvent ĂȘtre mentionnĂ©s dans les notes de version s'ils le souhaitent.