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

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

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 属性が設定されている必要があります。
この属性を使用せずにグループメンバーシップでフィルタリングする方法については、以下で説明します。

標準のフィルターは、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 にログインしたときにのみ新しいユーザーを作成することができます。

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

2.3. グループの定義
ユーザーをグループでフィルタリングする場合は、一致を行うためにグループへのパスを定義してください。 これは、ユーザーの場合と同じ方法で実行できます。グループを直接指定する場合は、Search scope でSearch only the entry at the base DN オプションを使用できます。それ以外の場合は、OU で直接検索が行われるか、その下位ユニットも検索対象に含まれます。
ここでも、Search filter オプションを使用して、Checkmk でグループの名前を定義する方法を指定することができます。
さらに、グループのメンバーが格納されている属性の名前 (Member attribute) を指定することもできます。
Checkmk は、デフォルトでmember を使用します。
OpenLDAP では、uniqueMember も使用できます。
必要に応じてオプションを変更してください。

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

機能する設定を作成するために、グループを指定する必要はありません。 ただし、OU に Checkmk 用のユーザーしかいない場合は、1 つ以上のグループで選択を制限することをお勧めします。
2.5. 同期間隔
最後に、ユーザーを自動的に同期する頻度も定義できます。 変更がほとんど発生しない環境では、デフォルトの設定は厳しすぎるかもしれません。 ただし、変更が Checkmk に迅速に反映されるように、時間枠は長すぎないようにしてください。

同期は、Setup > Users > Users > Synchronize users でいつでも手動で開始できます。 さらに、ユーザーがログインを試み、まだ同期されていない場合は、必要に応じてユーザーが同期されます。
3. 属性の自動割り当て
3.1. 連絡先グループ
すべてのユーザーを自動的に作成できるとしても、それらを連絡先グループに手動で割り当てる必要がある場合、その機能はあまり意味がありません。 Checkmk には、LDAP サーバーのグループを使用して連絡先グループに割り当てる機能があります。 この機能を使用するには、Attribute sync plugins > 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 つ以上のグループを定義できます。 接続を作成するロールを選択し、グループのフルパスを入力します。 デフォルトでは、グループフィルタで見つかったグループが検索されます。 ただし、他の接続も検索して、そこで見つかったグループを使用することができます。 検索する接続をリストから選択します。

上の画像の設定では、指定したグループ内のすべてのユーザーは、ユーザーフィルターによって同期されている限り、Administrator ロールに割り当てられます。 スクリーンショットにあるように、独自に設定したロールも選択して LDAP グループに接続することができます。 3.3. その他の属性
3.3. その他の属性
その他のユーザー情報を同期するには、原則として、Attribute Sync Plugins で関連するプラグインを有効にするだけで十分です。 場合によっては、情報を提供する属性の入力も必要です。 以下は、プラグインと使用される属性(手動で設定していない場合)、およびそれらの簡単な説明の一覧表です。 一部の属性は、ユーザーの[ユーザー] メニューにもあります。
| プラグイン | 属性 | 構文 | 可能な値 | 説明 |
|---|---|---|---|---|
Alias |
|
文字列 |
通常はユーザーの氏名です。 |
|
Authentication Expiration |
|
間隔 |
ユーザーがログアウトまたはロックアウトされるタイミング。 |
|
Disable notifications |
|
ブール |
|
|
Email address |
|
ユーザーのメールアドレス。 |
||
Mega menu icons |
|
文字列 |
|
メガメニューで、トピックごとに緑色のアイコン ( |
Navigation bar icons |
|
文字列 |
|
ナビゲーションバーにアイコンのみ ( |
Pager |
|
文字 |
指定の電話/ポケットベルの連絡先番号。 |
|
Show more / Show less |
|
文字 |
|
ユーザーインターフェースに、少なく ( |
Sidebar position |
|
文字列 |
|
サイドバーを右側 ( |
Start URL to display in main frame |
|
文字 |
例: |
スタートページの URL。 |
Temperature unit |
|
文字列 |
|
グラフおよびパーフオメーターに表示する温度の単位(摂氏または華氏)。 |
User interface theme |
|
文字列 |
|
ユーザーインターフェースのテーマ:ダーク ( |
Visibility of hosts/services |
|
ブール |
|
すべてのホストおよびサービス ( |
4. 分散環境における LDAP
セントラルセットアップによる分散監視を設定する場合、リモートサイトから LDAP 接続を同期するかどうか、および同期する接続を指定することができます。 特に指定がない場合、リモートサイト自体が、設定された接続のすべてのユーザーを同期します。 これにより、変更は定義された時間枠内にすべてのサイトに自動的に反映され、まずセントラルサイトからリモートサイトにコピーする必要はありません。 同期は、特定の接続に制限したり、完全に無効にしたりすることもできます。 後者の場合、セントラルサイトのユーザーは LDAP 接続から取得され、変更をアクティブにしてリモートサイトにコピーされます。
設定は、接続の [Properties ] の [Setup > General > Distributed monitoring ] で設定できます。 以下は、上記で設定した接続が選択されている例です。

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

LDAP サーバーが信頼できる認証機関によって署名された証明書を使用している場合、暗号化された接続を確立するために必要なすべての設定はすでに完了しています。
自己署名証明書を使用する場合は、証明書を証明書ストアにインポートしてからでないと接続を確立できません。 そうして初めて、その証明書は信頼できるものと分類され、接続が確立されます。
これを行うには、Setup > General > Global settings > Site management > Trusted certificate authorities for SSL にアクセスしてください。 「Add new CA certificate or chain 」をクリックし、CRT または PEM ファイルの内容を貼り付けるか、Upload CRT/PEM File を選択して同じ操作を行ってください。

6. エラー診断
エラー診断は、設定設定で直接実装されています。
セットアップ後も、ここでエラーの原因となる可能性のある箇所をチェックすることができます。
エラーメッセージは、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 server7. ファイルおよびディレクトリ
| ファイルパス | 機能 |
|---|---|
|
セットアップで設定されたすべての LDAP 接続は、このファイルに保存されます。 |
|
すべてのユーザーがここで定義されます。 |
|
接続エラーが記録されるログファイルです。したがって、問題が発生した場合に最初に確認すべき情報源のひとつです。 |
