Checkmk
to checkmk.com
Important

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 のユーザー管理に関するすべてをご説明します。 しかし、詳細に入る前に、まずいくつかの用語を明確にしておかなければなりません。

Checkmk では、ユーザーとは ユーザーインターフェースにアクセスできる人のことを指します。 ユーザーは 1 つ以上の役割を持っています これらの役割は、許可の基礎となります。

ユーザーが特定のホストおよびサービスを担当すると、そのユーザーは連絡先として識別されます。 連絡先は通常、監視環境では自分のホストおよびサービスのみを表示し、それらに関する問題が発生した場合に通知を受けることができます。

連絡先ではないユーザーもいます。 その例としては、サイト作成時に自動的に生成されるcmkadmin があります。 このユーザーは、すべてのホストおよびサービスを見ることができますが、それはAdministrator ロールにSee all hosts and services という許可が含まれているためであり、必ずしもすべての連絡先に指定されているからではありません。

通知のみを目的として連絡先を作成した場合 (たとえば、通知をチケットシステムに転送する場合など)、インターフェースにログインできないように作成すると便利です。

連絡先は、常に1 つ以上の連絡先グループに所属しています。 これらのグループの目的は、連絡先をホストおよびサービスに割り当てることです。 たとえば、連絡先「hhirsch 」は連絡先グループ「linux 」に所属し、このグループはルールによってすべての Linux ホストに割り当てることができます。 連絡先をホストまたはサービスに直接割り当てることはできません。実際、割り当てると、ユーザーが組織を離れる場合など、問題が発生する可能性があります。

要約:

  • ユーザーはユーザーインターフェースを使用できます。

  • 連絡先は、特定のホストおよびサービスを担当するユーザーです。

  • 連絡先グループは、ユーザーが担当するものを定義します。

  • ロールは、ユーザーに付与される許可を定義します。

2. 設定環境におけるユーザー管理

2.1. 概要

ユーザー管理ページは、Setup > Users > Users にあります。 新しく作成されたサイトでは、このページは次のようになります(画像では、テーブルの列をいくつか省略しています)。

List of users with administrator attributes.

上の画像は、サイト作成時に自動的に作成されたすべてのユーザーを示しています。 オートメーションユーザー、その後にパスワードを使用して対話型ログインを行う単一のユーザー (cmkadmin) が続きます。 Checkmk アプライアンスでは、このユーザーの名前とパスワードはユーザー自身が定義できるため、別の名前を使用することができます。 このcmkadmin ユーザーには、以下のプロパティがあります。

  • Administrator ロールが割り当てられているため、すべての許可を持っています。

  • 連絡先には登録されておらず、通知も受け取りません。

  • Administrator ロールのため、すべての情報を閲覧できます。

  • サイト作成時に割り当てられたパスワードは、必ず変更してください。

新しいユーザーを作成するフォーム ( ) および既存のユーザーを編集するフォーム ( ) は、5 つのセクションに分かれています。 最初のセクションは、ID に関するものです。

2.2. 身分

Dialog for a user's identity.

Checkmk では、データセットの ID (Username) は後で変更できません。 これは、ログイン用、およびすべてのファイルとデータ構造内の内部キーとして使用されます。

メールアドレスはオプションであり、ユーザーを電子メール(SMTP 設定が必要)による通知の連絡先とする場合にのみ必要です。 同様に、Pager address フィールドは、SMS または類似のシステムによる通知用です。 独自の通知スクリプトを作成する場合は、これらのフィールドの値にアクセスして、任意の目的で使用することができます。

Monitored sites を使用すると、アクセスできる既存のサイトを任意に制限することができます。 これは、何百ものサイトを含む分散監視など、非常に大規模な環境では特に便利です。 ユーザーがホストにこれらのサイトのうち特定のサイトのみを必要とする場合、GUI は選択したサイトのみに連絡してビューを設定します。これにより、パフォーマンスが大幅に向上します。

2.3. セキュリティ

Dialog for a user's security settings.

このボックスは、ログインおよび認可用です。Automation secret for machine accounts オプションは、HTTP/HTTPS 経由で Checkmk にアクセスし、URL 経由で認証を行うアカウント用です。 その方法については、以下で説明します

ロールは、少なくとも 1 つ選択する必要があります。 理論的には、ユーザーに複数のロールを割り当てて、 そのユーザーにすべてのロールの権限を与えることもできます。 ただし、定義済みのロールを使用する場合、これはあまり意味がありません。

disable the login to this account オプションでユーザーをロックすると、そのユーザーは アイコンでテーブルに表示されます。 そのユーザーはログインできなくなりますが、システムには残ります。 ユーザーが連絡先である場合、通知は影響を受けず、そのユーザーは引き続き電子メールなどを受信します。 ロックアウト時にユーザーがログインしていた場合、そのユーザーは自動的にログアウトされます。

2.4. 連絡先グループ

Dialog for a user's contact groups.

1 つ以上の連絡先グループにユーザーを割り当てると、 そのユーザーは連絡先になります。新しいサイトを作成すると、 連絡先グループ「Everything 」も作成され、このグループには常にすべてのホストとすべてのサービスが含まれます。このグループに属するユーザーは 、すべてのホストとサービスを自動的に担当することになります。

2.5. 通知

Dialog for a user's notification settings.

Notifications 」ボックスでは、「Receive fallback notifications 」オプションを使用して、通知ルールが適用されない場合にこの連絡先に通知を送信するように指定できます。

2.6. 個人設定

Dialog for a user's personal settings.

ユーザーは、User > Edit profile から、このボックスのすべての設定を自分で変更することもできます(Guest user ロールを除く)。 インターフェース言語の選択を除き、これらの設定はほとんど必要ありません。 詳細については、いつものようにインラインヘルプをご覧ください。

2.7. インターフェース設定

Dialog for a user's interface settings.

ユーザーは、User > Edit profile を使用して、インターフェースの設定を自分でカスタマイズすることもできます。 特に興味深いのは、Checkmk がインターフェースに表示する情報を増減するかどうかを決定する「Show more / Show less 」オプションです。 常にすべての情報を表示したい場合は、ここで「Enforce show more 」を選択してください。

3. 連絡先グループ

3.1. 連絡先グループの作成および編集

連絡先グループは、ホストとサービス、および連絡先とを結びつけるリンクです。 各連絡先グループは、IT 環境内の特定の領域に対する責任を表します。 たとえば、連絡先グループ「SAP」には、SAP システムを保守するすべての担当者を登録し、この環境でそのようなサービスを提供するすべてのホストおよびサービスに割り当てることができます。

連絡先グループは、Setup > Users > Contact groups で管理します。 次の図は、3 つの手動で作成された連絡先グループを含むこのモジュールを示しています。

List of contact groups.

新しいグループを作成することは簡単です。 ID は常に固定され、エイリアスは後からいつでも変更可能な表示名です:

Dialog for name and alias of contact groups.

新しい連絡先グループは、連絡先もホストもサービスも含まれていないため、2 つの点で空の状態です。 連絡先グループを連絡先に割り当てるには、ユーザープロファイルを使用します。この操作は、ユーザーを編集する際にすでに説明しました。

インベントリの見え方の設定

さらに、HW/SW インベントリで見つかったインベントリの表示設定を行うこともできます。 デフォルトでは、インベントリ全体が表示されますが、Allowed to see parts of the tree オプションと内部インベントリパスを使用して、インベントリを完全に非表示にしたり、選択的に表示したりすることができます。

Dialog for visibility of inventory data.

必要なパス情報を入力するには、まずインベントリデータからその情報を読み出す必要があります。 この情報を使用して、パスとキーを入力し、たとえば、プロセッサのインベントリデータの一部 (モデルとアーキテクチャ) だけを表示するように設定することができます。

Dialog for visibility of inventory data with CPU filter.

3.2. 連絡先グループへのホストの追加

ホストを連絡先グループに含めるには、フォルダを使用する方法とルールを使用する方法の 2 つの方法があります。 また、この 2 つの方法を組み合わせることもできます。 この場合、それぞれの連絡先グループの集約がホストに割り当てられます。

フォルダを使用した割り当て

フォルダのプロパティには、そのフォルダ内で [Folder > Properties ] からアクセスできます。 そこに [Permissions ] オプションがあります。 このチェックボックスを有効にすると、連絡先グループの選択画面が表示されます。

Dialog for assigning contact groups to folders.

このオプションの真の目的は、ホストの維持に関する許可を設定することです。これについては、以下で詳しく説明します。

特定の連絡先グループに許可を割り当てると、そのグループを監視のホストの連絡先グループとして入力できるようになります。 その際、割り当てをサブフォルダ内のホストにも適用するかどうか、およびこれらのホストのサービスにもこれらのグループを明示的に割り当てるかどうかを決定できます。 明示的に割り当てられていないサービスは、ルールによって割り当てられたものも含め、ホストの連絡先グループをすべて継承します。

Tip

この時点で、フォルダに対する「Permissions属性の継承は上書きされます。 これにより、サブフォルダに連絡先グループを追加することができます。 したがって、親フォルダで「Add these groups as contacts to all hosts in all subfolders of this folder 」オプションが有効になっている場合、割り当てはすべての親フォルダを介して累積的に行われます。

ちなみに、連絡先グループオプションは、ホストの詳細で簡略化されたフォームでも直接確認できます。 つまり、このオプションを使用して、個々のホストに連絡先グループを割り当てることもできます。 ただし、これはすぐに混乱を招く可能性があるため、例外的な場合にのみ使用し、必要に応じてルールを使用して作業することをお勧めします。

ルールを使用して割り当てる

2 番目の方法、つまりルールを使用して連絡先グループを割り当てる方法は、少し面倒ですが、より柔軟性があります。 この方法は、フォルダ構造を構造化された組織原則に従って設定しておらず、フォルダを連絡先グループに明確に割り当てることができない場合に非常に便利です。

このために必要なルールセット「Assignment of hosts to contact groups 」は、Setup > Hosts > Host monitoring rules で確認できます。 このルールセットには、サイト作成時に生成された、すべてのホストを「Everything 」連絡先グループに割り当てる定義済みのルールがあります。

Rule set for assigning hosts to contact groups.

このルールセットは、適用可能なすべてのルールが評価され、最初のルールだけが評価されるわけではないように定義されていることにご注意ください。 1 つのホストを複数の連絡先グループに属させることは便利です。 その場合は、割り当てごとにルールセットが必要になります。

Dialog for assigning hosts to the Windows-Servers contact group.

3.3. 連絡先グループへのサービスの追加

サービスがホストと同じ連絡先グループに属することは、必ずしも意味があるとは限りません。 そのため、ホストの連絡先グループとは無関係に、Assignment of services to contact groups ルールセットを使用することができます。 次のルールが適用されます。

  • サービスに連絡先グループが割り当てられていない場合、そのサービスはホストと同じ連絡先グループを自動的に受け取ります。

  • サービスに少なくとも 1 つの連絡先グループが明示的に割り当てられると、そのサービスはホストから連絡先グループを継承しなくなります

したがって、単純な環境では、ホストにのみ連絡先グループを割り当てるだけで十分です。 さらに差別化が必要な場合は、サービスに関するルールを作成することもできます。

3.4. 割り当ての制御

監視環境でホストまたはサービスの詳細を確認することで、すべてのルールとフォルダが正しく設定されているかどうかをチェックできます。 そこには、このオブジェクトの実際の割り当てをリストした「Host contact groups 」および「Host contacts 」(または「Service contact groups 」および「Service contacts 」)というエントリがあります。

List of host details.

4. ホストおよびサービスの可視性

4.1. 概要

通常のユーザー(Normal monitoring user ロール)は、自分が連絡先となっているオブジェクトのみを表示できることは、監視環境が大きくなるほど重要になります。 これにより、概要がわかりやすくなるだけでなく、ユーザーが関係のない場所に介入することを防ぐことができます。

管理者(Administrator ロール)は、もちろん常にすべてを表示することができます。 これは、See all host and services 許可によって制御されます。 個人設定の Visibility of hosts/services に、Only show hosts and services the user is a contact for チェックボックスがあります。 これをオンにすると、see all を自主的に放棄し、自分が連絡先となっているホストとサービスのみを表示することができます。 このオプションは、管理者であり、かつ通常のユーザーでもある、つまり 2 つの役割を持つユーザーのために用意されています。

Guest user ロールは、そのユーザーもすべてを見ることができるように事前設定されています。 ここでは、介入や個人設定は使用できません。

通常のユーザーの場合、監視環境での表示は、ユーザーが連絡先として登録されていないホストおよびサービスは、システムに存在していないように表示されるように実装されています。 とりわけ、以下のエレメントは表示を考慮しています。

4.2. サービスの可視性

前述のように、あるホストの連絡先は、そのホストのすべてのサービスの連絡先ではない場合があります。 そのような場合でも、GUI ではそのホストのすべてのサービスを確認することができます。

この例外は、通常有用であるため、デフォルトで設定されています。 実際には、これは、たとえば、実際のホストを担当する同僚も、そのホストに接続されているすべてのサービスを見ることができますが、そのサービスに関する通知は受け取らないことを意味します。

この設定が気に入らない場合は、商業版でGlobal settings > Monitoring core > Authorization settings から変更することができます。 ここで、Services の設定をStrict - Visible if user is contact for the service に変更すると、ユーザーは、そのサービスに直接連絡先として割り当てられているサービスのみを表示できるようになります。

Dialog with authorization settings.

ちなみに、これは、サービスに独自の連絡先グループが割り当てられていない場合に、サービスがホストの連絡先グループを継承することとはまったく関係がありません。 その場合は、ユーザーがサービスの連絡先となり、その通知を受信することになります

4.3. ホストおよびサービスグループ

グローバルAuthorization settings の2番目のオプションは、ホストグループとサービスグループに関するものです。 通常、グループには、そのグループのエレメントが1つ以上表示されていると表示されますが、その場合は、そのグループには、ユーザーに表示されているエレメントのみが含まれているように見えます。

Strict - Visible if all members are visible に切り替えると、少なくとも 1 つのホストまたはサービスの連絡先ではないすべてのグループが非表示になります。

この 2 つの表示設定は、通知には影響しませんのでご注意ください。

5. 通知

連絡先割り当ても通知に影響します。 Checkmk は、問題が発生した場合に、影響を受けるホストまたはサービスのすべての連絡先に通知が送信されるように事前設定されています。 これは、新しいサイトを作成すると自動的に生成されるグローバル通知ルールによって行われます。 これは非常に便利な機能です。

ただし、必要に応じて、ルールを適応させたり、さらにルールを追加したりして、極端な場合、連絡先グループとはまったく独立して通知を行うようにすることができます。 この一般的な理由は、ユーザーが特定の通知を受信したくない場合、またはその逆で、直接責任がない(したがって明示的な連絡先ではない)個々のホストやサービスの問題について通知を受けたい場合です。

Checkmk が提供するグローバル通知ルールの詳細については、初心者ガイドをご覧ください。

6. 役割と許可

6.1. 事前定義された役割

Checkmk は、ユーザーに権限を直接付与することはなく、常に役割を通じて付与します。 役割とは、権限のリストにすぎません。 役割は、ホストやサービスへの参照ではなく、権限のレベルを定義するものであることを理解しておくことが重要です。 そのためのものが連絡先グループです。

Checkmk には、削除することはできませんが、必要に応じてカスタマイズできる、以下の定義済みロールが備わっています。

ロール名 別名 権限 機能

admin

管理者

すべての許可、特に許可を変更する権限。

監視システム自体を管理する Checkmk 管理者です。

user

通常の監視ユーザー

自分のホストおよびサービスのみを表示でき、web インターフェイスではこれらの共有フォルダでのみ変更を行うことができ、通常、他のユーザーに影響を与える操作は一切行えません。

監視にアクセスし、通知に対応する通常の Checkmk ユーザーです。

agent_registration

エージェント登録ユーザー

TLS 暗号化データ転送のために、ホストのCheckmk エージェントをCheckmk サーバーに登録する許可のみ。

この役割は、最小限の権限で登録を行うオートメーションユーザー agent_registration に割り当てられます。 Checkmk CloudおよびCheckmk MSPでは、この役割には、ホストを自動的に作成するための追加の許可が含まれています。

guest

ゲストユーザー

すべての情報を閲覧できますが、変更はできません。

ゲストは「閲覧」のみを目的としており、すべてのゲストは共通のアカウントを共有します。 壁に貼って「公開」ステータスモニターとして使用する場合にも便利です。

no_permissions

no_permissions

何もできません。

この役割は直接割り当てるためのものではありません。 その代わりに、必要な最小限の許可のみを持つ新しい役割を作成するために使用できます。 将来、Checkmk のバージョンで新しい許可が追加されたり、既存の許可が変更されたりした場合でも、no_permissions から派生した役割は、予期しない新しい許可を取得することはありません。

ロールは、Setup > Users > Roles & permissions で管理されます。

List of user roles.

ちなみに、新しい Checkmk サイトを作成すると、Checkmk インターフェースへのログイン用に、Administrator ロールを持つユーザー (cmkadmin) が 1 人だけ作成されます。 その他の可能なロールは、当面は使用されません。 ゲストユーザーが必要な場合は、ご自身で作成する必要があります。

6.2. 既存の役割のカスタマイズ

通常どおり、 をクリックすると、役割の編集モードに移動します。

List of permissions for a user role.

さまざまな許可の意味(ここでは抜粋を表示)は、インラインヘルプで確認できます。

ここでの特別な機能は、各許可について 3 つの選択肢があることです。yesnodefault (yes) 、またはdefault (no) です。 インストール時には、すべての値がdefault に設定されています。 認可自体に関しては、yes またはdefault (yes) のいずれを設定しても違いはありません。 ただし、Checkmk の新しいバージョンをインストールすると、デフォルト値が変更される場合があります (ただし、これはごくまれです)。 その場合、明示的に設定した設定はインストールによって影響を受けません。

さらに、この原則により、Checkmk のインストールが標準から逸脱している箇所を非常に迅速に認識することができます。

6.3. 独自の役割の定義

新しいロールを作成するためのボタンがないことに驚かれるかもしれません。 これには意図的な理由があります。 新しいロールは、Clone を使用して既存のロールから派生させて作成します。 新しいロールは単にコピーとして作成されるのではなく、元のロールとの関係(Based on role )が保持されます。

Basic properties of a newly created user role.

この接続には重要な機能があります。 クローンした役割に対して明示的に設定されていないすべての許可 (つまり、default に設定されているままの許可) は、元の役割から継承されるからです。 その後、元の役割に変更を加えると、その変更はクローンした新しい役割にも反映されます。 元のロールにどれだけの許可があるかを考えると、これは非常に実用的です。 単純なコピーでは、自分で定義した自分のロールの特別な点を簡単に失ってしまう可能性があります。

この派生機能により、別の問題も解決されます。 Checkmk は開発が続けられているため、新しい許可が継続的に追加されています。 そのたびに、新しい許可を 3 つのロール(AdministratorNormal monitoring userGuest user )のどれに割り当てるかを決定する必要があります。 独自の役割は、あらかじめ定義された役割のいずれかから派生しているため、新しい許可は自動的に適切な値に事前設定されます。 たとえば、独自のユーザー役割を定義した場合、その役割に新しい許可が常に欠落していると、非常に不便になります。 ユーザーが新しい機能を使用できるようにするには、新しい機能ごとに役割を調整する必要があります。

6.4. マトリックスビューでのロールの比較

個々のロールの権限を比較したい場合は、Setup > Users > Roles & permissions > Roles > Permission matrix からアクセスできるマトリックスビューが役立ちます。 このメニューオプションを選択すると、以下のビューが表示され、個々のロールの権限を比較できるだけでなく 、権限が明示的に設定されている ( ) または削除されている ( ) 場所も確認できます。

Matrix view with comparison of user roles.

7. 個人設定

各ユーザーは、自分のプロファイルに関するユーザー設定の一部を管理することができます。 利用可能なすべてのオプションの詳細については、ユーザーインターフェースに関する記事をご覧ください。

分散監視に関する追加情報: 分散環境では、新しい設定はすべての監視サイトに即座に転送されます。 これにより、特に、新しく割り当てられたパスワードが、変更をアクティブにした後ではなく、すぐにどこでも機能するようになります。 ただし、これはその時点でネットワーク経由でアクセス可能なサイトでのみ機能します。 その他のサイトは、変更をアクティブにした次の回に更新を受け取ります。

8. 特別ユーザー

これまで、「通常のユーザー」の作成方法について説明してきました。 しかし、さまざまな理由により、特別な権限や機能を持つユーザーも存在します。

その例としては、 管理者や オートメーションユーザーなどが挙げられます。 これらの特別な機能については、以下で詳しく説明します。

8.1. 管理者

Checkmk をインストールすると、前述のように、デフォルトで管理者が作成されます。 この管理者の名前はcmkadmin です。 この管理者を使用して作業を続行することもできますが、このデフォルトの管理者を使用しない場合もあるでしょう。 たとえば、社内の規則により、複数の管理者を定義したい場合や、OWASP アプリケーションセキュリティ認証基準 (ASVS) などのセキュリティに関する推奨事項に準拠したい場合などです。

まず、管理者は他のユーザーと同様のユーザーです。 したがって、設定環境の「ユーザー管理」の章で説明したように作成します。 ただし、選択した役割によってユーザーに割り当てられる権限が優先されます。

Selecting the Administrator role for a user.

ユーザーを作成する際に、Administrator ロールを選択してください。 その他の設定も、個人の好みや社内の規定に従って、管理者に対して行います。

8.2. オートメーションユーザー (web サービス用)

Checkmk を他のシステムに接続する場合、通常は GUI を通じて行われる特定の作業を自動化したい場合がよくあります。 その例としては、次のようなものがあります。

このような場合、外部ソフトウェアは Checkmk インターフェースから特定の URL を自動的に取得できる必要があります。 もちろん、ユーザーがどのようにログインするかという問題も発生します。 通常のログインダイアログによる方法は面倒で、複数の URL を順番に取得し、クッキーを保存する必要があります。

これを簡略化するために、Checkmkではオートメーションユーザーの概念が用意されています。 これらのユーザーは、リモートコントロール専用であり、GUI による通常のログインは許可されません。 認証は、HTTP 基本認証によって行われます。

オートメーションユーザーは、TLS 暗号化データ転送のためにエージェントを Checkmk サーバーに登録するために、各 Checkmk サイトにすでに設定されています。 その他のタスクには、通常、役割「administrator.」を持つオートメーションユーザーを追加で作成することができます。 オートメーションユーザーは、通常のユーザーと同じように作成しますが、通常のパスワードではなく、オートメーションパスワード(Automation secret )を割り当てます。 このパスワードは、cube を使用して自動的に作成することができます。

Automation user security settings.
Important

HTTP 基本認証では、デフォルトでオートメーションパスワードをプレーンテキストで入力する必要があります。 これを行うには、オプションStore the secret in cleartext.を設定します。パスワードは、サイトディレクトリの~/var/check_mk/web/<username>/automation.secret に保存されます。 これは、オートメーションパスワードを使用するすべてのルールおよびスクリプトに必要です。

オートメーションユーザーは、通常のユーザーと同様に役割を持ち、連絡先にも設定できます。 これにより、ホストやサービスの許可や表示を必要に応じて制限することができます。

Web ページを自動的に取得するには、HTTP 基本認証のヘッダを入力します。これは、基本的に次のようになります。Authorization: Basic 1234567890abcdef 。 文字列は、username:password の Base64 エンコードされたフォームです。

オートメーションユーザーautomation およびそのオートメーションパスワードを使用して、JSON 形式でビューを取得する例を以下に示します。Base64 エンコードは curl によって行われます。

root@linux# curl --user automation:a8075a39-e7fe-4b5c-9daa-02635 'http://moni01.mycompany.net/mysite/check_mk/view.py?view_name=svcproblems&output_format=json'
 [
  "service_state",
  "host",
  "service_description",
  "service_icons",
  "svc_plugin_output",
  "svc_state_age",
  "svc_check_age",
  "perfometer"
 ],
 [
  "CRIT",
  "stable",
  "Filesystem /",
  "menu pnp",
  "CRIT - 96.0% used (207.27 of 215.81 GB), (warn/crit at 80.00/90.00%), trend: +217.07 MB / 24 hours",
  "119 min",
  "30 sec",
  "96%"
 ],
 ...

URL を取得するスクリプトが監視サイトで直接実行されている場合は、ファイルシステムからユーザーのオートメーションパスワードを直接読み込むことができます。 これはセキュリティ上の脆弱性ではなく、意図的なものです。 オートメーションパスワードを含める必要がなく、設定ファイルも不要なオートメーションスクリプトを作成することができます。 これを行うには、~/var/check_mk/web/myuser/automation.secret ファイルを読み込んでください。

OMD[mysite]:~$ cat var/check_mk/web/automation/automation.secret
a8075a39-e7fe-4b5c-9daa-02635

このファイルの内容は、後でスクリプトで読み込めるように、シェル変数に簡単に保存することができます。

OMD[mysite]:~$ SECRET=$(cat var/check_mk/web/automation/automation.secret)
OMD[mysite]:~$ echo "$SECRET"
a8075a39-e7fe-4b5c-9daa-02635

9. URL による自動ログイン

Important

セキュリティ上の理由から、Checkmk2.2.0 以降、ブラウザの URL による自動ログインは使用不能になっています。 これは、URL 経由で渡される認証情報 (ユーザー名とパスワード) が、サイト固有の Apache のログファイルに保存されるためです (Werk #14261 を参照してください)。 このセキュリティリスクにもかかわらず、URL による自動ログインを使用したい場合は、 グローバル設定で明示的に有効にする必要があります。Setup > General > Global settings > User interface > Login via GET requests.

これまで見てきたように、オートメーションユーザーを使用すると、ログインすることなく、スクリプトを使用して任意の URL を取得することができます。 ただし、ブラウザに実際にログインする必要がある場合、この方法は機能しません。これは、含まれているリンク(画像やインラインフレームなど)のログインデータが渡されないためです。

この最たる例は、特定の Checkmk ダッシュボードを壁に常時表示するモニターを設置したい場合です。 このモニターは、起動時に自動的にブラウザを開き、Checkmk にログインして必要なダッシュボードを呼び出すコンピュータによって制御されます。

これを実現するには、まずこの目的専用のユーザーを作成することをお勧めします。Guest user ロールは、すべての読み取り権限を付与しますが、変更や介入は許可しないため、この機能に最適です。

自動ログイン用の URL は、次のように構成します。

  1. 次のように開始します:http://mycmkserver/mysite/check_mk/login.py?_origtarget=

  2. ブラウザで(できればナビゲーションをオフにして)表示する実際の URL(ダッシュボードの URL など)を決定します。これは、Display > Show page navigation をオフにすることで実行できます。

  3. この URL に、/mysite/ 部分以前の部分を省略して追加します。

  4. URL の最後に、次のフォームで 2 つの変数_username および_password を追加します。&_username=myuser&_password=mysecret

  5. もう1つの&_login=1 を追加してください。

以下にそのような URL の例を示します:

http://mycmkserver/mysite/check_mk/login.py?_origtarget=/mysite/check_mk/dashboard.py?name=mydashboard&_username=myuser&_password=mypassword&_login=1

注意:

  • この例では、mycmkservermysitemyuser 、およびmypassword の値を、適切な値に置き換えてください。 オートメーションユーザーは、GUI によるログインが許可されていないため、myuser として使用することはできません。

  • これらの値のいずれか、または_origtarget の値に特殊文字& または% が含まれる場合、次のように置き換えてください:&%26 に、%%25 に置き換えてください。

Checkmk からブラウザをログアウトし、作成した URL をブラウザのアドレスバーにコピーして、全体をテストしてください。 その後、ログインダイアログが表示されずに、直接ターゲットページに移動する必要があります。 同時にログインされ、ページに含まれるリンクを直接呼び出すことができます。

コマンドラインでcurl を使用して、完成した URL を試すこともできます。 すべて正しく実行すると、HTTP ステータスコード302 FOUND が表示され、次の短縮出力のように、指定したLocation にリダイレクトされます。

OMD[mysite]:~$ curl -v 'http://mycmkserver/mysite/check_mk/login.py?_origtarget=/mysite/check_mk/dashboard.py?name=mydashboard&_username=myuser&_password=mypassword&_login=1'
...
< HTTP/1.1 302 FOUND
...
< Location: /mysite/check_mk/dashboard.py?name=mydashboard
...

この成功を確認するメッセージが表示されたにもかかわらず、ブラウザに目的のビューが表示されない場合は、Locationで指定した URL をチェックしてください。この URL が間違っている場合でも、curl は HTTP ステータスコード302 FOUND を返します。

ログインデータが間違っている場合、HTTP ステータスコード200 OK が返されます が、以下の省略出力のように、ログインページの HTML コードのみが表示されます。

OMD[mysite]:~$ curl -v 'http://mycmkserver/mysite/check_mk/login.py?_origtarget=/mysite/check_mk/dashboard.py?name=mydashboard&_username=myuser&_password=NOT&_login=1'
...
< HTTP/1.1 200 OK
...
<!DOCTYPE HTML>
<html><head><meta content="text/html; ...
...
</script>
<script type="text/javascript">
cmk.visibility_detection.initialize();
</script>
</body></html>

10. フォルダへの許可の割り当て

10.1. 「Normal monitoring user 」ロールの機能

管理する監視環境がやや大規模な場合は、他の管理者にも設定、特にホストおよびサービスの管理に関わってもらいたいでしょう。 変更を行うことができるユーザーやそのユーザーに許可する操作を管理し、ユーザー同士が互いに作業を妨害し合うことを防ぐために、フォルダに基づいて Checkmkセットアップの許可を割り当てることができます。

そのための最初のステップは、管理者同僚に、Normal monitoring user ロールに基づいて各自のユーザーを管理してもらうことです。

この役割には、基本的に設定環境の認可権限がありますが、いくつかの重要な制限があります。

  • ホスト、サービス、ルールBI アグリゲーションの変更のみ許可されます。

  • ホスト、サービス、およびルールは、共有フォルダでのみ管理できます。

  • BI アグリゲーションは、共有 BI パックでのみ管理できます。

  • グローバルな影響を与える変更は一切許可されません。

フォルダや BI パックをまだリリースしていない場合、Normal monitoring user ロールを持つユーザーは、最初は変更を行うことができません。 通常の監視ユーザー用のシンプルな「Setup 」メニューは、次のとおりです。

Setup menu for normal monitoring users in Checkmk Raw.
Checkmk Raw の通常の監視ユーザー用のセットアップメニュー

10.2. ユーザーにホストの管理を許可する

ユーザーは、連絡先グループを介してホストを作成、編集、削除する認可を受けます。 手順は次のとおりです。

  1. ユーザーを連絡先グループに追加します。

  2. ユーザーに認可する 1 つ以上のフォルダを指定します。

  3. これらのフォルダに対して「Permissions 」プロパティを有効にし、ここで連絡先グループを選択します。

次の例は、連絡先グループ「Linux 」のすべてのユーザーがホストを管理できるフォルダのプロパティを示しています。 サブフォルダでもこれを許可するオプションが有効になっています。

Folder properties with the shared contact group Linux.

連絡先グループにホストを自動的に含めるかどうかは、ユーザーで決定できます。 この例では、[Add these groups as contacts to all hosts in this folder ] オプションは設定されておらず、ホストは連絡先グループ [Linux] に追加されません。 つまり、監視環境では、連絡先グループ [Linux ] にはホストは表示されません (ルールで指定している場合を除く)。 このように、設定環境の表示 (および監視における責任) と認可は個別に設定できます。

11. パスワード

11.1. パスワードのセキュリティ

セキュリティは、今日、最優先事項のひとつです。 そのため、一部の企業では、パスワードの取り扱いに関する一般的なガイドラインを定めています。 Checkmk では、このようなデフォルト設定を適用するためのいくつかの設定を用意しています。 その一部は、Global settings > User management > Password policy for local accounts にあります。

Dialog for password rules.

最初のオプションMinimum password length は、パスワードの品質を確保するためのものです。

2つ目のオプション「Number of character groups to use 」では、合計4つの文字グループが設定されています:

  • 小文字

  • 大文字

  • 数字

  • 特殊文字

ここに「4 」と入力すると、パスワードには上記の各グループから少なくとも 1 文字ずつ含まれている必要があります。2 を使用すると、たとえば、パスワードが小文字だけで構成されていないことを確実に防止できます。 これらの設定は、パスワードが変更されるたびにチェックされます。

3 番目のオプション「Maximum age of passwords 」を選択すると、ユーザーは定期的にパスワードを変更する必要があります。 指定した時間が経過すると、次のページにアクセスすると、ユーザーに次のプロンプトが表示されます。

Forced password change dialog.

ユーザーは、パスワードを変更してからでないと続行できません。

最初のログイン時に初期パスワードの変更を要求することができます。 これは、各ユーザーのプロパティの「Security 」セクションにある「Enforce change: Change password at next login or access 」オプションで設定します。

11.2. ログインポリシー

Global settings > User management には、ユーザーのログインを規制するその他のグローバル設定があります。

無効なログイン後のロック

Lock user accounts after N logon failures 設定では、一連のログインの試みが失敗した場合にアカウントをロックすることができます。

Dialog for automatic login deactivation.

ロックの解除は、Administrator ロールを持つユーザーのみが行えます。 管理者として、Setup > Users > Users 、そしてロックされたユーザーのプロパティから、他のユーザーのロックを解除することができます。 管理者アカウントもロックされることにご注意ください。 最後の管理者、または唯一の管理者として永久的にロックされた場合、アカウントのロックを解除するにはコマンドラインを使用する必要があります。 これを行うには、サイトユーザーとして~/etc/htpasswd ファイルを編集し、影響を受けるユーザーの行から感嘆符を削除します。ここではmyuser です。

OMD[mysite]:~$ cat etc/htpasswd
agent_registration:$2y$12$83XzYwtQJVFizC...
automation:$2y$12$zKF4Sasws7rDJCByZ1r5ke...
cmkadmin:$2y$12$ZmE96frGSm9sdWiWRXtxbuyu...
myuser:!$2y$12$8FU93yH7TFTyJsyUvKCh1eqYJG..
OMD[mysite]:~$ vim etc/htpasswd
...
OMD[mysite]:~$ cat etc/htpasswd
agent_registration:$2y$12$83XzYwtQJVFizC...
automation:$2y$12$zKF4Sasws7rDJCByZ1r5ke...
cmkadmin:$2y$12$ZmE96frGSm9sdWiWRXtxbuyu...
myuser:$2y$12$8FU93yH7TFTyJsyUvKCh1eqYJG...

その後、再度ログインできます。

自動ログアウト

Session management ボックスでは、セッションを終了する2つの異なる方法を指定し、これらを組み合わせることができます。 1つはセッションの継続時間、もう1つはユーザーのアクティビティに応じて終了します。

Maximum session duration は、設定された期間が経過するとセッションを自動的に終了します。 これにより、セッションが無限にアクティブなままになることがなくなるため、セッションが外部から使用されるリスクが軽減されます。

Session termination dialog.

定義されたセッション時間が経過すると、セッション終了時にユーザーがアクティブであったかどうかに関係なく、ユーザーは再度ログインする必要があります。 同時に、Advise re-authentication before termination を使用して、セッションが「強制的に」終了する前に、ユーザーにエントリの保存、ログアウト、および再ログインを通知するタイミングを指定することができます。

Warning before session termination.

Set an individual idle timeout 設定は、ユーザーが GUI を一定期間積極的に使用しなかった場合に、セッションを終了します。 たとえば、Checkmk からログアウトせずにワークステーションを一時的に離れた場合などです。 このタイムアウトは、GUI を積極的に使用することで停止できます。 ただし、定期的に再読み込みされるビューを開いているだけでは不十分です。

複数のログインの防止

Limit login to single session at a time 設定は、ユーザーが 2 つのブラウザで同時に Checkmk にログインすることを防止します。

Dialog to limit the number of sessions.

このオプションは、非アクティブの場合に自動的にログアウトするタイムアウトにもリンクされています。 この機能も有用です。 ブラウザを閉じる前にワークステーションからログアウトするのを忘れた場合を考えてみましょう。 この状況では、タイムアウトを設定していないと、外出先から自宅にログインすることができません。 ブラウザを閉じたり、コンピュータの電源を切ったりしても、自動的にログアウトはされないからです。

同時に 2 回目のログインを試みると、次のエラーメッセージが表示されます。

Locked login dialog with notification of an already active session.

この場合、既存のセッションを強制的に終了するか、タイムアウトを待つまで、ログインは実行できません。

11.3. 二要素認証

Checkmk サイトのセキュリティを強化するため、Checkmk では各ユーザーに二要素認証機能を提供しています。 この二要素認証は、FIDO2/WebAuthn インターネット標準に基づいています。 認証は、従来通り、知識(パスワード)と所有物(認証要素)に基づいて行われます。

お使いのブラウザおよびオペレーティングシステムでサポートされている FIDO2 互換のハードウェアを使用できます。 YubiKey などの USB または NFC トークンが最も広く使用されています。 あるいは、時間ベースのワンタイムパスワード(TOTP)を生成する認証アプリ(スマートフォンなど)を使用することもできます。

Checkmk サーバーの要件

WebAuthn 規格の仕様により、二要素認証を使用するには 3 つの前提条件があります。

  • Checkmk web インターフェイスはHTTPS で保護されています

  • Web アドレスは、単純なホスト名または完全修飾ドメイン名として、いずれの場合も有効なドメインアドレスとして指定する必要があります。

  • URL は常に同じ形式で入力する必要があります。例:https://www.mycompany.com/mysite

セットアップ

ユーザーメニューから二要素認証にアクセスします

Selecting two-factor authentication from the User menu.

2 番目の要素を追加するための、鍵のアイコンが付いた 2 つのオプションが表示されます。 ワンタイムパスワードを生成するアプリを設定する場合は「Register authenticator app 」、ハードウェアトークンを使用する場合は「Register security token 」を選択します。

Setup page for two-factor authentication.

Checkmk は、お使いのコンピュータで使用可能な認証オプションを認識します。 ブラウザウィンドウに小さなダイアログが開き、認証要素を指定します。 ハードウェアトークンを使用している場合は、ボタンをタッチするとセットアップが完了します。 ワンタイムパスワードを使用する場合は、まず、認証アプリで表示された QR コードをスキャンし、アプリで生成したコードを確認のために入力します。 どちらの場合も、セッションはシームレスに続行されます。

ログイン

これにより、今後のログイン試行では、Checkmk で二要素認証が有効になります。 まず、通常どおりユーザー名とパスワードを入力してください。 次に、2 番目のログインダイアログが表示されます。

Logging in with the second authentication factor.

認証要素を有効にすると、通常どおり Checkmk を使用できます。

バックアップコードの作成と使用

認証要素が手元にない場合は、バックアップコードを入力することもできます。

そのためには、Generate backup codes を使用して、User > Two-factor authentication ページでバックアップコードのリストを事前に作成しておいてください。

Display of created backup codes.

これらのコードは安全な場所に保管してください。

バックアップコードを生成すると、2 回目のログインダイアログTwo-factor authentication に追加オプション「Use backup code 」が表示されます。 バックアップコードを使用して Checkmk にログインする場合は、このオプションをクリックしてください。 2 回目のログインダイアログが置き換えられ、バックアップコードを入力できるようになります。

Prompt to enter the backup code.

管理者として二要素認証をチェックおよび無効にする

管理者として、ユーザー管理 (Setup > Users > Users) で、Authentication 列のエントリを確認することで、二要素認証が設定されているユーザーを確認できます。

View of two-factor authentication in user management.

これらのユーザーのうち、ハードウェアトークンを紛失または破損したために Checkmk にアクセスできなくなったユーザーがいる場合は、そのユーザーの二要素認証を削除することができます。 これを行うには、ユーザー管理でをクリックして、該当するエントリを開きます。User > Remove two-factor authentication で、このユーザーの二要素認証を削除します。

Removing the two-factor authentication.

確認ダイアログで承認すると、ユーザーはユーザー名とパスワード「のみ」を使用して Checkmk web インターフェイスに再びログインできるようになります。

管理者による二要素認証の強制

「セットアップ」セクションで説明したように、各ユーザーは自分の Checkmk アカウントで二要素認証を有効にすることができます。 管理者は、このオプション機能を、自分の管理下にあるユーザーに対して必須にするオプションがあります。 二要素認証は、Enforce two factor authentication オプションを使用して、ある役割のすべてのユーザー、あるいはすべてのユーザーに対して強制することができます。

役割に対して二要素認証を強制するには、Setup > Users > Roles & permissions, を開き、役割の鉛筆アイコンをクリックして、Enforce two factor authentication のチェックボックスを有効にします。Basic properties 。 このオプションは、Setup > General > Global settings > User management.ですべてのCheckmk ユーザーに対して設定できます。 グローバル設定として有効化すると、役割ベースの設定が優先されます。

二要素認証を有効にする必要があるユーザーで、まだ二要素認証を設定していないユーザーは、ユーザー名とパスワードを入力してログインすると、Two-factor authentication ページにリダイレクトされます。

“The forced setup of two-factor authentication.”

2 番目の要素として利用可能な 2 つのオプションのうち、いずれかが設定されている場合にのみ、ユーザーは Checkmk ユーザーインターフェースにリダイレクトされます。

11.4. コマンドラインを使用してパスワードを変更する

緊急時には、コマンドラインからパスワードを変更することもできます。 これにより、cmkadmin のパスワードを紛失した場合でも対応できます。 もちろん、その前提条件として、Checkmk サーバーに Linux ユーザーとしてログインでき、omd su mysite でサイトユーザーになることができることが必要です。

パスワードは、前述のように ~/etc/htpasswd ファイルに保存されています。

パスワードの変更は、cmk-passwd コマンドで行います。 このコマンドでは、既存のパスワードは要求されませんcmk-passwd は、Checkmk の最新バージョンでパスワードを保存するために、常に安全な暗号化方法を選択します。 現在、cmk-passwd はこのために bcrypt を使用しています。 暗号化されていない、または暗号化が弱いパスワード (MD5 など) では、GUI へのログインはできません。

OMD[mysite]:~$ cmk-passwd cmkadmin
New password: secret
Re-type new password: secret

12. カスタムユーザー属性

電子メールアドレスのフィールドに加えて、ユーザーに通知するための「Pager address 」フィールドも使用できます。 これだけでは不十分で、ユーザーに関するさらに詳しい情報を保存したい場合は、Setup > Users > Custom user attributes > Add attribute を使用して独自のフィールドを作成し、ユーザーごとに個別の値を入力することができます。

このような新しい属性を作成すると、次のダイアログが開きます。

Dialog for custom attributes.

通常どおり、ID (Name) は後で変更できませんが、タイトル (Title) は変更できます。Topic は、新しいフィールドがユーザー設定のどのセクションに分類されるかを決定します。 さらに、ユーザーがフィールドを自分で編集できるかどうか (その場合は、ユーザーの個人設定に表示されます) および値をSetup ユーザーテーブルに直接表示するかどうかを決定できます。

Make this variable available in notifications のチェックボックスをオンにした場合のみ、この値を通知でも使用できます。 そのためには、この値を監視コア (CMC など) の変数 (いわゆる「カスタムマクロ」) に割り当てる必要があります。

カスタム変数の名前は、選択した ID から派生します。 これは大文字に変換され、CONTACT_ が前に付きます。たとえば、phoneCONTACT_PHONE になります。 変数が環境変数経由で渡される場合、変数の前にNOTIFY_ が付くことに注意してください。 独自の通知スクリプトを使用すると、変数はNOTIFY_CONTACT_PHONE として届きます。

13. ユーザーへのメッセージの書き込み

通知ルールを説明する記事ではCheckmk がホストやサービスの問題について連絡先に通知する方法について詳しく説明しています。 ただし、Checkmk システム自体のメンテナンスなど、組織内の事柄について、連絡先以外のすべてのユーザーにも通知したい場合があります。

このような目的のために、Checkmk には、通知とは完全に独立した小さなメッセージツールがビルトインされています。 このツールは、Setup > Users 、そしてUsers > Send user messages にあります。 ここでは、すべてのユーザーまたは一部のユーザーにメッセージを送信することができます。

Dialog for user messages.

メッセージには 4 種類あります。

Show popup message

ユーザーが次にページを開くと、メッセージがポップアップウィンドウで表示されます。

Show hint in the 'User' menu

ユーザーは、ナビゲーションバーの「ユーザー」メニューにある数字の記号でメッセージの存在を通知されます。

Send email

電子メールを送信します。 ただし、これはメールアドレスも設定されているユーザーにのみ届きます。

Show in the dashboard element 'User messages'

メッセージは、User messages タイプのダッシュレットに表示されます。

Message expiration を使用すると、関連性がなくなったメッセージは、まだ取得されていないうちに簡単に削除することができます。

オプション「Show hint in the 'User' menu: 」の特別な機能User messages > Received messages を使用して、ユーザーは収集したメッセージを見つけ、承認および/または削除することができます。

Overview of the user notifications.

Checkmk は、アカウントのセキュリティに関連する変更をユーザーに自動的に通知します。 これには、パスワードの変更、二要素認証(有効化、無効化、バックアップコードによるログイン、バックアップコードの作成および取り消し)などが含まれます。 ユーザーにメールアドレスが登録されている場合は、通知は E メールで送信されます。登録されていない場合は、メッセージツールで送信されます。

セキュリティメッセージは、Checkmk GUI 内の操作によってのみトリガーされます。 ユーザーはこれらのメッセージを削除することはできませんが、Setup > General > Global settings > User management > User security notification duration で表示期間を設定することができます。 デフォルトの表示期間は 7 日間です。

14. その他のトピックス

Checkmk は、より多くのログイン方法をサポートしています。

  • LDAP/Active Directoryの接続

  • SAMLによる認証

  • Kerberosによる認証

  • リバースプロキシを使用したセットアップでの認証

  • HTTP 基本認証による認証

15. ファイルおよびディレクトリ

以下のリストは、Checkmk サーバー上のユーザー管理に関連するファイルおよびディレクトリを示しています。 いつものように、ここでのエントリはすべてサイトディレクトリ(例:/omd/sites/mysite )を基準としています。

パス 機能

~/etc/htpasswd

Apachehtpasswd 形式のユーザーのパスワード。

~/etc/auth.secret

このファイルには、ログインクッキーの署名に使用されるランダムな秘密鍵が含まれています。 分散環境では、このファイルはすべてのサイトで同じである必要があります。web インターフェイスを使用してすべてを設定した場合、このファイルはすべてのサイトで同じになります。 このファイルが変更されると、すべてのログインが即座に無効になり、ユーザーは再度ログインする必要があります。 このファイルは、第三者が読み込むとログインを偽造できる可能性があるため、660 の特権ファイルです。

~/etc/auth.serials

ユーザーごとのパスワードのシリアル番号。 パスワードを変更すると、シリアル番号がインクリメントされ、現在のすべてのセッションが無効になります。 これにより、パスワードを変更すると、ユーザーが確実にログアウトされます。

~/etc/check_mk/multisite.d/wato/users.mk

設定環境で設定されたユーザーが含まれます。 ここでは、GUI のみを操作するユーザーに関するデータのみが保存されます。 このファイルを手動で変更すると、その変更はすぐに有効になります。

~/etc/check_mk/conf.d/wato/contacts.mk

設定環境で設定されたユーザーの連絡先情報。 監視コアの設定に関連するすべてのデータがここに保存されます。 連絡先として登録されているユーザーのみがここにリストされます。 手動で変更した内容を有効にするには、新しい設定をコアにロードする必要があります(例:cmk -O )。

~/var/check_mk/web

GUI に 1 回以上ログインしたユーザーには、ここにサブフォルダが作成され、カスタムビューやレポート、現在のサイドバー設定など、さまざまな情報が拡張子.mk の小さな個別ファイルとして保存されます。 これらのファイルは Python 形式です。

~/var/log/web.log

ユーザーインターフェースのログファイル。 ここでは、認証および LDAP 接続に関するエラーメッセージを確認できます。

このページでは