Перейти к основному содержимому

Требования к правам запуска

Когда clmBot выполняет автоматическое обновление сертификатов, ему необходимо читать и записывать целевые файлы сертификатов, а после обновления — перезагружать или перезапускать соответствующие службы промежуточного ПО. В этой статье описаны рекомендуемые конфигурации с минимальными привилегиями для различных сценариев использования промежуточного ПО.

Информация

Команды reload / restart промежуточного ПО определяются в поле servers[].after_script объекта config.yaml, пользователь может корректировать их в соответствии с реальной средой. clmBot не требует постоянной работы под учётными записями с высокими привилегиями, такими как root или Administrator.

Принцип минимальных привилегий

Рекомендуется запускать clmBot под выделенной системной учётной записью (например, clmbot):

  • Предоставьте этой учётной записи только права на чтение конфигурации clmBot, каталога журналов и целевой точки установки сертификатов.
  • Права на запись предоставляйте только для файлов сертификатов, файлов закрытых ключей и каталогов, которыми управляет clmBot.
  • Разрешайте выполнение только проверенных команд reload / restart промежуточного ПО; before_script, after_script должны авторизовываться по отдельности после ручного аудита.

Не рекомендуется:

  • Обеспечьте длительную работу clmBot под身份фикатором root или Administrator.
  • Предоставьте clmBot полный доступ к каталогу конфигурации中间件, каталогу сертификатов или правам управления системными службами.
  • Предоставьте bash, powershell.exe, systemctl неограниченные права на выполнение или NOPASSWD: ALL.

Требования к правам для каждого中间件

中间件Необходимые праваПример after_script
nginxПрава на чтение и запись для файлов сертификата (.crt), цепочки ЦС (необязательно), закрытого ключа (.key) и каталогов, в которых они находятся; используются для записи нового сертификата и создания резервной копии .baknginx -t && nginx -s reload
ApacheПрава на чтение и запись в каталогах, где находятся SSLCertificateFile, SSLCertificateChainFile, SSLCertificateKeyFilesystemctl restart httpd.service или systemctl restart apache2.service
TomcatPEM-сертификат/приватный ключ или файл JKS keystore и права на чтение и запись в каталоге, где они находятсяJAVA_HOME + shutdown.sh + startup.sh
IISВстроенный PowerShell-скрипт clmBot импортирует PFX и обновляет привязки сайта, требуются права администратора; создание и очистка временного PFX-файлаНастройка не требуется, встроенный скрипт обрабатывает автоматически
Информация
  • Скрипты, автоматически создаваемые функцией обнаружения сертификатов, используют абсолютные пути команд (например, nginx с параметрами -p, -c, systemctl использует абсолютный путь), ориентируйтесь на фактически созданный servers[].after_script.
  • Если Tomcat управляется через systemd, автоматически созданный скрипт — systemctl restart <tomcat 服务名>, а не shutdown.sh / startup.sh.

Пример настройки Linux sudoers

Следующий пример лишь показывает уровень детализации прав доступа, фактические пути скорректируйте под целевой хост.

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

Пример разрешений для каталога сертификатов

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

Если необходимо разрешить clmBot записывать и создавать резервные копии указанных файлов, можно предоставить точные права с помощью 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

Контрольный список разрешений перед запуском

Подсказка

Перед развертыванием clmBot рекомендуется по пунктам проверить указанные ниже настройки разрешений.

  • Используется ли для clmBot выделенная учетная запись, а не root или администратор.
  • Разрешены ли чтение и запись config.yaml только необходимым учетным записям.
  • Предоставлены ли для каждого файла сертификата, на который указывает servers[].format, только необходимые разрешения на чтение и запись.
  • Разрешено ли каталогу с файлами сертификатов создавать и очищать резервные файлы .bak.
  • Проведен ли вручную аудит before_script и after_script.
  • Содержит ли sudoers только точные команды, а не ALL, bash или полный systemctl.
  • Распространяются ли права reload или restart для nginx / Apache / Tomcat только на целевые экземпляры.
  • Соответствуют ли адрес и порт прослушивания в режиме службы (clm-bot server) политике брандмауэра хоста.