Berechtigungsanforderungen für die Ausführung von clmBot
clmBot muss bei der automatischen Zertifikatserneuerung auf die Ziel-Zertifikatsdateien lesend und schreibend zugreifen und nach der Aktualisierung den entsprechenden Middleware-Dienst neu laden oder neu starten. Dieses Dokument beschreibt die empfohlene Mindestberechtigungskonfiguration für verschiedene Middleware-Szenarien.
Die Middleware-Befehle für reload / restart sind im Feld servers[].after_script von config.yaml definiert und können vom Benutzer an die tatsächliche Umgebung angepasst werden. clmBot erfordert keinen dauerhaften Betrieb mit hoch privilegierten Konten wie root oder Administrator.
Prinzip der geringsten Berechtigung
Es wird empfohlen, clmBot mit einem dedizierten Systemkonto (z. B. clmbot) auszuführen und die folgenden Grundsätze zu beachten:
- Gewähren Sie diesem Konto nur die Berechtigungen, die zum Lesen der clmBot-Konfiguration, der Protokollverzeichnisse und des Ziel-Installationspunkts des Zertifikats erforderlich sind.
- Gewähren Sie Schreibberechtigungen nur für die von clmBot verwalteten Zertifikatsdateien, privaten Schlüsseldateien und die zugehörigen Verzeichnisse.
- Erlauben Sie nur die Ausführung bestätigter Middleware-Befehle für reload / restart und gewähren Sie keine
NOPASSWD: ALL- oder vollständigen root-Berechtigungen. before_scriptundafter_scriptmüssen manuell geprüft werden; im Skript benötigte Berechtigungen sollten einzeln erteilt werden.
Nicht empfohlene Vorgehensweisen:
- Lassen Sie clmBot langfristig als
rootoderAdministratorlaufen. - Gewähren Sie clmBot vollständigen Zugriff auf das Middleware-Konfigurationsverzeichnis, das Zertifikatsverzeichnis oder die Steuerungsrechte für Systemdienste.
- Erteilen Sie
bash,powershell.exe,systemctluneingeschränkte Ausführungsrechte.
Berechtigungsanforderungen der einzelnen Middleware-Komponenten
nginx
clmBot benötigt die folgenden Berechtigungen:
- Lese- und Schreibrechte für das Zertifikatsverzeichnis: Lese- und Schreibrechte für das Verzeichnis, in dem sich die Zielzertifikatsdatei (
.crt), die CA-Kettendatei (optional) und die Private-Key-Datei (.key) befinden, um neue Zertifikate zu schreiben und ein.bak-Backup zu erstellen. - Führen Sie den reload-Befehl aus:
after_scriptgeneriert standardmäßig das folgende Skript, mit dem nginx nach der Zertifikatsaktualisierung neu geladen wird:
nginx -t && nginx -s reload
Empfehlungen für minimale Berechtigungen:
- Nur das Ziel-Zertifikatsverzeichnis freigeben und nicht dem gesamten
/etc/nginxLese-/Schreibrechte erteilen. - Über sudoers gezielt
nginx -tundnginx -s reloadautorisieren, keine vollständige root-Shell gewähren.
Apache HTTP Server
clmBot benötigt folgende Berechtigungen:
- Lese-/Schreibrechte für das Zertifikatsverzeichnis: Lese-/Schreibrechte für das Verzeichnis, in dem sich
SSLCertificateFile,SSLCertificateChainFileundSSLCertificateKeyFilebefinden. - Befehl zum Neustart des Dienstes ausführen:
after_scriptgeneriert standardmäßig eines der folgenden Skripte (abhängig von der Distribution):
systemctl restart httpd.service
systemctl restart apache2.service
Empfehlungen für minimale Berechtigungen:
- Nur das Zielzertifikatverzeichnis freigeben, nicht das gesamte Apache-Konfigurationsverzeichnis.
- Über sudoers nur die Berechtigung
restartfür den tatsächlich auf dem aktuellen System verwendeten Apache-Dienstnamen erteilen.
Tomcat
clmBot benötigt die folgenden Berechtigungen:
- Lese- und Schreibrechte für das Zertifikatverzeichnis: Lese- und Schreibrechte für das Verzeichnis, in dem sich PEM-Zertifikat-/Private-Key-Dateien oder JKS-Keystore-Dateien befinden.
- Stopp- und Startskripte ausführen:
after_scriptgeneriert standardmäßig die folgenden Skripte:
export JAVA_HOME="<java_home>" && "<catalina_base>/bin/shutdown.sh" && "<catalina_base>/bin/startup.sh"
Mindestberechtigungsempfehlungen:
- Lassen Sie clmBot möglichst dieselbe Geschäftsgruppe wie Tomcat verwenden und gewähren Sie nur Lese-/Schreibzugriff auf den Ziel-Keystore oder das Zertifikatsverzeichnis.
- Erlauben Sie nur die Ausführung von
shutdown.shundstartup.shder entsprechenden Tomcat-Instanz; gewähren Sie keine Berechtigungen für das gesamte Verzeichnis/opt. - In Umgebungen mit mehreren Tomcat-Instanzen sollte die Berechtigung pro Instanz aufgeteilt werden.
IIS
IIS-Szenarien sind auf Windows-PowerShell-Skripte angewiesen, um PFX zu importieren und HTTPS-Bindungen zu aktualisieren, Administratorrechte sind erforderlich.
clmBot benötigt die folgenden Berechtigungen:
- Ausführung mit Administratorkonto: Führen Sie
powershell.exe -NoProfile -ExecutionPolicy Bypassaus, um temporäre PFX zu importieren und IIS-Site-Bindungen zu aktualisieren. - Lese-/Schreibzugriff auf das Zertifikatsverzeichnis: Erstellung und Bereinigung temporärer PFX-Dateien.
Mindestberechtigungsempfehlungen:
- Verwenden Sie ein dediziertes Windows-Dienstkonto und gewähren Sie nur die Berechtigungen, die für die Verwaltung der Bindungen der Ziel-IIS-Site erforderlich sind.
- Die PowerShell-Ausführungsrichtlinie und Modulberechtigungen sollten separat gemäß der Host-Sicherheitsbaseline überprüft werden.
Beispiel für die Linux-sudoers-Konfiguration
Die folgenden Beispiele dienen nur zur Veranschaulichung der Berechtigungsgranularität; passen Sie die tatsächlichen Pfade an den Zielhost an.
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
Beispiel für die Verzeichnisberechtigung eines Zertifikats:
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
Um clmBot das Schreiben und Sichern der oben genannten Dateien zu ermöglichen, können Sie eine präzise Autorisierung über ACL erteilen:
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
Berechtigungs-Checkliste vor dem Go-Live
Vor der Bereitstellung des clmBot wird empfohlen, die folgenden Berechtigungskonfigurationen Punkt für Punkt zu überprüfen.
- Wird der clmBot mit einem dedizierten Konto ausgeführt und nicht mit
rootoder einem Administrator? - Erlaubt
config.yamlnur den erforderlichen Konten das Lesen und Schreiben? - Sind die Zertifikatsdateien, auf die jeder
servers[].formatverweist, nur mit den erforderlichen Lese- und Schreibberechtigungen versehen? - Erlaubt das Verzeichnis der Zertifikatsdateien das Erstellen und Bereinigen von
.bak-Sicherungsdateien? - Wurden
before_scriptundafter_scriptbereits manuell geprüft? - Ob die sudoers nur exakte Befehle enthalten und nicht
ALL,bashoder vollständigesystemctl. - Ob die reload- oder restart-Berechtigungen für nginx / Apache / Tomcat nur die Zielinstanzen abdecken.
- Ob die Abhöradresse und der Port des Dienstmodus (
clm-bot server) der Firewall-Richtlinie des Hosts entsprechen.