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サーバーの設定パラメータ:

Parameter Description
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 media 属性(例: 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検索を機能させる必要がある場合は、匿名バインドまたは専用のバインドユーザー(サービスアカウント)を使用してください。

以下のフィールドは、Group configuration メソッドとして "groupOfNames" を選択した場合に固有です:

Parameter Description
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カタログへの接続のセキュリティが低下する可能性があります。

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

アクセステスト

テストボタンでユーザーアクセスをテストできます:

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