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://主机名:端口或ldaps://主机名:端口。
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服务器的账户,示例:
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,连接将失败。
注意:使用ldaps协议的服务器无法启用StartTLS功能。
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 指定群组筛选器的参考属性(参见群组筛选器字段)。
然后在群组筛选器中使用%{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账户(绑定专有名称)来执行绑定操作 在LDAP中使用最小权限搜索LDAP服务器,而非使用真实权限 用户账户(用于登录Zabbix前端界面)。 这种方法提供了更高的安全性,且无需更改绑定密码 当用户在LDAP服务器上更改自己的密码时。 在上表中是 ldap_search 账户名称。

测试访问权限

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

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