Exigences de permissions d'exécution
Lorsque clmBot exécute le renouvellement automatique des certificats, il doit pouvoir lire et écrire les fichiers de certificats cibles, puis recharger ou redémarrer les services middleware correspondants après la mise à jour. Cet article décrit la configuration de privilèges minimaux recommandée pour différents scénarios de middleware.
Les commandes de reload / restart des middlewares sont définies dans le champ servers[].after_script de config.yaml. Vous pouvez les ajuster selon votre environnement réel. clmBot ne nécessite pas d’être exécuté en permanence avec un compte à privilèges élevés tel que root ou Administrator.
Principe du moindre privilège
Il est recommandé d’utiliser un compte système dédié (par exemple clmbot) pour exécuter clmBot :
- N’accordez à ce compte que les autorisations nécessaires pour lire la configuration de clmBot, les répertoires de journaux et les points d’installation des certificats cibles.
- N’accordez des autorisations d’écriture qu’aux fichiers de certificats gérés par clmBot, aux fichiers de clés privées et aux répertoires qui les contiennent.
- N’autorisez que les commandes de reload / restart des middlewares préalablement validées ;
before_scriptetafter_scriptdoivent être auditées manuellement puis autorisées une par une.
Non recommandé :
- Faites fonctionner clmBot en permanence avec l’identité
rootouAdministrator. - Accordez globalement à clmBot les droits sur le répertoire de configuration du middleware, le répertoire des certificats ou le contrôle des services système.
- Attribuez à
bash,powershell.exe,systemctldes droits d’exécution illimités ouNOPASSWD: ALL.
Exigences de droits pour chaque middleware
| Middleware | Droits requis | Exemple d’after_script |
|---|---|---|
| nginx | Certificat (.crt), chaîne de CA (facultatif), permissions de lecture/écriture sur la clé privée (.key), les fichiers et leur répertoire, pour écrire le nouveau certificat et créer la sauvegarde .bak | nginx -t && nginx -s reload |
| Apache | Autorisations de lecture/écriture sur les répertoires où se trouvent SSLCertificateFile, SSLCertificateChainFile, SSLCertificateKeyFile | systemctl restart httpd.service ou systemctl restart apache2.service |
| Tomcat | Certificat/clé privée PEM ou fichier keystore JKS et autorisations de lecture/écriture sur leurs répertoires | JAVA_HOME + shutdown.sh + startup.sh |
| IIS | Importation du PFX et mise à jour des liaisons de site via le script PowerShell intégré de clmBot, nécessite des droits d’administrateur ; création et nettoyage du fichier PFX temporaire | Aucune configuration requise, le script intégré gère automatiquement l’opération |
- Les scripts générés automatiquement par la fonction de découverte des certificats utilisent les chemins absolus des commandes (par exemple, nginx avec les paramètres
-p,-c,systemctlutilise des chemins absolus) ; référez-vous auservers[].after_scriptréellement généré. - Si Tomcat est géré par systemd, le script généré automatiquement est
systemctl restart <tomcat 服务名>au lieu deshutdown.sh/startup.sh.
Exemple de configuration sudoers sous Linux
Les exemples suivants illustrent uniquement la granularité des autorisations ; adaptez les chemins réels en fonction de l’hôte cible.
nginx :
clmbot ALL=(root) NOPASSWD: /usr/sbin/nginx -t
clmbot ALL=(root) NOPASSWD: /usr/sbin/nginx -s reload
Apache :
clmbot ALL=(root) NOPASSWD: /bin/systemctl restart apache2.service
Tomcat :
clmbot ALL=(tomcat) NOPASSWD: /opt/apache-tomcat/bin/shutdown.sh
clmbot ALL=(tomcat) NOPASSWD: /opt/apache-tomcat/bin/startup.sh
Exemple de droits d’accès à l’inventaire des certificats
chown -R root:clmbot /etc/ssl/example
chmod 0750 /etc/ssl/example
chmod 0640 /etc/ssl/example/site.crt /etc/ssl/example/ca.crt
chmod 0640 /etc/ssl/example/site.key
Si vous devez autoriser clmBot à écrire et sauvegarder les fichiers ci-dessus, vous pouvez accorder des permissions précises via ACL :
setfacl -m u:clmbot:rwx /etc/ssl/example
setfacl -m u:clmbot:rw- /etc/ssl/example/site.crt
setfacl -m u:clmbot:rw- /etc/ssl/example/site.key
Liste de contrôle des autorisations avant la mise en ligne
Avant de déployer clmBot, il est recommandé de vérifier les configurations d’autorisation suivantes une par une.
- clmBot s’exécute-t-il avec un compte dédié, et non avec
rootou un administrateur. config.yamln’autorise-t-il que les comptes nécessaires à la lecture et à l’écriture.- Les fichiers de certificat pointés par chaque
servers[].formatn’ouvrent-ils que les autorisations de lecture et d’écriture nécessaires. - Le répertoire contenant les fichiers de certificat permet-il de créer et de nettoyer les fichiers de sauvegarde
.bak. before_scriptetafter_scriptont-ils déjà fait l’objet d’un audit manuel.- Vérifier si sudoers ne contient que des commandes précises, et non
ALL,bashou lesystemctlcomplet. - Vérifier si les autorisations de reload ou restart pour nginx / Apache / Tomcat ne couvrent que l'instance cible.
- Vérifier si l'adresse d'écoute et le port du mode de service (
clm-bot server) sont conformes à la stratégie de pare-feu de l'hôte.