Saltar al contenido principal

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.

Información

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_script y after_script deben autorizarse uno por uno tras una auditoría manual.

No se recomienda:

  • Permitir que clmBot se ejecute de forma prolongada con la identidad root o Administrator.
  • 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: ALL a bash, powershell.exe, systemctl.

Requisitos de permisos de cada middleware

MiddlewarePermisos requeridosEjemplo de after_script
nginxPermisos 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 .baknginx -t && nginx -s reload
ApachePermisos de lectura y escritura en los directorios donde se encuentran SSLCertificateFile, SSLCertificateChainFile y SSLCertificateKeyFilesystemctl restart httpd.service o systemctl restart apache2.service
TomcatPermisos de lectura y escritura en los archivos de certificado/clave privada PEM o del keystore JKS y en sus directoriosJAVA_HOME + shutdown.sh + startup.sh
IISEl 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 temporalNo requiere configuración, el script integrado lo gestiona automáticamente
Información
  • 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 -p y -c, y systemctl utiliza la ruta absoluta); consulte el servers[].after_script realmente generado.
  • Si Tomcat está gestionado por systemd, el script generado automáticamente es systemctl restart <tomcat 服务名> y no shutdown.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

Consejo

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 root o un administrador?
  • ¿config.yaml solo permite la lectura y escritura a las cuentas necesarias?
  • ¿Los archivos de certificado a los que apunta cada servers[].format solo 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_script y after_script ya han sido auditados manualmente?
  • Si sudoers solo contiene comandos precisos, en lugar de ALL, bash o el systemctl completo.
  • 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.