2 LDAP
概要
外部LDAP認証を使用して、ユーザー名とパスワードを確認できます。
ZabbixのLDAP認証は、少なくともMicrosoft Active DirectoryおよびOpenLDAPで動作します。
LDAPサインインのみが設定されている場合、ユーザーはZabbixにも存在する必要がありますが、そのZabbixパスワードは使用されません。 認証が成功すると、ZabbixはLDAPから返されたユーザー名属性とローカルのユーザー名を照合します。
ユーザーのプロビジョニング
LDAPユーザーに対してJIT(ジャストインタイム)ユーザーのプロビジョニングを設定することができます。 この場合、Zabbixにユーザーが既に存在している必要はありません。 ユーザーアカウントは、ユーザーが初めてZabbixにログインしたときに作成できます。
LDAPユーザーがLDAPのログイン名とパスワードを入力すると、Zabbixはこのユーザーが存在するかどうかをデフォルトのLDAPサーバーで確認します。 ユーザーが存在し、まだZabbixにアカウントがない場合は、Zabbixに新しいユーザーが作成され、ユーザーはログインできるようになります。
JITプロビジョニングで作成されたユーザーは、作成時にデフォルトとして設定されているLDAPサーバー(ディレクトリ)に関連付けられます。 後でデフォルトのLDAPサーバーを変更しても、すでにプロビジョニングされたユーザーにリンクされているLDAPサーバーは変更または更新されません。
JITプロビジョニングが有効な場合は、認証タブでプロビジョニング解除されたユーザー用のユーザーグループを指定する必要があります。
JITプロビジョニングでは、LDAPの変更に基づいてプロビジョニングされたユーザーアカウントを更新することもできます。 たとえば、ユーザーがあるLDAPグループから別のグループに移動された場合、Zabbixでもユーザーがあるグループから別のグループに移動されます。ユーザーがLDAPグループから削除された場合、Zabbixでもそのグループから削除され、他のグループに属していない場合はプロビジョニング解除されたユーザー用のユーザーグループに追加されます。 プロビジョニングされたユーザーアカウントは、設定されたプロビジョニング期間またはユーザーがZabbixにログインしたときに更新されます。
バックグラウンドでのプロビジョニングは、ユーザーがWebインターフェースとやり取りしている場合、または少なくともブラウザでWebインターフェースのページを開いている場合に、Zabbix Webインターフェースによって実行されることに注意してください。 ユーザーをプロビジョニングする専用のバックグラウンドプロセスはありません。
LDAPは、認証および検索のためにディレクトリにバインドする3つの方法をサポートしています。
- 匿名バインディング — バインドDN / バインドパスワードを指定せず、LDAPサーバーが匿名クエリを許可する場合。
- 専用のバインドユーザー(サービスアカウント) — 特定のLDAPアカウントをバインドDN / バインドパスワードに設定し、Zabbixが検索およびプロビジョニングに使用します。 Zabbixがエンドユーザーの資格情報なしで検索やバックグラウンドプロビジョニングを実行できるため、これが推奨される最も柔軟なオプションです。
- 直接ユーザーバインディング — Zabbixは、ログイン時にユーザーが入力した資格情報を使用してバインドを実行します(バインドDN / バインドパスワードは設定しません)。これは、Base DNに
uid=%{user}のようなプレースホルダーを含めることで設定します。 このモードでは、Zabbixはインタラクティブなログイン中のみユーザーのパスワードにアクセスできます。 その結果、ユーザーのログインセッション外でLDAPへの認証が必要なプロビジョニングアクション(たとえば、今すぐプロビジョニングボタンの使用や、ユーザーが積極的にログインしていないときのバックグラウンドプロビジョニングの実行)は認証できないため、機能しません。 直接ユーザーバインディングのプロビジョニングおよび更新は、ユーザーがログインした瞬間にのみ発生します。
複数のサーバー
必要に応じて、複数のLDAPサーバーを定義できます。 たとえば、異なるユーザーグループを認証するために異なるサーバーを使用できます。 LDAPサーバーが設定されると、ユーザーグループの設定で、該当するユーザーグループに必要なLDAPサーバーを選択できるようになります。
ユーザーが複数のユーザーグループおよび複数のLDAPサーバーに属している場合、名前で昇順にソートされたLDAPサーバーのリストの最初のサーバーが認証に使用されます。
設定

設定パラメータ:
| パラメータ | 説明 |
|---|---|
| LDAP認証を有効にする | チェックボックスをオンにすると、LDAP認証が有効になります。 |
| JITプロビジョニングを有効にする | チェックボックスをオンにすると、JITプロビジョニングが有効になります。 |
| サーバー | 追加をクリックしてLDAPサーバーを設定します(下記のLDAPサーバーの設定を参照)。 |
| 大文字と小文字を区別したログイン | チェックボックスをオフにすると、ユーザー名の大文字と小文字を区別したログインが無効になります(デフォルトでは有効)。 大文字と小文字を区別したログインを無効にすると、たとえばZabbixユーザーが「Admin」や「ADMIN」であっても「admin」としてログインできます。 大文字と小文字を区別したログインを無効にし、同じようなユーザー名(例:Adminとadmin)を持つ複数のZabbixユーザーがいる場合、これらのユーザーのログインは常に次のエラーメッセージで拒否されることに注意してください:「認証に失敗しました:入力された認証情報が一意ではありません。」 |
| プロビジョニング期間 | プロビジョニング期間を設定します。つまり、フロントエンドで作業している間、ログインしたユーザーがどのくらいの頻度でプロビジョニングされるかを指定します。 |
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 - メンバー属性を通じてグループを検索 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 メディア属性(例: メール)をZabbixユーザーメディアにマッピングし、通知を送信します(属性値はメディアの送信先フィールドとして使用されます)。 |
| 詳細設定 | 詳細設定ラベルをクリックすると、詳細設定オプションが表示されます(下記参照)。 |
| StartTLS | LDAPサーバーへの接続時にStartTLS操作を使用する場合はチェックボックスをオンにします。サーバーがStartTLSをサポートしていない場合、接続は失敗します。 StartTLSはldapsプロトコルを使用するサーバーでは使用できません。 |
| 検索フィルター | 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およびバインドパスワードパラメータを空にします。
認証時、%{user}プレースホルダーはログイン時に入力されたユーザー名に置き換えられます。
直接ユーザーバインディングでは、Zabbixは対話型ログイン中のみユーザーの認証情報にアクセスできます。
したがって、対話型ログインなしで動作するプロビジョニングタスク(例: 今すぐプロビジョニングボタンやuser.provision APIメソッド)は、Zabbixがユーザーの代わりにバインドできないため、直接ユーザーバインディングを使用して認証するユーザーを無視します。
Webインターフェースからエンドユーザーのログインを必要とせずにプロビジョニングやLDAP検索を機能させる必要がある場合は、匿名バインディングまたは専用のバインドユーザー(サービスアカウント)を使用してください。
グループ設定方法として"groupOfNames"を選択した場合、以下のフィールドが特有です:

| パラメータ | 説明 |
|---|---|
| グループBase DN | LDAPサーバー内のグループへのベースパス。 |
| グループ名属性 | 指定したグループのベースパス内でグループ名を取得する属性を指定します。 グループ名はユーザーグループマッピングに必要です。 |
| グループメンバー属性 | LDAP内のグループメンバー情報を含む属性を指定します(例: member)。 |
| 参照属性 | グループフィルター用の参照属性を指定します(グループフィルターフィールドを参照)。 ここで指定した属性の値を取得するには、グループフィルターで %{ref}を使用します。 |
| グループフィルター | ユーザーがメンバーであるグループを取得するためのフィルターを指定します。 例えば、 (member=uid=%{ref},ou=Users,dc=example,dc=com)は、グループのmember属性がuid=User1,ou=Users,dc=example,dc=comの場合に"User1"に一致し、"User1"がメンバーであるグループを返します。 |
証明書に関する問題が発生した場合、セキュアなLDAP接続(ldaps)を機能させるには、/etc/openldap/ldap.conf設定ファイルにTLS_REQCERT allow行を追加する必要がある場合があります。
これはLDAPカタログへの接続のセキュリティを低下させる可能性があります。
バインディングおよびLDAPサーバー上での検索を行うために、実際のユーザーアカウント(Zabbix Webインターフェースへのログインに使用されるもの)ではなく、LDAP内で最小限の権限を持つ別のLDAPアカウント(Bind DN)を作成することを推奨します。
この方法はセキュリティを向上させ、ユーザーがLDAPサーバーで自分のパスワードを変更した場合でもバインドパスワードを変更する必要がありません。
上記の表ではldap_searchアカウント名です。
アクセステスト
テストボタンでユーザーアクセスをテストできます:
| パラメータ | 説明 |
|---|---|
| ログイン | テストするLDAPユーザー名(Zabbixフロントエンドの現在のユーザー名で自動入力されます)。このユーザー名はLDAPサーバーに存在している必要があります。 Zabbixは、テストユーザーの認証に失敗した場合、LDAP認証を有効にしません。 |
| ユーザーパスワード | テストするLDAPユーザーパスワード。 |