メインコンテンツまでスキップ

実行権限要件

clmBot が証明書の自動更新を実行する際、対象の証明書ファイルの読み書きと、更新後に対応するミドルウェアサービスのリロードまたは再起動が必要です。本文では、各種ミドルウェアのシナリオにおける推奨最小権限設定について説明します。

情報

ミドルウェアの reload / restart コマンドは config.yamlservers[].after_script フィールドに定義されており、実際の環境に応じてユーザーが調整できます。clmBot は rootAdministrator などの高権限アカウントでの常時実行を必須としていません。

最小権限の原則

専用システムアカウント(例:clmbot)で clmBot を実行することを推奨します。

  • そのアカウントには、clmBot の設定、ログディレクトリ、および対象証明書インストールポイントの読み取りに必要な権限のみを付与します。
  • clmBot が管理する証明書ファイル、秘密鍵ファイル、およびそれらが存在するディレクトリに対してのみ書き込み権限を付与します。
  • 確認済みのミドルウェア reload / restart コマンドのみ実行を許可し、before_scriptafter_script は人手による監査を経て 1 件ずつ許可する必要があります。

推奨しません:

  • clmBot を長期的に root または Administrator として実行させる。
  • ミドルウェア設定ディレクトリ、証明書ディレクトリ、またはシステムサービス制御権限を全体的に clmBot に開放する。
  • bashpowershell.exesystemctl に無制限の実行権限または NOPASSWD: ALL を付与する。

各ミドルウェアの権限要件

ミドルウェア必要な権限after_script 例
nginx証明書(.crt)、CA チェーン(任意)、秘密鍵(.key)ファイルおよびその配置ディレクトリへの読み書き権限。新しい証明書の書き込みと .bak バックアップの作成に使用されますnginx -t && nginx -s reload
ApacheSSLCertificateFileSSLCertificateChainFileSSLCertificateKeyFile があるディレクトリの読み書き権限systemctl restart httpd.service または systemctl restart apache2.service
TomcatPEM 証明書/秘密鍵または JKS keystore ファイルおよびそのディレクトリの読み書き権限JAVA_HOME + shutdown.sh + startup.sh
IISclmBot 内蔵 PowerShell スクリプトで 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_scriptafter_script は手動監査済みか。
  • sudoers に正確なコマンドのみが含まれており、ALLbash、または完全な systemctl ではないか。
  • nginx / Apache / Tomcat の reload または restart 権限が対象インスタンスのみをカバーしているか。
  • サービスモード(clm-bot server)のリスンアドレスとポートがホストのファイアウォールポリシーに準拠しているか。