This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. はじめに
Checkmk の商業版では
エージェントパッケージを、特権のないユーザー、つまりroot 以外によってホスト上で実行できるように設定することができます。
この機能は、DEB または RPM パッケージとしてインストールされた Linux エージェントで、最初から完全に使用できます。
非特権ユーザーによる実行の前提条件は、エージェントパッケージが単一のディレクトリ内にインストールされていることです。 インストールディレクトリを選択するオプションは、Linux、Solaris、および AIX で利用できます。
Installation paths for agent files (Linux, UNIX) およびRun agent as non-root user (Linux) を定義する 2 つの関連ルールは廃止されました。 Checkmk バージョン2.5.0 で、この 2 つは削除される予定です。
ここでご紹介している機能は、技術的なプレビュー、つまり、追って開発および拡張が行われる新機能のプレビューです。 この段階では、機能が追加されるだけでなく、既存の設定が廃止され、再設定が必要になるような変更が行われる可能性があります。 この点について、ご了解いただけますようお願いいたします。 |
エージェントアップデータ―のエージェントプラグインとしての現在の実装は、非特権実行とは互換性がありません。 アーキテクチャに必要な変更に取り組んでいます。 その間、他のソフトウェアデプロイソリューションをご利用ください。 |
2. エージェントパッケージの設定
エージェントパッケージは、Setup > Agents > Windows, Linux, Solaris, AIX から開くエージェントベーカリーで設定します。Agent rules ボタンをクリックします。Agent rules > Linux/UNIX agent options に、ルールCustomize agent package (Linux).
2.1. インストールディレクトリの指定
Directory for Checkmk agent で、インストールディレクトリを指定できます。

すべてのエージェントパッケージファイルは、/etc/ 、/usr/lib/ 、/var/lib/ などのディレクトリではなく、このディレクトリにインストールされます。
セキュリティ上の理由から、ユーザーのホームディレクトリ内のディレクトリは 選択しないでください。
Solaris および AIX の設定はこれで完了です。 Linux では、非特権実行も指定できます。
2.2. 権限のないユーザーによる実行の設定
Customize user を選択すると、Linux エージェントには 2 つの基本オプションがあります。

デフォルト値であるRun agent as root, set agent controller user およびcmk-agent as userは、このルールを設定しなくても、Linux用Checkmkエージェントのデフォルトの動作を正確に指定します。
これにより、エージェントコントローラーはcmk-agent で実行され、エージェントスクリプトはroot で実行されます。
ただし、cmk-agent として別のユーザーを指定できるようになった点が新しい機能です。
2 つ目のオプションは、Run agent as non-root, set agent user.です。 これは、エージェントコントローラーに加えて、エージェントスクリプトも指定したユーザーで実行することを指定します。つまり、どちらも非特権ユーザーで実行されます。
ユーザー (UID) およびグループ (GID) に数値 ID を割り当てることもできます。 お使いの Linux ディストリビューションの慣例および使用するファイルシステムの制限に注意してください。
最後のオプションは、このルールで選択したユーザーが存在しない場合に、そのユーザーを作成するかどうかを決定します。
2.3. 個々のエージェントプラグインの特権実行の準備
エージェントプラグインでは、ルールPlug-ins, local checks and MRPE for non-root users を使用して、特定のディレクトリの実行ユーザーを個別に指定することができます。 これにより、特定のフォルダ内のプラグインを、他の非特権ユーザーIDまたはrootとして実行することができます。 このルールは、自動的にインストールされるエージェント設定を生成します。 ホストでの詳細な設定については、以下で説明します。
3. ホストでの非特権実行の設定
エージェントパッケージを非特権実行用に設定した場合、パッケージがインストールされている Linux ホストで追加の設定が必要になる場合があります。
セキュリティ上の理由から、非特権実行用に構成されたエージェントは、root 権限で実行されるエージェントよりも機能の範囲が若干狭くなります。 不足している機能を利用可能にするには、管理者として、 組織のセキュリティガイドラインおよび使用する Linux ディストリビューションの慣例に適合し、かつ効果的な方法を見つける必要があります。
この章では、エージェントパッケージに付属の設定やホストで実行する設定について、唯一の最適な解決策は紹介していません。 実行可能な、かつ妥当な解決策は、使用しているディストリビューション、組織の運用ガイドライン、および保守性に基づいて決定する必要があります。 |
3.1.sudoの設定
エージェントスクリプトに、通常、高レベルの権限を必要とするコマンドの前に sudoこれは、Checkmk の2.4.0 mdadm (さまざまなソフトウェア RAID および暗号化されたドライブのステータスを読み取る) およびmailq (postfix MTA の電子メールキューを読み取る) に影響します。
sudo の設定例は、エージェントのインストールディレクトリのサブフォルダ default/package/agent/checkmk_agent_sudoers_template にあります。
必要な行を/etc/sudoers に転送するか、ファイル全体を/etc/sudoers.d にコピーしてください(推奨されません)。
必要に応じてエントリを調整してください。
たとえば、電子メールキューの読み取りにスーパーユーザー権限は必要ない場合があり、MTA が実行されているユーザー ID を使用できます。
3.2. ルート権限なしでエージェントプラグインを実行する
エージェントプラグインを実行するには、ファイル権限、グループ割り当て、またはアクセス制御リストを使用して、必要な情報へのアクセスを確実に許可することをお勧めします。 以下のリストは、可能な方法を示しています。
エージェントスクリプトが実行される ID のユーザーを、監視に必要なデータを読み込めるグループに追加します。
デバイスファイルのアクセス権またはグループ割り当てを変更し (
udevルールなど)、特権のないユーザーがアクセスできるようにします。
3.3. ルート権限でエージェントプラグインを実行する
エージェントプラグインの実行に root 権限が必要な場合は、以下の方法があります。
必要に応じて、プラグインをクーロンジョブで実行し、その出力をスプールファイルにリダイレクトします。実行間隔を 1 分以上にすると、非同期で実行する必要があるプラグインもカバーできます。
Plug-ins, local checks and MRPE for non-root users ルールを使用してエージェントパッケージをすでにパッケージ化している場合は、root として実行する必要があるプラグインを、設定されたディレクトリに移動し、
sudoの設定を適用する必要があります。
4. レガシーデプロイ
エージェントコントローラーがない場合、または DEB または RPM パッケージを使用してインストールできない場合も、特権のない実行が可能です。
4.1. パッケージマネージャを使用しないインストール
.tar.gz 形式の TGZ パッケージを使用する場合は、インストール後に許可が正しく付与されていることを確認してください。
Linux でパッケージ管理を使用して実行したインストール例を参考にしてください。
このセクションには、今後、情報を追加していく予定です。 |
4.2. エージェントコントローラーを使用しない実行
エージェントコントローラーを使用できない、または使用すべきでない場合は、(x)inetd による暗号化されていない呼び出し、または Secure Shell による暗号化された呼び出しの両方が可能です。
root 権限による呼び出しと比較して、若干の変更が必要です。
Xinetd
xinetd の設定ファイルは、インストールディレクトリのdefault/package/config/xinetd-service-template.cfg にあります。
エージェントコントローラーが非アクティブ化されているか、互換性がない場合、このファイルによってエージェントコントローラーがアクティブ化されます。
このファイルには、エージェントルールで定義された非特権ユーザー名がすでに含まれています。
別のインターネットスーパーサーバー(OpenBSD のinetd など)を使用している場合は、そのドキュメントに従って設定を行ってください。
例については、「レガシーモードでの Linux の監視」の記事をご覧ください。
Secure Shell
SSH による呼び出しも、「レガシーモードでの Linux の監視」の記事で説明されている手順と同じです。
設定ファイル.ssh/authorized_keys へのパスと使用するユーザー名のみ、使用している非特権ユーザーに合わせて変更する必要があります。
