Ana içeriğe geç

clmBot Çalışma İzni Gereksinimleri

clmBot, sertifika otomatik yenileme işlemi sırasında hedef sertifika dosyalarını okuma ve yazma işlemleri yapmalı, güncelleme sonrasında ilgili ara katman hizmetini yeniden yüklemeli veya yeniden başlatmalıdır. Bu belge, çeşitli ara katman senaryolarında önerilen minimum izin yapılandırmasını açıklar.

Açıklama

Ara katman reload / restart komutları, config.yaml içindeki servers[].after_script alanında tanımlanmıştır; kullanıcılar gerçek ortama göre ayarlayabilir. clmBot, root veya Administrator gibi yüksek yetkili hesaplarla sürekli çalıştırılmak zorunda değildir.


Minimum İzin İlkesi

clmBot'un özel bir sistem hesabıyla (ör. clmbot) çalıştırılması ve aşağıdaki ilkelere uyulması önerilir:

  • Bu hesaba yalnızca clmBot yapılandırması, günlük dizini ve hedef sertifika kurulum noktalarını okumak için gereken izinleri verin.
  • Yalnızca clmBot tarafından yönetilen sertifika dosyalarına, özel anahtar dosyalarına ve bulundukları dizinlere yazma izni verin.
  • Yalnızca doğrulanmış ara katman reload / restart komutlarının çalıştırılmasına izin verin; NOPASSWD: ALL veya tam root yetkisi vermeyin.
  • before_script, after_script mutlaka insan tarafından denetlenmeli; betikte gereken izinler tek tek yetkilendirilmelidir.

Önerilmeyen uygulamalar:

  • clmBot'ın root veya Administrator kimliğiyle uzun süreli çalışmasına izin verin.
  • Ara yazılım yapılandırma dizinini, sertifika dizinini veya sistem hizmeti denetim izinlerini bütünüyle clmBot'a açın.
  • bash, powershell.exe, systemctl için sınırsız yürütme izni verin.

Ara Yazılımların İzin Gereksinimleri

nginx

clmBot aşağıdaki izinlere ihtiyaç duyar:

  1. Sertifika dizini okuma-yazma izni: Hedef sertifika dosyası (.crt), CA zincir dosyası (isteğe bağlı) ve özel anahtar dosyasının (.key) bulunduğu dizin üzerinde okuma-yazma iznine sahip olmalıdır; böylece yeni sertifika yazabilir ve .bak yedeği oluşturabilir.
  2. reload komutunu çalıştırın: after_script varsayılan olarak, sertifika yenilendikten sonra nginx’i yeniden yüklemek için aşağıdaki betiği oluşturur:
nginx -t && nginx -s reload

En az ayrıcalık önerileri:

  • Yalnızca hedef sertifika dizinini açın; /etc/nginx öğesinin tamamına okuma/yazma izni vermeyin.
  • sudoers aracılığıyla nginx -t ve nginx -s reload için hassas yetkilendirme yapın; tam root kabuğu vermeyin.

Apache HTTP Server

clmBot aşağıdaki izinlere ihtiyaç duyar:

  1. Sertifika dizini okuma/yazma izni: SSLCertificateFile, SSLCertificateChainFile, SSLCertificateKeyFile öğelerinin bulunduğu dizinde okuma/yazma iznine sahip olmalıdır.
  2. Hizmet yeniden başlatma komutunu çalıştırma: after_script varsayılan olarak aşağıdaki betiklerden birini üretir (dağıtıma bağlı olarak):
systemctl restart httpd.service
systemctl restart apache2.service

最小 yetkilendirme önerileri:

  • Yalnızca hedef sertifika dizinini açın; Apache yapılandırma dizininin tamamına yetki vermeyin.
  • sudoers aracılığıyla yalnızca sistemde gerçekte kullanılan Apache hizmet adına restart yetkisi verin.

Tomcat

clmBot aşağıdaki izinlere ihtiyaç duyar:

  1. Sertifika dizini okuma-yazma izni: PEM sertifika/özel anahtar dosyalarının veya JKS keystore dosyalarının bulunduğu dizin üzerinde okuma-yazma iznine sahip olmalıdır.
  2. Durdurma ve başlatma betiklerini çalıştırma: after_script varsayılan olarak aşağıdaki betikleri oluşturur:
export JAVA_HOME="<java_home>" && "<catalina_base>/bin/shutdown.sh" && "<catalina_base>/bin/startup.sh"

Minimum yetkilendirme önerileri:

  • clmBot ile Tomcat'in aynı iş grubunu kullanmasına öncelik verin; yalnızca hedef keystore veya sertifika dizinine okuma-yazma izni verin.
  • Yalnızca ilgili Tomcat örneğinin shutdown.sh ve startup.sh işlemlerinin yürütülmesine izin verin; /opt dizininin tamamına izin vermeyin.
  • Çok örnekli Tomcat ortamlarında yetkilendirme örnek bazında ayrılmalıdır.

IIS

IIS senaryosu, PFX içe aktarmak ve HTTPS bağlamasını güncellemek için Windows PowerShell betiklerine bağımlıdır; yönetici ayrıcalıkları gerektirir.

clmBot aşağıdaki izinlere ihtiyaç duyar:

  1. Yönetici hesabıyla çalıştırma: Geçici PFX'i içe aktarmak ve IIS sitesi bağlamasını güncellemek için powershell.exe -NoProfile -ExecutionPolicy Bypass çalıştırın.
  2. Sertifika dizini okuma-yazma izni: Geçici PFX dosyasının oluşturulması ve temizlenmesi.

Minimum yetkilendirme önerileri:

  • Yalnızca hedef IIS sitesi bağlamasını yönetmek için gereken izinlere sahip özel bir Windows hizmet hesabı kullanın.
  • PowerShell yürütme ilkesi ve modül izinleri, ana makine güvenlik taban çizgisine göre ayrıca denetlenmelidir.

Linux sudoers yapılandırma örneği

Aşağıdaki örnekler yalnızca yetkilendirme ayrıntı düzeyini göstermektedir; gerçek yolları hedef ana makineye göre ayarlayın.

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

Sertifika dizini izin örneği:

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

ACL kullanarak clmBot'a yukarıdaki dosyalara yazma ve yedekleme izni vermek için hassas yetkilendirme yapabilirsiniz:

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

Yayına Alma Öncesi İzin Kontrol Listesi

İpucu

clmBot'u dağıtmadan önce, aşağıdaki izin yapılandırmalarını tek tek doğrulamanız önerilir.

  • clmBot, root veya yönetici yerine özel bir hesapla mı çalışıyor?
  • config.yaml yalnızca gerekli hesapların okumasına ve yazmasına izin verecek şekilde mi yapılandırıldı?
  • Her servers[].format tarafından işaret edilen sertifika dosyaları yalnızca gerekli okuma ve yazma izinlerine mi açık?
  • Sertifika dosyalarının bulunduğu dizin, .bak yedek dosyalarının oluşturulmasına ve temizlenmesine izin veriyor mu?
  • before_script, after_script manuel olarak denetlendi mi?
  • sudoers yalnızca tam komutları mı içeriyor; ALL, bash veya tam systemctl içermiyor mu?
  • nginx / Apache / Tomcat'in reload veya restart izinleri yalnızca hedef örneği mi kapsıyor?
  • Hizmet modu (clm-bot server) dinleme adresi ve bağlantı noktası, ana makine güvenlik duvarı politikasına uygun mu?