Exigences de permissions pour l’exécution de clmBot
Lors de l’exécution du renouvellement automatique des certificats, clmBot 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 minimale des permissions recommandée pour les différents scénarios middleware.
Les commandes reload / restart des middleware sont définies dans le champ servers[].after_script de config.yaml et peuvent être ajustées par l’utilisateur selon l’environnement réel. clmBot ne nécessite pas de s’exécuter durablement avec un compte à hauts privilèges 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, en respectant les principes suivants :
- N’accorder à ce compte que les permissions nécessaires pour lire la configuration de clmBot, les répertoires de journaux et le point d’installation du certificat cible.
- N’accorder des droits 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’autoriser que l’exécution des commandes middleware reload / restart confirmées, sans accorder
NOPASSWD: ALLni les privilèges root complets. before_script,after_scriptdoivent faire l’objet d’un audit manuel, et les permissions requises par les scripts doivent être accordées une par une.
Pratiques non recommandées :
- Faites fonctionner clmBot à long terme sous l’identité
rootouAdministrator. - Ouvrez entièrement à clmBot le répertoire de configuration du middleware, le répertoire des certificats ou les droits de contrôle des services système.
- Accordez des droits d’exécution illimités à
bash,powershell.exe,systemctl.
Exigences de droits pour chaque middleware
nginx
clmBot a besoin des droits suivants :
- Droits de lecture et d’écriture sur le répertoire des certificats : disposer des droits de lecture et d’écriture sur le répertoire contenant le fichier de certificat cible (
.crt), le fichier de chaîne CA (facultatif) et le fichier de clé privée (.key), afin de pouvoir écrire le nouveau certificat et créer la sauvegarde.bak. - Exécutez la commande reload :
after_scriptgénère par défaut le script suivant, utilisé pour recharger nginx après le renouvellement du certificat :
nginx -t && nginx -s reload
Recommandations de moindre privilège :
- N’exposer que le répertoire cible des certificats, sans accorder de droits de lecture-écriture à l’ensemble de
/etc/nginx. - Accorder précisément via sudoers les autorisations pour
nginx -tetnginx -s reload, sans octroyer un shell root complet.
Apache HTTP Server
clmBot nécessite les autorisations suivantes :
- Droits de lecture-écriture sur le répertoire des certificats : disposer de droits de lecture-écriture sur le répertoire où se trouvent
SSLCertificateFile,SSLCertificateChainFileetSSLCertificateKeyFile. - Exécuter la commande de redémarrage du service :
after_scriptgénère par défaut l’un des scripts suivants (selon la distribution) :
systemctl restart httpd.service
systemctl restart apache2.service
Suggestions de moindre privilège :
- N’exposez que le répertoire du certificat cible, sans octroyer l’accès à l’ensemble du répertoire de configuration Apache.
- Via sudoers, n’accordez la permission
restartqu’au nom de service Apache réellement utilisé par le système actuel.
Tomcat
clmBot nécessite les autorisations suivantes :
- Autorisation de lecture/écriture du répertoire du certificat : disposer d’une autorisation de lecture et d’écriture sur le répertoire où se trouvent les fichiers de certificat/clé privée PEM ou le fichier de keystore JKS.
- Exécution des scripts d’arrêt et de démarrage :
after_scriptgénère par défaut les scripts suivants :
export JAVA_HOME="<java_home>" && "<catalina_base>/bin/shutdown.sh" && "<catalina_base>/bin/startup.sh"
Suggestions d’octroi minimal des droits :
- Il est préférable de placer clmBot et Tomcat dans le même groupe métier, en accordant uniquement les droits de lecture/écriture sur le keystore cible ou le répertoire des certificats.
- Autorisez uniquement l’exécution de
shutdown.shetstartup.shde l’instance Tomcat correspondante ; n’accordez pas de droits sur l’ensemble du répertoire/opt. - Dans un environnement Tomcat multi-instance, les autorisations doivent être réparties par instance.
IIS
Dans le scénario IIS, l’importation du fichier PFX et la mise à jour de la liaison HTTPS s’appuient sur un script Windows PowerShell : des droits d’administrateur sont requis.
clmBot a besoin des droits suivants :
- Exécution avec un compte administrateur : exécutez
powershell.exe -NoProfile -ExecutionPolicy Bypasspour importer le PFX temporaire et mettre à jour la liaison du site IIS. - Droits de lecture/écriture sur le répertoire des certificats : création et nettoyage du fichier PFX temporaire.
Suggestions d’octroi minimal des droits :
- Utilisez un compte de service Windows dédié et accordez uniquement les droits nécessaires à la gestion des liaisons des sites IIS cibles.
- La politique d’exécution PowerShell et les droits des modules doivent être examinés séparément, conformément à la base de sécurité de l’hôte.
Exemple de configuration sudoers sous Linux
Les exemples suivants servent uniquement à illustrer 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 d’autorisations pour 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 mentionnés ci-dessus, vous pouvez utiliser une ACL pour une autorisation précise :
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/ca.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 chaque élément de configuration des autorisations suivants.
- clmBot s'exécute-t-il avec un compte dédié, et non avec
rootni avec un administrateur. config.yamlautorise-t-il uniquement les comptes nécessaires en lecture et en écriture.- Les fichiers de certificat pointés par chaque
servers[].formatn'accordent-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 fait l'objet d'un audit manuel.- Le fichier sudoers ne contient-il que des commandes précises, et non
ALL,bashou lesystemctlcomplet. - Les permissions de rechargement ou de redémarrage de nginx / Apache / Tomcat ne couvrent-elles que l’instance cible.
- L’adresse et le port d’écoute du mode service (
clm-bot server) sont-ils conformes à la politique de pare-feu de l’hôte.