2 LDAP

概要

外部LDAP 認証 を使用して、ユーザー名とパスワードを確認できます。

ZabbixのLDAP認証は、少なくともMicrosoft Active DirectoryおよびOpenLDAPで動作します。

LDAPサインインのみが設定されている場合、ユーザーはZabbixにも存在している必要がありますが、そのZabbixパスワードは使用されません。
認証に成功すると、Zabbixはローカルのユーザー名を、LDAPから返されたユーザー名属性と照合します。

ユーザープロビジョニング

LDAPユーザーに対して、JIT(just-in-time)ユーザープロビジョニングを設定できます。
この場合、ユーザーがZabbixに既に存在している必要はありません。
ユーザーがZabbixに初めてログインしたときに、ユーザーアカウントを作成できます。

LDAPユーザーがLDAPのログイン名とパスワードを入力すると、Zabbixはこのユーザーが存在するかどうかをデフォルトのLDAPサーバーで確認します。
ユーザーが存在し、まだZabbixにアカウントがない場合は、Zabbixに新しいユーザーが作成され、ログインできるようになります。

JITプロビジョニングで作成されたユーザーは、作成時点でデフォルトに設定されているLDAPサーバー(ディレクトリ)に関連付けられます。
後でデフォルトのLDAPサーバーを変更しても、すでにプロビジョニングされたユーザーに関連付けられているLDAPサーバーは変更または更新されません。

JITプロビジョニングが有効な場合は、Authentication タブでプロビジョニング解除されたユーザー用のユーザーグループを指定する必要があります。

JITプロビジョニングでは、LDAPの変更に基づいてプロビジョニング済みユーザーアカウントを更新することもできます。
たとえば、ユーザーがあるLDAPグループから別のLDAPグループに移動された場合、Zabbixでも同様にあるグループから別のグループへ移動されます。ユーザーがLDAPグループから削除された場合は、Zabbixのグループからも削除され、他のグループに属していなければ、プロビジョニング解除されたユーザー用のユーザーグループに追加されます。
プロビジョニング済みユーザーアカウントは、設定されたプロビジョニング期間に基づいて、またはユーザーがZabbixにログインしたときに更新されます。

バックグラウンドでのプロビジョニングは、ユーザーがZabbix Webインターフェースを操作しているとき、または少なくともブラウザーでWebインターフェースのページを開いているときに、Zabbix Webインターフェースによって実行されることに注意してください。
ユーザーをプロビジョニングするための専用のバックグラウンドプロセスはありません。

LDAPは、認証と検索のためにディレクトリへバインドする3つの方法をサポートしています。

  • 匿名バインド — Bind DN / Bind password が指定されておらず、LDAPサーバーが匿名クエリを許可している場合。
  • 専用のバインドユーザー(サービスアカウント) — 特定のLDAPアカウントを Bind DN / Bind password に設定し、Zabbixが検索とプロビジョニングに使用する場合。
    これは推奨される最も柔軟な方法です。Zabbixはエンドユーザーの認証情報なしで検索とバックグラウンドプロビジョニングを実行できるためです。
  • 直接ユーザーバインド — Zabbixは、ログイン時にユーザーが入力した認証情報を使用してバインドを実行します(Bind DN / Bind password は設定しません)。これは、Base DNに uid=%{user} のようなプレースホルダーを含めることで設定します。
    このモードでは、Zabbixがユーザーのパスワードにアクセスできるのは対話的なログイン中のみです。
    その結果、ユーザーのログインセッション外でLDAP認証が必要なプロビジョニング操作(たとえば、Provision now ボタンの使用や、ユーザーがアクティブにログインしていない状態でのバックグラウンドプロビジョニングの実行)は認証できないため、動作しません。
    直接ユーザーバインドでのプロビジョニングと更新は、ユーザーがログインした瞬間にのみ行われます。

複数のサーバー

必要に応じて、複数のLDAPサーバーを定義できます。
例えば、異なるユーザーグループの認証に別のサーバーを使用できます。
LDAPサーバーを設定すると、ユーザーグループの設定で、それぞれのユーザーグループに必要なLDAPサーバーを選択できるようになります。

ユーザーが複数のユーザーグループおよび複数のLDAPサーバーに属している場合、認証にはLDAPサーバーの一覧を名前の昇順で並べ替えた際の先頭のサーバーが使用されます。

設定

設定パラメータ:

Parameter Description
Enable LDAP authentication LDAP認証を有効にするには、チェックボックスをオンにします。
Enable JIT provisioning JITプロビジョニングを有効にするには、チェックボックスをオンにします。
Servers Add をクリックしてLDAPサーバーを設定します(以下のLDAPサーバー設定を参照)。
Case-sensitive login ユーザー名の大文字と小文字を区別しないログインを無効にするには、チェックボックスをオフにします(デフォルトで有効)。
大文字と小文字を区別するログインを無効にすると、たとえばZabbixユーザーが "Admin" または "ADMIN" であっても、"admin" としてログインできます。
大文字と小文字を区別するログインが無効で、類似したユーザー名(例: Admin と admin)を持つ複数のZabbixユーザーが存在する場合、それらのユーザーのログインは常に次のエラーメッセージで拒否されることに注意してください: "Authentication failed: supplied credentials are not unique."
Provisioning period プロビジョニング期間、つまりログイン中のユーザーがWebインターフェースの使用中にどのくらいの頻度でプロビジョニングされるかを設定します。

LDAPサーバーの設定

LDAPサーバーの設定パラメータ:

パラメータ 説明
名前 Zabbix設定内のLDAPサーバー名。
ホスト LDAPサーバーのホスト名、IPアドレス、またはURI。例: ldap.example.com、127.0.0.1、ldap://ldap.example.com
セキュアなLDAPサーバーの場合は、ldapsプロトコルとホスト名を使用します。例: ldaps://ldap.example.com
OpenLDAP 2.x.x以降では、ldap://hostname:portまたはldaps://hostname:port形式の完全なLDAP URIを使用できます。
ポート LDAPサーバーのポート。デフォルトは389です。
セキュアなLDAP接続のポート番号は通常636です。
完全なLDAP URIを使用する場合は使用されません。
Base DN LDAPサーバー内のユーザーアカウントへのベースパス:
ou=Users,ou=system (OpenLDAPの場合)、
DC=company,DC=com (Microsoft Active Directoryの場合)
uid=%{user},dc=example,dc=com (直接ユーザーバインディングの場合。下記の注記を参照)
検索属性 検索に使用するLDAPアカウント属性:
uid (OpenLDAPの場合)、
sAMAccountName (Microsoft Active Directoryの場合)
Bind DN LDAPサーバーへのバインドおよび検索に使用するLDAPアカウント。例:
uid=ldap_search,ou=system (OpenLDAPの場合)、
CN=ldap_search,OU=user_group,DC=company,DC=com (Microsoft Active Directoryの場合)
匿名バインディングもサポートされています。匿名バインディングを使用すると、ドメイン設定が権限のないユーザーに公開される可能性があります (ユーザー、コンピューター、サーバー、グループ、サービスなどの情報)。セキュリティ上の理由から、LDAPホストでは匿名バインドを無効にし、代わりに認証済みアクセスを使用してください。
バインドパスワード LDAPサーバーへのバインドおよび検索に使用するアカウントのLDAPパスワード。
説明 LDAPサーバーの説明。
JITプロビジョニングを設定 JITプロビジョニングに関連するオプションを表示するには、このチェックボックスを選択します。
グループ設定 グループ設定方法を選択します:
memberOf - ユーザーと、そのグループメンバーシップ属性を検索する方法
groupOfNames - member属性を使用してグループを検索する方法
memberOfの方が高速なため推奨されます。LDAPサーバーがmemberOfをサポートしていない場合、またはグループフィルタリングが必要な場合はgroupOfNamesを使用してください。
グループ名属性 memberOf属性内のすべてのオブジェクトからグループ名を取得する属性を指定します (ユーザーグループメンバーシップ属性フィールドを参照)。
グループ名はユーザーグループのマッピングに必要です。
ユーザーグループメンバーシップ属性 ユーザーが所属するグループに関する情報を含む属性 (例: memberOf) を指定します。
例えば、memberOf属性には次のような情報が含まれる場合があります: memberOf=cn=zabbix-admin,ou=Groups,dc=example,dc=com
このフィールドはmemberOf方式でのみ使用できます。
ユーザー名属性 ユーザーの名を含む属性を指定します。
ユーザー姓属性 ユーザーの姓を含む属性を指定します。
ユーザーグループマッピング LDAPユーザーグループのパターンを、Zabbixのユーザーグループおよびユーザーロールにマッピングします。
プロビジョニングされたユーザーがZabbixで取得するユーザーグループ/ロールを決定するために必要です。
マッピングを追加するには、追加をクリックします。
LDAPグループパターンフィールドではワイルドカードを使用できます (下記の注記を参照)。グループ名は既存のグループと一致する必要があります。
LDAPユーザーが複数のZabbixユーザーグループに一致する場合、そのユーザーはすべてのグループのメンバーになります。
ユーザーが複数のZabbixユーザーロールに一致する場合、それらの中で最も高い権限レベルのロールが付与されます。
メディアタイプのマッピング ユーザーのLDAP メディア属性 (例: email) を、通知送信用のZabbixユーザーメディアにマッピングします (属性値はメディアの送信先フィールドとして使用されます)。
詳細設定 詳細設定オプションを表示するには、詳細設定ヘッダーをクリックします (下記を参照)。
StartTLS LDAPサーバーへの接続時にStartTLS操作を使用するには、チェックボックスを選択します。サーバーがStartTLSをサポートしていない場合、接続は失敗します。
ldapsプロトコルを使用するサーバーではStartTLSを使用できません。
検索フィルター LDAPでユーザーを認証する際のカスタム文字列を定義します。次のプレースホルダーがサポートされています:
%{attr} - 検索属性名 (uid、sAMAccountName)
%{user} - 認証するユーザーのユーザー名の値
例えば、大文字と小文字を区別しないLDAPまたはMicrosoft Active Directory環境で、大文字と小文字を区別する検索を実行するには、次のように文字列を定義できます:
(%{attr}:caseExactMatch:=%{user})。
フィルターをカスタマイズしない場合、LDAPではデフォルトの(%{attr}=%{user})が使用されます。

直接ユーザーバインディング用にLDAPサーバーを設定するには、Base DNパラメータにuid=%{user}属性を追加し (例:uid=%{user},dc=example,dc=com)、BindDNおよびBind passwordパラメータを空のままにします。 認証時、プレースホルダー %{user}はログイン時に入力されたユーザー名に置き換えられます。
直接ユーザーバインディングでは、Zabbixは対話型ログイン中にのみユーザーの認証情報にアクセスできます。 そのため、対話型ログインなしで動作するプロビジョニングタスク (例えば、今すぐプロビジョニングボタンやuser.provision APIメソッド) では、直接ユーザーバインディングを使用して認証するユーザーは無視されます。これは、Zabbixがユーザーに代わってバインドできないためです。 エンドユーザーがログインしていなくてもWebインターフェースからプロビジョニングおよびLDAP検索を実行する必要がある場合は、匿名バインディングまたは専用のバインドユーザー (サービスアカウント) を使用してください。

LDAPグループパターンフィールドでは、*ワイルドカードは正規表現の.*として動作し、0個以上の文字に一致します。 例えば、パターン*Demo*Adminは、WebDemoSuperAdminおよびWebDemoAdmin LDAPグループの両方に一致します。 パターンはグループ名全体に一致する必要があるため、Demo*Admin (先頭の*なし) はこれらのグループのいずれにも一致しません。

次のフィールドは、グループ設定方式として「groupOfNames」を選択した場合に固有のものです:

パラメータ 説明
グループベースDN LDAPサーバー内のグループへのベースパス。
グループ名属性 指定したグループのベースパス内でグループ名を取得する属性を指定します。
グループ名はユーザーグループのマッピングに必要です。
グループメンバー属性 LDAP内のグループメンバーに関する情報を含む属性 (例: member) を指定します。
参照属性 グループフィルターの参照属性を指定します (グループフィルターフィールドを参照)。
次に、グループフィルターで%{ref}を使用して、ここで指定した属性の値を取得します。
グループフィルター ユーザーが所属するグループを取得するためのフィルターを指定します。
例えば、グループのmember属性がuid=User1,ou=Users,dc=example,dc=comの場合、(member=uid=%{ref},ou=Users,dc=example,dc=com)は「User1」に一致し、「User1」が所属するグループを返します。

証明書に関する問題がある場合、セキュアなLDAP接続 (ldaps) を機能させるために、/etc/openldap/ldap.conf設定ファイルにTLS_REQCERT allow行を追加する必要がある場合があります。 これにより、LDAPカタログへの接続のセキュリティが低下する可能性があります。

ZabbixのWebインターフェースへのログインに使用する実際のユーザーアカウントではなく、LDAPサーバーへのバインドおよび検索を最小限の権限で実行するための専用LDAPアカウント (Bind DN) を作成することを推奨します。
この方法によりセキュリティが向上し、LDAPサーバーでユーザーが自分のパスワードを変更した際にバインドパスワードを変更する必要がなくなります。
上記の表では、ldap_searchアカウント名がこれに該当します。

アクセスのテスト

テストボタンを使用すると、ユーザーアクセスをテストできます。

Parameter Description
Login テストするLDAPユーザー名(Zabbix Webインターフェースの現在のユーザー名があらかじめ入力されています)。このユーザー名はLDAPサーバーに存在している必要があります。
Zabbixは、テストユーザーを認証できない場合、LDAP認証を有効化しません。
User password テストするLDAPユーザーパスワード。