Requisitos de permisos de ejecución
Cuando clmBot realiza la renovación automática de certificados, necesita leer y escribir en los archivos de certificados de destino y, después de la renovación, recargar o reiniciar el servicio de middleware correspondiente. Este artículo describe la configuración de permisos mínimos recomendada para distintos escenarios de middleware.
Los comandos de reload / restart del middleware se definen en el campo servers[].after_script de config.yaml y pueden ajustarse según el entorno real. clmBot no requiere ejecutarse de forma permanente con cuentas de privilegios elevados como root o Administrator.
Principio de privilegios mínimos
Se recomienda utilizar una cuenta de sistema dedicada (por ejemplo, clmbot) para ejecutar clmBot:
- Concédale a esa cuenta únicamente los permisos necesarios para leer la configuración de clmBot, el directorio de registros y el punto de instalación del certificado de destino.
- Otorgue permisos de escritura únicamente sobre los archivos de certificado, los archivos de clave privada y los directorios donde se encuentran que clmBot administra.
- Permita únicamente la ejecución de los comandos de reload / restart del middleware previamente verificados;
before_scriptyafter_scriptdeben autorizarse uno por uno tras una auditoría manual.
No se recomienda:
- Permitir que clmBot se ejecute de forma prolongada con la identidad
rootoAdministrator. - Abrir por completo el directorio de configuración del middleware, el directorio de certificados o el control del servicio del sistema a clmBot.
- Otorgar permisos de ejecución ilimitados o
NOPASSWD: ALLabash,powershell.exe,systemctl.
Requisitos de permisos de cada middleware
| Middleware | Permisos requeridos | Ejemplo de after_script |
|---|---|---|
| nginx | Permisos de lectura y escritura para el certificado (.crt), la cadena de CA (opcional), la clave privada (.key) y el directorio donde se encuentran, para escribir el nuevo certificado y crear la copia de seguridad .bak | nginx -t && nginx -s reload |
| Apache | Permisos de lectura y escritura en los directorios donde se encuentran SSLCertificateFile, SSLCertificateChainFile y SSLCertificateKeyFile | systemctl restart httpd.service o systemctl restart apache2.service |
| Tomcat | Permisos de lectura y escritura en los archivos de certificado/clave privada PEM o del keystore JKS y en sus directorios | JAVA_HOME + shutdown.sh + startup.sh |
| IIS | El script PowerShell integrado de clmBot importa el PFX y actualiza los enlaces del sitio; se requieren permisos de administrador; creación y limpieza del archivo PFX temporal | No requiere configuración, el script integrado lo gestiona automáticamente |
- Los scripts generados automáticamente por la función de descubrimiento de certificados utilizarán la ruta absoluta del comando (por ejemplo, nginx incluye los parámetros
-py-c, ysystemctlutiliza la ruta absoluta); consulte elservers[].after_scriptrealmente generado. - Si Tomcat está gestionado por systemd, el script generado automáticamente es
systemctl restart <tomcat 服务名>y noshutdown.sh/startup.sh.
Ejemplo de configuración de sudoers en Linux
Los siguientes ejemplos solo muestran la granularidad de la autorización; ajuste la ruta real según el host de destino.
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
Ejemplo de permisos del directorio de certificados
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 necesita permitir que clmBot escriba y haga copias de seguridad de los archivos mencionados anteriormente, puede usar ACL para otorgar permisos precisos:
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
Lista de verificación de permisos antes del lanzamiento
Antes de implementar clmBot, se recomienda confirmar las siguientes configuraciones de permisos una por una.
- ¿Se ejecuta clmBot con una cuenta dedicada, en lugar de
rooto un administrador? - ¿
config.yamlsolo permite la lectura y escritura a las cuentas necesarias? - ¿Los archivos de certificado a los que apunta cada
servers[].formatsolo tienen abiertos los permisos de lectura y escritura necesarios? - ¿El directorio donde se encuentran los archivos de certificado permite crear y limpiar archivos de respaldo
.bak? - ¿
before_scriptyafter_scriptya han sido auditados manualmente? - Si sudoers solo contiene comandos precisos, en lugar de
ALL,basho elsystemctlcompleto. - Si los permisos de reload o restart de nginx / Apache / Tomcat solo cubren las instancias objetivo.
- Si la dirección y el puerto de escucha del modo de servicio (
clm-bot server) cumplen con la política de firewall del host.