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グループから別のLDAPグループに移動された場合、Zabbixでもユーザーはあるグループから別のグループに移動されます。ユーザーがLDAPグループから削除された場合、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は設定しません)。これは、uid=%{user}のようなプレースホルダーをBase DNに含めることで設定します。 このモードでは、Zabbixは対話型ログイン中にのみユーザーのパスワードにアクセスできます。 そのため、ユーザーのログインセッション外でLDAPへの認証を必要とするプロビジョニング操作(たとえば、今すぐプロビジョニングボタンの使用や、ユーザーがアクティブにログインしていない状態でのバックグラウンドプロビジョニングの実行)では認証できず、機能しません。 直接ユーザーバインドでのプロビジョニングおよび更新は、ユーザーがログインした時点でのみ実行されます。

複数のサーバー

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

ユーザーが複数のユーザーグループおよび複数のLDAPサーバーに属している場合、名前で昇順にソートされたLDAPサーバーのリストの最初のサーバーが認証に使用されます。

設定

設定パラメータ:

パラメータ 説明
LDAP認証を有効にする LDAP認証を有効にするには、チェックボックスをオンにします。
JITプロビジョニングを有効にする JITプロビジョニングを有効にするには、チェックボックスをオンにします。
サーバー LDAPサーバーを設定するには、追加をクリックします(下記のLDAPサーバーの設定を参照)。
大文字と小文字を区別するログイン ユーザー名の大文字と小文字を区別するログインを無効にするには、チェックボックスをオフにします(デフォルトでは有効)。
大文字と小文字を区別するログインを無効にすると、Zabbixユーザーが「Admin」または「ADMIN」であっても、例えば「admin」としてログインできます。
大文字と小文字を区別するログインが無効で、類似したユーザー名(例: Adminとadmin)を持つZabbixユーザーが複数存在する場合、それらのユーザーのログインは常に拒否され、次のエラーメッセージが表示されます: 「Authentication failed: supplied credentials are not unique.」
プロビジョニング期間 プロビジョニング期間を設定します。これは、ログインしたユーザーがWebインターフェースの操作中にプロビジョニングされる頻度です。

LDAPサーバーの設定

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

パラメータ 説明
Name Zabbix設定におけるLDAPサーバーの名前。
Host 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を使用できます。
Port 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 (直接ユーザーバインディングの場合。下記の注記を参照)
Search attribute 検索に使用する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ホストでは匿名バインドを無効にし、認証済みアクセスを使用してください。
Bind password LDAPサーバーへのバインドおよび検索に使用するアカウントのLDAPパスワード。
Description LDAPサーバーの説明。
Configure JIT provisioning JITプロビジョニングに関連するオプションを表示するには、このチェックボックスを選択します。
Group configuration グループ設定方法を選択します:
memberOf - ユーザーとそのグループメンバーシップ属性を検索する方法
groupOfNames - member属性を使用してグループを検索する方法
memberOfの方が高速なため推奨されます。LDAPサーバーがmemberOfをサポートしていない場合、またはグループフィルタリングが必要な場合はgroupOfNamesを使用してください。
Group name attribute memberOf属性内のすべてのオブジェクトからグループ名を取得する属性を指定します(User group membership attributeフィールドを参照)。
グループ名は、ユーザーグループのマッピングに必要です。
User group membership attribute ユーザーが所属するグループの情報を含む属性(例: memberOf)を指定します。
たとえば、memberOf属性には次のような情報が含まれる場合があります: memberOf=cn=zabbix-admin,ou=Groups,dc=example,dc=com
このフィールドはmemberOf方式でのみ使用できます。
User name attribute ユーザーの名を含む属性を指定します。
User last name attribute ユーザーの姓を含む属性を指定します。
User group mapping LDAPユーザーグループのパターンをZabbixのユーザーグループおよびユーザーロールにマッピングします。
プロビジョニングされたユーザーにZabbixで付与するユーザーグループおよびロールを決定するために必要です。
マッピングを追加するには、Addをクリックします。
LDAP group patternフィールドではワイルドカードを使用できます(下記の注記を参照)。グループ名は既存のグループと一致する必要があります。
LDAPユーザーが複数のZabbixユーザーグループに一致する場合、そのユーザーはすべてのグループのメンバーになります。
ユーザーが複数のZabbixユーザーロールに一致する場合、それらの中で最も高い権限レベルのロールが付与されます。
Media type mapping ユーザーのLDAP メディア属性(例: email)を、通知送信に使用するZabbixユーザーメディアにマッピングします(属性値はメディアのSend toフィールドとして使用されます)。
Advanced configuration 高度な設定オプションを表示するには、Advanced configurationヘッダーをクリックします(下記を参照)。
StartTLS LDAPサーバーへの接続時にStartTLS操作を使用するには、このチェックボックスを選択します。サーバーがStartTLSをサポートしていない場合、接続は失敗します。
StartTLSは、ldapsプロトコルを使用するサーバーでは使用できません。
Search filter 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は対話型ログイン中にのみユーザーの認証情報にアクセスできます。 そのため、対話型ログインなしで動作するプロビジョニングタスク(例: Provision nowボタンやuser.provision APIメソッド)は、直接ユーザーバインディングを使用して認証するユーザーを無視します。これは、Zabbixがユーザーに代わってバインドできないためです。 エンドユーザーがログインしていなくてもWebインターフェースからプロビジョニングおよびLDAP検索を実行する必要がある場合は、匿名バインディングまたは専用のバインドユーザー(サービスアカウント)を使用してください。

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

以下のフィールドは、Group configuration方式として「groupOfNames」を選択した場合に固有のものです:

パラメータ 説明
Group base DN LDAPサーバー内のグループへのベースパス。
Group name attribute 指定したグループのベースパス内でグループ名を取得する属性を指定します。
グループ名は、ユーザーグループのマッピングに必要です。
Group member attribute LDAP内のグループメンバーに関する情報を含む属性(例: member)を指定します。
Reference attribute グループフィルターの参照属性を指定します(Group filterフィールドを参照)。
次に、グループフィルターで%{ref}を使用して、ここで指定した属性の値を取得します。
Group filter ユーザーが所属するグループを取得するためのフィルターを指定します。
たとえば、(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カタログへの接続のセキュリティが低下する可能性があります。

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

アクセスのテスト

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

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