3 身份验证
概述
在 Administration → Authentication(管理 → 身份验证) 验证中,可以指定对Zabbix的全局用户身份验证方法。可用的方法有内部,HTTP,LDAP和SAML身份验证。
请注意,可以在用户组级别上微调身份验证方法。
默认情况下,全局使用内部Zabbix身份验证。改变:
到HTTP-导航到“ HTTP设置”标签并输入身份验证详细信息;
到LDAP-选择LDAP作为默认身份验证,然后在LDAP设置标签中输入身份验证详细信息;
到SAML-导航到“ SAML设置”标签,然后输入身份验证详细信息。
完成后,单击表单底部的“更新”。
HTTP认证
基于HTTP或Web服务器的身份验证(例如:基本身份验证,NTLM / Kerberos)可用于检查用户名和密码。请注意,用户也必须存在于Zabbix中,但是不会使用其Zabbix密码。
当心!在打开Web服务器身份验证之前,请确保已对其进行配置并正常工作。
配置参数:
参数 | 描述说明 |
---|---|
Enable HTTP authentication (启用HTTP身份验证) | 选中该复选框以启用HTTP身份验证。 |
Default login form (默认登录表单) | 指定是否将未经身份验证的用户定向到: Zabbix login form-标准Zabbix登录页面。 HTTP login form-HTTP登录页面。 建议 index_http.php 仅对页面启用基于Web服务器的身份验证。如果将默认登录表单设置为“ HTTP登录页面”,并且Web服务器身份验证模块将在$_SERVER 变量中设置有效的用户登录名,则该用户将自动登录。支持 $_SERVER 键PHP_AUTH_USER ,REMOTE_USER ,AUTH_USER 。 |
Case sensitive login (区分大小写的登录) | 取消选中该复选框可禁用用户名区分大小写的登录(默认情况下启用)。 例如,禁用区分大小写的登录并使用“ ADMIN”用户登录,即使Zabbix用户为“ Admin”。 请注意,如果区分大小写的登录禁用,则Zabbix数据库中存在多个具有相似别名(例如Admin,admin)的用户时,将拒绝登录。 |
如果进行Web服务器身份验证,则所有用户(即使前端访问权限设置为Internal)都将由Web服务器而不是Zabbix进行身份验证!
对于无法使用HTTP凭据(默认设置为HTTP登录格式)登录的内部用户,导致401错误,您可能需要ErrorDocument 401 /index.php?form=default
在基本身份验证指令中添加一行,它将重定向到常规Zabbix登录格式。
LDAP验证
外部LDAP身份验证可用于检查用户名和密码。请注意,用户也必须存在于Zabbix中,但是不会使用其Zabbix密码。
全局设置LDAP身份验证后,Zabbix仍可以对某些用户组进行身份验证。这些组必须将前端访问权限设置为“内部”。反之亦然,如果全局使用内部身份验证,则可以指定LDAP身份验证详细信息,并将其用于前端访问设置为LDAP的特定用户组。
Zabbix LDAP身份验证至少与Microsoft Active Directory和OpenLDAP一起使用。
配置参数:
参数 | 描述说明 |
---|---|
Enable LDAP authentication | 启动LDAP认证,选中复选框以启用LDAP身份验证。 |
LDAP host | LDAP服务器名称。例如:ldap:ldap.zabbix.com 对于安全的LDAP服务器,请使用ldaps协议。 ldaps:ldap.zabbix.com 在OpenLDAP 2.xx和更高版本中,可以使用格式为ldap: hostname:port或ldaps: hostname:port的完整LDAP URI。 |
Port | LDAP服务器的端口。默认值为389。 对于安全LDAP连接,端口号通常为636。 使用完整LDAP URI时不使用。 |
Base DN | 搜索帐户的基本路径: ou =用户,ou =系统(对于OpenLDAP), DC =公司,DC = com(对于Microsoft Active Directory) |
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) 匿名绑定也是支持的。 |
Case-sensitive login | 取消选中该复选框可禁用用户名区分大小写的登录(默认情况下启用)。 例如,禁用区分大小写的登录并使用“ ADMIN”用户登录,即使Zabbix用户为“ Admin”。 请注意,如果区分大小写的登录禁用,则Zabbix数据库中存在多个具有相似别名(例如Admin,admin)的用户时,将拒绝登录。 |
Bind password | 用于绑定和搜索LDAP服务器的帐户的LDAP密码。 |
Test authentication | 测试部分的标题 |
Login | 测试用户的名称(当前已在Zabbix前端中登录)。该用户名必须存在于LDAP服务器中。 如果Zabbix无法认证测试用户,则不会激活LDAP认证。 |
User password | 测试用户的LDAP密码。 |
万一证书出现问题,为了使LDAP连接(ldaps)正常工作,您可能需要TLS_REQCERT allow在/etc/openldap/ldap.conf配置文件中添加一行。这可能会降低与LDAP目录连接的安全性。
建议创建一个单独的LDAP帐户(Bind DN),以使用LDAP中的最小特权在LDAP服务器上执行绑定和搜索,而不要使用真实的用户帐户(用于登录Zabbix前端)。
这样的方法提供了更高的安全性,并且在用户更改LDAP服务器中自己的密码时不需要更改“绑定”密码。
在上表中是ldap_search帐户名。
SAML身份验证
SAML 2.0身份验证可用于登录Zabbix。请注意,用户必须存在于Zabbix中,但是不会使用其Zabbix密码。如果身份验证成功,则Zabbix将匹配本地用户名(别名)与SAML返回的用户名属性。
如果启用了SAML身份验证,则用户将能够在本地登录或通过SAML单一登录之间进行选择。
设置身份提供者
为了使用Zabbix,需要以以下方式配置SAML身份提供程序(onelogin.com,auth0.com,okta.com等)
断言使用者URL应设置为
<path_to_zabbix_ui>/index_sso.php?acs
单一登出网址应设置为
<path_to_zabbix_ui>/index_sso.php?sls
<path_to_zabbix_ui>
示例:
https://example.com/zabbix/ui, http://another.example.com/zabbix, http://<任意公网IP地址>/zabbix
设置ZABBIX
如果要在前端使用SAML身份验证,则需要安装php-openssl。
要使用SAML身份验证,应按以下方式配置Zabbix:
1.除非zabbix.conf.php中提供了自定义路径,否则私钥和证书应存储在ui/conf/certs/中。
默认情况下,Zabbix将在以下位置查找:
ui/conf/certs/sp.key-SP 私钥文件
ui/conf/certs/sp.crt-SP 证书文件
ui/conf/certs/idp.crt-IDP 证书文件
2.所有最重要的设置都可以在Zabbix前端中进行配置。但是,可以在配置文件中指定其他设置。
在Zabbix前端中可用的配置参数:
参数 | 描述说明 |
---|---|
Enable SAML authentication | 选中复选框以启用SAML身份验证。 |
IDP entity ID | SAML身份提供者的唯一标识符。 |
SSO service URL | 登录时,URL用户将被重定向到. |
SLO Service URL | 注销时,URL用户将被重定向到。如果保留为空,将不使用SLO服务。 |
Username attribute | 登录到Zabbix时用作用户名的SAML属性。 支持的值列表由身份提供商确定。 示例: Examples: uid userprincipalname samaccountname username userusername urn:oid:0.9.2342.19200300.100.1.1 urn:oid:1.3.6.1.4.1.5923.1.1.1.13 urn:oid:0.9.2342.19200300.100.1.44 |
SP entity ID | SAML服务提供者的唯一标识符。 |
SP name ID format | 定义应使用的名称标识符格式。 示例: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent urn:oasis:names:tc:SAML:2.0:nameid-format:transient urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos urn:oasis:names:tc:SAML:2.0:nameid-format:entity |
Sign | 标记复选框以选择应为其启用SAML签名的实体: Messages(消息) Assertions(断言) AuthN requests(AuthN请求) Logout requests(注销请求) Logout responses(注销响应) |
Encrypt | 标记复选框以选择应为其启用SAML加密的实体: Assertions(断言) Name ID(名称ID) |
Case-sensitive login | 选中该复选框以启用区分大小写的登录名(默认情况下禁用)。 例如,禁用区分大小写的登录并使用“ ADMIN”用户登录,即使Zabbix用户为“ Admin”。 请注意,如果区分大小写的登录禁用,则Zabbix数据库中存在多个具有相似别名(例如Admin,admin)的用户时,将拒绝登录。 |
高级设置
可以在Zabbix前端配置文件(zabbix.conf.php)中配置其他SAML参数:
$ SSO [‘SP_KEY’] =’<SP私钥文件的路径>’;
$ SSO [‘SP_CERT’] =’<SP证书文件的路径>’;
$ SSO [‘IDP_CERT’] =’<IDP证书文件的路径>’;
$ SSO [‘SETTINGS’]
Zabbix使用OneLogin的SAML PHP工具包库(版本3.4.1)。$ SSO [‘SETTINGS’]部分的结构应类似于库使用的结构。有关配置选项的说明,请参见官方库文档。
只能将以下选项设置为$ SSO [‘SETTINGS’]的一部分:
strict(严格的)
compress(压缩)
contactPerson(联系人)
organization(组织)
sp(仅此列表中指定的选项)
attributeConsumingService
x509certNew
idp(仅此列表中指定的选项)
singleLogoutService(仅一个选项)
responseUrl(响应Url)
certFingerprint(证书指纹)
certFingerprintAlgorithm(证书指纹算法)
x509certMulti
安全性(仅此列表中指定的选项)
signMetadata(符号元数据)
wantNameId(想要的名称标识)
requestAuthnContext(请求认证上下文)
requestAuthnContextComparison(请求认证上下文比较)
wantXMLValidation(想要的XML验证)
RelaxDestinationValidation(目的验证)
destinationStrictlyMatches(严格匹配)
rejectUnsolicitedResponsesWithInResponseTo(拒绝未经请求的响应)
signatureAlgorithm(签名算法)
digestAlgorithm(摘要算法)
lowercaseUrlencoding
所有其他选项将从数据库中获取,并且不能被覆盖。在调试选项将被忽略。
配置示例:
$SSO['SETTINGS'] = [
'security' => [
'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
// ...
],
// ...
];