11 使用Microsoft Entra ID配置SAML

概述

本节提供从 Microsoft Entra ID(以前称为 Microsoft Azure Active Directory)使用 SAML 2.0 身份验证配置单点登录和用户调配到 Zabbix 的指南。

Microsoft Entra ID配置

创建应用

1.登录到 Microsoft Entra 管理中心,网址为 Microsoft Entra ID。出于测试目的,您可以在 Microsoft Entra ID 中 create 一个免费试用账户。

2.在 Microsoft Entra 管理中心中选择 Applications(应用程序)-> Enterprise applications(企业应用程序)-> New application(新建应用程序)-> Create your own application(创建自己的应用程序)。

3.添加您的应用程序名称,并选择 Integrate any other application...(集成其他应用程序...)选项。然后,点击 Create(创建)。

设置单点登录

1。在您的应用程序页面中,转到 设置单一登录,点击 开始使用,然后选择 SAML

2。编辑 基本 SAML 配置

  • 标识符 (实体 ID) 中设置一个唯一的名称,用于向 Microsoft Entra ID 标识您的应用程序,例如:zabbix
  • 回复 URL (断言消费者服务 URL) 中设置 Zabbix 单点登录端点:https://<path-to-zabbix-ui>/index_sso.php?acs

请注意,必须使用 "https"。要使 Zabbix 支持该设置,需要在 conf/zabbix.conf.php 中添加以下行:

$SSO['SETTINGS'] = ['use_proxy_headers' => true];

3。编辑 属性和声明。您必须添加所有希望传递给 Zabbix 的属性(user_name、user_lastname、user_email、user_mobile、groups)。

属性名称是任意的。可以使用不同的属性名称,但必须与 Zabbix SAML 设置中对应的字段值匹配。

  • 点击 添加新声明 以添加一个属性:

  • 点击 添加组声明 以添加一个用于将组传递给 Zabbix 的属性:

在此声明中,重要的是所选 源属性 将组名(而非组 ID)传递给 Zabbix。否则,即时用户配置将无法正常工作。

4。在 SAML 证书 中下载 Entra ID 提供的 Base64 证书,并将其放置在 Zabbix 前端安装目录的 conf/certs 中。

运行以下命令设置权限为 644:

chmod 644 entra.cer

确保 conf/zabbix.conf.php 包含以下行:

$SSO['IDP_CERT'] = 'conf/certs/entra.cer';

5。使用 Entra ID 中 设置 <您的应用名称> 的值来配置 Zabbix SAML 认证(见下一节):

Zabbix配置

1。在 Zabbix 中,转到 设置zabbix 并根据 Entra ID 的配置填写配置选项:

Zabbix 字段 Entra ID 中的配置字段 示例值
IdP entity ID Microsoft Entra identifier
SSO service URL Login URL
SLO service URL Logout URL
SP entity ID Identifier (Entity ID)
Username attribute Custom attribute (claim) user_email
Group name attribute Custom attribute (claim) groups
User name attribute Custom attribute (claim) user_name
User last name attribute Custom attribute (claim) user_lastname

此外,还需要配置用户组映射。媒体映射是可选的。

点击 更新 保存这些设置。

SCIM用户配置

1。在你的 Entra ID 应用程序页面,从主菜单打开“Provisioning”页面。点击 Get started,然后选择“Automatic provisioning”模式:

  • Tenant URL 中,设置以下值:https://<path-to-zabbix-ui>/api_scim.php
  • Secret token 中,输入一个具有 Super admin 权限的 Zabbix API token。
  • 点击 Test connection 以查看连接是否建立。

2。现在你可以添加所有将通过 SCIM 传递给 Zabbix 的属性。为此,点击 Mappings,然后点击 Provision Microsoft Entra ID Users

在属性映射列表底部,启用 Show advanced options,然后点击 Edit attribute list for customappsso

在属性列表底部,添加你自己的类型为 'string' 的属性:

保存列表。

3。现在你可以为已添加的属性添加映射。在属性映射列表底部,点击 Add New Mapping,并按如下所示create映射:

当所有映射添加完成后,保存映射列表。

4。作为将用户配置到 Zabbix 的前提条件,你必须在 Entra ID 中配置用户和组。

为此,请进入 Microsoft Entra admin center,然后在相应的 Users 和 Groups 页面中添加用户/组。

5。当用户和组在 Entra AD 中创建完成后,你可以进入应用程序的 Users and groups 菜单,并将它们添加到应用程序中。

6。进入应用程序的 Provisioning 菜单,点击 Start provisioning,以将用户配置到 Zabbix。

请注意,Entra ID 中的 Users PATCH 请求不支持媒体(media)的更改。

认证请求签名

可以将 Entra ID 配置为 validate the signature 已签名的身份验证请求的证书。

要实现此功能,需要使用 create 公钥/私钥:

openssl req -x509 -newkey rsa:4096 -keyout /usr/share/zabbix/conf/certs/request-sign.key -out /usr/share/zabbix/conf/certs/request-sign.pem -sha256 -days 1825 -nodes

分配权限:

chown apache /usr/share/zabbix/conf/certs/request-sign.key 
       chmod 400 /usr/share/zabbix/conf/certs/request-sign.key

通过添加以下内容来更新 Zabbix 前端配置:

$SSO['SP_KEY'] = 'conf/certs/request-sign.key';
       $SSO['SP_CERT'] = 'conf/certs/request-sign.crt';

故障排除

当用户已通过Microsoft Edge浏览器个人资料登录时,尝试通过SAMLlogin到Zabbix时可能出现认证问题。作为此类问题的迹象,用户可能能够通过Microsoft Edge隐私模式成功登录Zabbix。

为避免此类情况下的认证问题,可能需要在Zabbix前端配置file文件(zabbix.conf.php)中将requestedAuthnContext设置为"false"。

$SSO['SETTINGS'] = [
           'security' => [
               'requestedAuthnContext' => false
           ]
       ];