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 l'accÚs de votre équipe à des systÚmes sensibles, Semaphore UI est conçu pour offrir un fonctionnement robuste et sécurisé dÚs l'installation. Cette section décrit la maniÚre dont Semaphore gÚre la sécurité et les points à 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 les identifiants stockés dans la base de données de Semaphore. Les mots de passe sont hachés avec un algorithme robuste (bcrypt).

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

    • OpenID Connect (OIDC)
      Permet l'authentification unique (SSO) avec des fournisseurs d'identité tels que Google, Azure AD ou Keycloak. Prend en charge les claims personnalisés et le mappage des groupes.

  • Authentification Ă  deux facteurs (2FA)
    Une 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 auth.totp.enabled et auth.totp.allow_recovery.

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

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

Secrets et identifiants​

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

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

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

  • ClĂ©s SSH et tokens
    Les utilisateurs sont responsables du téléversement de clés SSH et de tokens 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 stockage pour chaque 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 avec la commande :

head -c32 /dev/urandom | base64

ExĂ©cution de code / playbooks non fiables​

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

  • Isolation par conteneur
    Les tùches sont exécutées dans des conteneurs Docker isolés. Ces conteneurs n'ont aucun accÚs au systÚme hÎte.

  • Moindre privilĂšge
    Les conteneurs s'exĂ©cutent avec des permissions minimales et peuvent ĂȘtre restreints davantage Ă  l'aide des options Docker.

  • 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. Cette option est facultative et peut ĂȘtre configurĂ©e 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 via 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 dans 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 à Semaphore UI 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 robustes 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
    Consultez 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.

Signalement des vulnĂ©rabilitĂ©s​

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

DĂ©lais cibles de rĂ©solution des vulnĂ©rabilitĂ©s​

Nous visons à corriger 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 affectant les derniĂšres versions stables.

Outils de sĂ©curitĂ© du code​

Nous utilisons CodeQL, Codacy, Snyk et Renovate pour analyser le code source et les dépendances, ainsi que pour automatiser les mises à jour des 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 remerciĂ©s dans les notes de version s'ils le souhaitent.