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 では、LDAP ベースのサービスを使用してユーザーを管理し、 ホームディレクトリからユーザーを自動的に同期し、同様に、これらのユーザーに連絡先グループ、役割、その他の属性を Checkmk で自動的に割り当てる機能を提供しています。 Checkmk は単一の LDAP ソースに限定されず、必要に応じて、ユーザーを他の接続サイトにも分散することができます。

2. LDAP 接続の設定

2.1. サーバーへの接続

LDAP 対応サーバーへの接続を作成するには、サーバーの読み取り許可を持つユーザーが必要です。 少なくとも、同期するユーザーおよびグループに対する読み取り許可が必要です。 以下の例では、このユーザーをcheck_mk とします。

Setup > Users > LDAP & Active Directory > Add connection で、新しい接続を作成できます。 フォームで、まず、接続の任意のIDGeneral Properties ボックスに入力します。 必要に応じて、Description フィールドに、わかりやすいタイトルを入力できます。ID は、常に一意であり、後で変更することはできません。 文字、数字、ダッシュ、およびアンダースコアのみで構成し、文字またはアンダースコアで開始する必要があります。

ldap new connection general properties

次に、[LDAP Connection ] で LDAP サーバー、および利用可能な場合は 1 つ以上のフェイルオーバーサーバーを定義できます。 その後、[Directory type ] を選択し、[Bind credentials] で定義した読み取りアクセス用のユーザーデータを選択するだけです。 ユーザー名には、LDAP パスをすべて入力する必要があります。 大文字と小文字は区別されません。 設定は、次のように表示されます。

ldap new connection ldap connection

Checkmk は、Active Directory 以外のディレクトリもサポートしています。 ディレクトリを OpenLDAP に変更するには、[Directory type ] フィールドで OpenLDAP を選択してください。この操作によって生じるその他の設定の変更は、ごく一部の場所でのみ行われます。

Failover Servers は、実際のサーバーにアクセスできない場合、または時間制限を超えた場合に使用されます。 これは、ローカルに独自のサーバーを使用していないが、冗長接続を作成したい場合に有用です。

Checkmk と LDAP サーバーの接続は、タイムアウトやその他の問題により LDAP サーバーにアクセスできなくなるまで、常に維持されます。 その場合にのみ、フェイルオーバーサーバーへの切り替えが行われます。 切り替え後も同様です。 接続は、フェイルオーバーサーバーが利用できなくなった場合にのみ、実際に設定されたサーバーに戻ります。

2.2. ユーザーの定義

次に、ユーザーおよびグループへのパスを定義し、フィルタを設定します。User base DN で、ユーザーを検索するパスを最初に入力します。 ここで、オペレーショナルユニット(OU) が、必要なユーザーをすべて含み、それ以外のユーザーをできるだけ含まないように設定されていることを確認してください。 クエリの対象となるユーザーが多いほど、同期のプロセスに時間がかかります。

次に、[Search scope ] オプションを設定します。 ここでは、OU およびその下位ユニットにあるすべてのユーザーを再帰的にフィルタリングしたり、この OU に直接あるユーザーに検索を制限したりすることができます。 パスにユーザーを直接入力した場合は、[Search only the entry at the base DN] を選択してください。このユーザーのみが含まれます。

Search filter オプションを使用すると、インポートするユーザーの選択をさらに絞り込むことができます。 たとえば、特定のグループに属するユーザーのみを同期したい場合は、次のスクリーンショットのように LDAP クエリを設定します。 この設定を行うには、ユーザーにmemberof 属性が設定されている必要があります。 この属性を使用せずにグループメンバーシップでフィルタリングする方法については、以下で説明します。

ldap new connection users

標準のフィルターは、memberof と組み合わせたり、他のフィルターと組み合わせることもできます:

(&(objectclass=user)(objectcategory=person)(memberof=cn=cmk-admins,ou=groups,dc=mycompany,dc=org))

Users ボックスに表示されているように、ユーザー検索にはさらにオプションがあります。User-ID attribute オプションを使用すると、ユーザーがCheckmkでログインIDとして使用する属性を指定することができます。 その後、ユーザーはサインイン時にこのログインIDを使用します。 通常、Active Directoryでは、Checkmkで標準的に使用されるsAMAccountName 属性が使用されます。 OpenLDAPでは、多くの場合、uid 属性が使用されます。

Lower case User-IDs オプションを使用すると、同期されたIDを小文字に変換することができます。 前述のように、Active Directory/LDAPは、大文字と小文字を区別しませんが、Checkmkは区別するため、このオプションを使用すると便利です。 このオプションを使用すると、この問題を解決することができます。

Umlauts in User-IDs (deprecated) オプションは互換性のためだけに提供されており、現在では使用または変更しないでください。

最後に、Create users only on login オプションを使用すると、LDAP との同期中ではなく、Checkmk にログインしたときにのみ新しいユーザーを作成することができます。

ldap new connection users search filter 2

Filter group オプションは、LDAP サーバーが Active Directoryではなくmemberof ダイナミック属性がユーザーデータで使用できない場合にのみ使用してください。 このような場合、ユーザーフィルタリングは Checkmk 自体で行われます。 このプロセスでは、後で破棄される多くのユーザーがクエリされる可能性があります。 このようなシナリオは、Checkmk の LDAP モジュールによって大部分阻止することができます。

ただし、このオプションを使用する必要がある場合は、フィルタリングするグループの完全なパスをここに指定する必要があります。

ldap new connection users filter group

2.3. グループの定義

ユーザーをグループでフィルタリングする場合は、一致を行うためにグループへのパスを定義してください。 これは、ユーザーの場合と同じ方法で実行できます。グループを直接指定する場合は、Search scopeSearch only the entry at the base DN オプションを使用できます。それ以外の場合は、OU で直接検索が行われるか、その下位ユニットも検索対象に含まれます。

ここでも、Search filter オプションを使用して、Checkmk でグループの名前を定義する方法を指定することができます。 さらに、グループのメンバーが格納されている属性の名前 (Member attribute) を指定することもできます。 Checkmk は、デフォルトでmember を使用します。 OpenLDAP では、uniqueMember も使用できます。 必要に応じてオプションを変更してください。

ldap new connection groups

2.4. 設定のテスト

これで最初のセットアップは完了です。診断のために、設定を保存し、「Save & test 」ボタンでテストすることができます。

ldap new connection diagnostics

機能する設定を作成するために、グループを指定する必要はありません。 ただし、OU に Checkmk 用のユーザーしかいない場合は、1 つ以上のグループで選択を制限することをお勧めします。

2.5. 同期間隔

最後に、ユーザーを自動的に同期する頻度も定義できます。 変更がほとんど発生しない環境では、デフォルトの設定は厳しすぎるかもしれません。 ただし、変更が Checkmk に迅速に反映されるように、時間枠は長すぎないようにしてください。

ldap new connection other

同期は、Setup > Users > Users > Synchronize users でいつでも手動で開始できます。 さらに、ユーザーがログインを試み、まだ同期されていない場合は、必要に応じてユーザーが同期されます。

3. 属性の自動割り当て

3.1. 連絡先グループ

すべてのユーザーを自動的に作成できるとしても、それらを連絡先グループに手動で割り当てる必要がある場合、その機能はあまり意味がありません。 Checkmk には、LDAP サーバーのグループを使用して連絡先グループに割り当てる機能があります。 この機能を使用するには、Attribute sync plugins > Contactgroup Membership オプションを有効にしてください。

ldap new connection contactgroup membership

割り当てを成功させるには、LDAP サーバー上のグループ名 (cn) が Checkmk のグループ名と一致している必要があります。つまり、oracle_admins グループは、LDAP のoracle_admins グループにも属しているユーザーにのみ割り当てられます。 代わりに、oracle-admins またはORACLE_admins グループに属している場合は、割り当ては機能しません。 したがって、この状況で問題が発生しないように、正しい構文を使用し、大文字と小文字の使い分けに注意してください。

ネストされたグループ

Checkmk では、継承グループを使用することもできます(現在は Active Directory のみ)。 たとえば、ユーザーがoracle_admins グループに属し、このグループがcmk-user のメンバーである場合は、このオプションを有効にしてください。

他の接続のグループ

Checkmk で複数の LDAP 接続が作成されている場合、他のソースのグループも割り当てに利用することができます。 これは、1 つの一般的な接続が設定されており、他の接続は特定のグループのみにフィルタリングされている場合に有用です。

3.2. ロール

ロールも同様の方法で自動的に割り当てることができ、ここでもネストされたグループ機能を使用できます。 各ロールには、1 つ以上のグループを定義できます。 接続を作成するロールを選択し、グループのフルパスを入力します。 デフォルトでは、グループフィルタで見つかったグループが検索されます。 ただし、他の接続も検索して、そこで見つかったグループを使用することができます。 検索する接続をリストから選択します。

ldap new connection roles

上の画像の設定では、指定したグループ内のすべてのユーザーは、ユーザーフィルターによって同期されている限り、Administrator ロールに割り当てられます。 スクリーンショットにあるように、独自に設定したロールも選択して LDAP グループに接続することができます。 3.3. その他の属性

3.3. その他の属性

その他のユーザー情報を同期するには、原則として、Attribute Sync Plugins で関連するプラグインを有効にするだけで十分です。 場合によっては、情報を提供する属性の入力も必要です。 以下は、プラグインと使用される属性(手動で設定していない場合)、およびそれらの簡単な説明の一覧表です。 一部の属性は、ユーザーの[ユーザー] メニューにもあります。

プラグイン 属性 構文 可能な値 説明

Alias

cn

文字列

通常はユーザーの氏名です。

Authentication Expiration

pwdlastset

間隔

ユーザーがログアウトまたはロックアウトされるタイミング。

Disable notifications

disable_notifications

ブール

True,False

True ユーザーへのすべての通知を無効にします。

Email address

mail

ユーザーのメールアドレス。

Mega menu icons

icons_per_item

文字列

None,entry

メガメニューで、トピックごとに緑色のアイコン (None) または各メニュー項目ごとに色付きアイコン (entry) を表示します。

Navigation bar icons

nav_hide_icons_title

文字列

None,hide

ナビゲーションバーにアイコンのみ (hide) またはアイコンとタイトル (None) を表示します。

Pager

mobile

文字

指定の電話/ポケットベルの連絡先番号。

Show more / Show less

show_mode

文字

default_show_lessdefault_show_moreenforce_show_more

ユーザーインターフェースに、少なく (default_show_less)、多く (default_show_more)、または常にすべて (enforce_show_more) を表示します。少なく表示および多く表示モードの詳細については、ビギナーズガイドをご覧ください。

Sidebar position

ui_sidebar_position

文字列

None,left

サイドバーを右側 (None) または左側 (left) に表示します。

Start URL to display in main frame

start_url

文字

例:view.py?view_name=allhosts またはdashboard.py

スタートページの URL。

Temperature unit

temperature_unit

文字列

celsius,fahrenheit

グラフおよびパーフオメーターに表示する温度の単位(摂氏または華氏)。

User interface theme

ui_theme

文字列

facelift,modern-dark

ユーザーインターフェースのテーマ:ダーク (modern-dark) またはライト (facelift)。

Visibility of hosts/services

force_authuser

ブール

True,False

すべてのホストおよびサービス (False) を表示するか、ユーザーが連絡先として割り当てられているもの (True) のみを表示します。

4. 分散環境における LDAP

セントラルセットアップによる分散監視を設定する場合、リモートサイトから LDAP 接続を同期するかどうか、および同期する接続を指定することができます。 特に指定がない場合、リモートサイト自体が、設定された接続のすべてのユーザーを同期します。 これにより、変更は定義された時間枠内にすべてのサイトに自動的に反映され、まずセントラルサイトからリモートサイトにコピーする必要はありません。 同期は、特定の接続に制限したり、完全に無効にしたりすることもできます。 後者の場合、セントラルサイトのユーザーは LDAP 接続から取得され、変更をアクティブにしてリモートサイトにコピーされます。

設定は、接続の [Properties ] の [Setup > General > Distributed monitoring ] で設定できます。 以下は、上記で設定した接続が選択されている例です。

ldap distributed monitoring sync ldap

5. SSL を使用して LDAP を保護する

LDAP 接続を SSL で保護するには、接続データで [Use SSL ] チェックボックスを有効にし、TCP port (通常、LDAP の SSL では636 )と一致させるだけです。

ldap new connection ldap connection ssl

LDAP サーバーが信頼できる認証機関によって署名された証明書を使用している場合、暗号化された接続を確立するために必要なすべての設定はすでに完了しています。

自己署名証明書を使用する場合は、証明書を証明書ストアにインポートしてからでないと接続を確立できません。 そうして初めて、その証明書は信頼できるものと分類され、接続が確立されます。

これを行うには、Setup > General > Global settings > Site management > Trusted certificate authorities for SSL にアクセスしてください。 「Add new CA certificate or chain 」をクリックし、CRT または PEM ファイルの内容を貼り付けるか、Upload CRT/PEM File を選択して同じ操作を行ってください。

ldap add new ca certificate

6. エラー診断

エラー診断は、設定設定で直接実装されています。 セットアップ後も、ここでエラーの原因となる可能性のある箇所をチェックすることができます。 エラーメッセージは、web.log にも追加で書き込まれます。 これらのメッセージも、エラーの原因となる箇所を示す場合があります。

~/var/log/web.log
2020-09-19 16:03:17,155 [40] [cmk.web 31797] /ldaptest/check_mk/wato.py Internal error: Traceback (most recent call last):
  File "/omd/sites/ldaptest/share/check_mk/web/htdocs/wato.py", line 6563, in mode_edit_ldap_connection
    state, msg = test_func(connection, address)
  File "/omd/sites/ldaptest/share/check_mk/web/htdocs/wato.py", line 6506, in test_group_count
    connection.connect(enforce_new = True, enforce_server = address)
  File "/omd/sites/ldaptest/share/check_mk/web/plugins/userdb/ldap.py", line 274, in connect
    ('\n'.join(errors)))
MKLDAPException: LDAP connection failed:
ldap://myldap.mycompany.org: Can't contact LDAP server

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

ファイルパス 機能

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

セットアップで設定されたすべての LDAP 接続は、このファイルに保存されます。

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

すべてのユーザーがここで定義されます。

~/var/log/web.log

接続エラーが記録されるログファイルです。したがって、問題が発生した場合に最初に確認すべき情報源のひとつです。

このページでは