Требования к правам запуска
Когда 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) и каталогов, в которых они находятся; используются для записи нового сертификата и создания резервной копии .bak | nginx -t && nginx -s reload |
| Apache | Права на чтение и запись в каталогах, где находятся SSLCertificateFile, SSLCertificateChainFile, SSLCertificateKeyFile | systemctl restart httpd.service или systemctl restart apache2.service |
| Tomcat | PEM-сертификат/приватный ключ или файл 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) политике брандмауэра хоста.