2 LDAP

概述

外部 LDAP authentication 可用于验证用户名和密码。

Zabbix LDAP 认证至少支持 Microsoft Active Directory 和 OpenLDAP。

如果仅配置了 LDAP 登录,则用户也必须存在于 Zabbix 中,但其 Zabbix 密码将不会被使用。如果认证成功,Zabbix 将把本地用户名与 LDAP 返回的用户名属性进行匹配。

用户配置

可以为 LDAP 用户配置 JIT(即时)用户供应(user provisioning)。在这种情况下,Zabbix 中无需预先存在该用户。当用户首次登录 Zabbix 时,系统将自动创建该用户的账户。

当 LDAP 用户输入其 LDAP login 和密码后,Zabbix 会检查默认的 LDAP 服务器以确认该用户是否存在。如果用户存在但尚未在 Zabbix 中创建账户,则系统会自动创建新用户,用户即可登录。

如果启用了 JIT 供应功能,则必须在 认证 选项卡中指定一个用于注销用户的用户组。

JIT 供应还允许根据 LDAP 中的变化对已供应的用户账户进行 update。
例如,如果一个用户从一个 LDAP 组移动到另一个 LDAP 组,则该用户在 Zabbix 中也会相应地从一个用户组移动到另一个用户组;如果用户从 LDAP 组中被移除,则在 Zabbix 中也会被从对应的用户组中移除,若其不再属于任何其他用户组,则会被添加到注销用户组中。已供应的用户账户将根据配置的供应周期 或在用户登录 Zabbix 时进行更新。

请注意,后台的用户供应操作是在用户与 Zabbix 前端交互或至少在浏览器中打开了 Zabbix 前端页面时由前端完成的。Zabbix 并没有专门的后台进程用于用户供应。

LDAP JIT 供应功能仅在 LDAP 配置为使用“匿名”或“特定用户”进行绑定时可用。对于直接用户绑定的情况,仅在用户 login 操作时进行供应,因为此类绑定方式使用了登录用户的密码。

多个服务器

如有需要,可以定义多个LDAP服务器。例如,可以使用不同的服务器对不同的用户组进行认证。一旦配置了LDAP服务器,在配置配置中即可为相应的用户组选择所需的LDAP服务器。

如果某个用户位于多个用户组且配置了多个LDAP服务器,则会使用按名称升序排序后的LDAP服务器列表中的第一个服务器进行认证。

配置

配置参数:

参数 描述
Enable LDAP authentication 勾选此复选框以启用 LDAP 认证。
Enable JIT provisioning 勾选此复选框以启用 JIT 自动配置。
Servers 点击 添加 以配置 LDAP 服务器(见下方 LDAP 服务器配置)。
Case-sensitive login 取消勾选此复选框以禁用用户名的大小写敏感 login(默认启用)。
禁用大小写敏感 login 后,例如,即使 Zabbix 用户名为 "Admin" 或 "ADMIN",也可以以 "admin" 登录。
请注意,如果禁用了大小写敏感 login,并且存在多个相似用户名的 Zabbix 用户(例如 Admin 和 admin),这些用户的 login 将始终被拒绝,并显示以下错误信息:"认证失败:提供的凭证不唯一。"
Provisioning period 设置自动配置周期,即用户在使用前端界面时进行自动配置的频率。

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 URI,格式为ldap://hostname:port或ldaps://hostname:port。
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服务器上执行搜索的账户密码。
Description LDAP服务器描述。
Configure JIT provisioning 勾选此复选框以显示与JIT配置相关的选项。
Group configuration 选择组配置方法:
memberOf - 通过搜索用户及其组成员属性
groupOfNames - 通过成员属性搜索组
注意memberOf更优因其速度更快; 若您的LDAP服务器不支持memberOf或需要组过滤时使用groupOfNames.
Group name attribute 指定从memberOf属性中所有objects提取组名的get属性(参见用户组成员属性字段)
组名对于用户组映射是必需的。
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中将get的用户组/角色。
点击添加按钮创建映射关系。
LDAP组模式字段支持通配符匹配,组名必须对应现有组。
若LDAP用户匹配多个Zabbix用户组,该用户将同时成为所有匹配组的成员。
若用户匹配多个Zabbix用户角色,系统将自动get其中权限级别最高的角色。
Media type mapping 将用户的LDAP媒体属性(如电子邮件)映射到Zabbix用户媒体以发送通知。
Advanced configuration 点击高级配置标签以显示高级配置选项(见下文)。
StartTLS 勾选此复选框以在连接LDAP服务器时使用StartTLS操作。如果服务器不支持StartTLS,连接将失败。
StartTLS不能与使用ldaps协议的服务器一起使用。
Search filter 在LDAP中认证用户时定义自定义string. 支持以下占位符:
%{attr} - 搜索属性名称(uid, sAMAccountName)
%{user} - 待认证用户的用户名值
例如, 要在不区分大小写的LDAP或Microsoft Active Directory环境中执行区分大小写的搜索, string可定义如下:
(%{attr}:caseExactMatch:=%{user}).
如果未自定义过滤器, LDAP将使用默认值: (%{attr}=%{user}).

要为直接用户绑定配置LDAP服务器,需将属性uid=%{user}附加到Base DN参数(例如,uid=%{user},dc=example,dc=com),并保持BindDNBind password参数为空。在认证过程中,占位符%{user}将被替换为login期间输入的用户名。

以下字段专用于以"groupOfNames"作为组配置方法的情况:

参数 描述
Group base DN LDAP服务器中组的基础路径。
Group name attribute 指定用于get指定基础路径下组名的属性。
组名对于用户组映射是必需的。
Group member attribute 指定LDAP中包含组成员信息的属性(例如member)。
Reference attribute 指定组筛选器的参考属性(参见Group filter字段)。
然后在组筛选器中使用%{ref}来get此处指定属性的值。
Group filter 指定过滤器以检索用户所属的组。
例如,(member=uid=%{ref},ou=Users,dc=example,dc=com) 将匹配"User1"(如果组的成员属性为 uid=User1,ou=Users,dc=example,dc=com),并返回"User1"所属的组。

如果遇到证书问题,要使安全LDAP连接(ldaps)正常工作 您可能需要在 /etc/openldap/ldap.conf 配置文件中添加一行 TLS_REQCERT allow file. 这可能会降低与LDAP目录连接的安全性.

建议create一个单独的LDAP账户(Bind DN)来执行绑定操作 在LDAP中使用最小权限搜索LDAP服务器,而非使用真实权限 用户账户(用于登录Zabbix前端界面) 这种方法提供了更高的安全性,且无需更改Bind密码 当用户在LDAP服务器上更改自己的密码时。 在上表中是ldap_search账户名称。

测试访问权限

测试按钮允许测试用户访问:

参数 说明
Login 要测试的LDAP用户名(已预填Zabbix前端的当前用户名)。该用户名必须存在于LDAP服务器中。
如果无法验证测试用户,Zabbix将不会启用LDAP认证。
User password 要测试的LDAP用户密码。