使用 Okta 配置 SAML

本节提供有关配置 Okta 的指南,以便为 Zabbix 启用 SAML 2.0 身份验证和用户预配。

Okta 配置

1. 访问 https://developer.okta.com/signup/ 并注册/登录您的账户。

2. 在 Okta web 界面中,导航到 Applications > Applications

3. 点击 Create App Integration

将登录方法选择为 "SAML 2.0",然后点击 Next

4. 在常规设置中,填写应用名称并点击 Next

5. 在 SAML 配置中,输入下面提供的值,然后点击 Next

  • General 中添加:

    • Single sign-on URL: http://<your-zabbix-url>/zabbix/index_sso.php?acs
      请注意这里使用的是 "http",而不是 "https",这样请求中的 acs 参数不会被截断。 还应勾选 Use this for Recipient URL and Destination URL 复选框。
    • Audience URI (SP Entity ID): zabbix
      请注意,此值将在 SAML 断言中用作唯一的服务提供商标识符(如果不匹配,操作将被拒绝)。 此字段中可以指定 URL 或任意字符串数据。
    • Default RelayState:
      将此字段留空;如果需要自定义重定向,可以在 Zabbix 的 Users > Users 设置中添加。
    • 其他字段可根据您的偏好填写。
  • Attribute Statements/Group Attribute Statements 中添加:

这些属性语句会被插入到与 Zabbix 共享的 SAML 断言中。

此处使用的属性名称仅为任意示例。 您可以使用不同的属性名称,但必须确保它们与 Zabbix SAML 设置中相应字段的值匹配。

如果您想在 不使用 JIT 用户预配的情况下为 Zabbix 配置 SAML 登录,那么只需要 email 属性。

如果计划使用加密连接,请生成私钥和公钥加密证书,然后将公钥证书上传到 Okta。 当 Assertion Encryption 设置为 "Encrypted" 时,会显示证书上传表单(点击 Show Advanced Settings 可找到此参数)。

6. 在下一个选项卡中,选择 "I'm a software vendor. I'd like to integrate my app with Okta",然后点击 Finish

7. 进入新创建应用的 "Assignments" 选项卡,点击 Assign 按钮,然后在下拉菜单中选择 Assign to People

8. 在弹出的窗口中,将应用分配给将使用 SAML 2.0 通过 Zabbix 进行身份验证的用户,然后点击 Save and go back

9. 下载 IdP 证书。 通过运行以下命令将其权限设置为 644:

chmod 644 idp.crt

10. 进入 "Sign On" 选项卡并点击 View Setup Instructions 按钮。

设置说明将在新选项卡中打开;在配置 Zabbix 时请保持此选项卡打开。

Zabbix 配置

1. 在 Zabbix 中,转到 SAML 设置,并根据 Okta 的设置说明填写配置选项:

Zabbix 字段 Okta 中的设置字段 示例值
IdP 实体 ID Identity Provider Issuer
SSO 服务 URL Identity Provider Single Sign-On URL
用户名属性 Attribute name usrEmail
SP 实体 ID Audience URI zabbix
组名称属性 Attribute name groups
用户名称属性 Attribute name user_name
用户姓氏属性 Attribute name user_lastname

还需要配置用户组和媒介映射。

2. 添加 Okta SAML 设置说明中提供的 Base64 证书。

如果在前端配置文件zabbix.conf.php)中设置了 $SSO['CERT_STORAGE'] = 'database',则可以在 SAML 配置期间将证书文本粘贴到前端,或上传证书文件,无需在文件系统中存储文件。

如果在配置文件中设置了 $SSO['CERT_STORAGE'] = 'file',则必须将证书放置在文件系统中(默认位于 ui/conf/certs,或位于配置文件中配置的路径),并且前端不会将证书存储在数据库中。 请注意,如果未设置 $SSO['CERT_STORAGE'] 或该设置已被注释,则默认使用文件存储,并从 ui/conf/certs 读取证书。

3. 如果在 Okta 中将 Assertion Encryption 设置为“Encrypted”,则也应在 Zabbix 中选中 Encrypt 参数的“Assertions”复选框。

4. 单击 Update 按钮保存这些设置。

SCIM 配置

1. 要启用 SCIM 配置,请在 Okta 中进入应用的 General > App Settings

勾选 Enable SCIM provisioning 复选框。
完成后,会出现新的 Provisioning 选项卡。

2. 进入 Provisioning 选项卡,设置 SCIM 连接:

  • SCIM connector base URL 中,指定 Zabbix 前端的路径,并在末尾附加 api_scim.php,即:
    https://<your-zabbix-url>/zabbix/api_scim.php
  • Unique identifier field for usersemail
  • Authentication modeHTTP header
  • Authorization 中,输入具有 Super admin 权限的有效 API token。

如果遇到身份验证问题,请参阅转发 Authorization 标头

3. 点击 Test Connector Configuration 测试连接。
如果一切正常,将显示成功消息。

4. 在 Provisioning > To App 中,确保勾选以下复选框:

  • Create Users
  • Update User Attributes
  • Deactivate Users

这样可以确保这些请求类型会发送到 Zabbix。

5. 确保 SAML 中定义的所有属性也已在 SCIM 中定义。
Provisioning > To App 中,点击 Go to Profile Editor,即可访问应用的配置文件编辑器。

点击 Add Attribute
Display nameVariable nameExternal name 填写 SAML 属性名称,例如 user_name

External namespace 应与用户架构相同:urn:ietf:params:scim:schemas:core:2.0:User

6. 进入应用的 Provisioning > To App > Attribute Mappings
点击底部的 Show Unmapped Attributes
此时会显示新添加的属性。

7. 映射每个添加的属性。

8. 在 "Assignments" 选项卡中添加用户。
需要先在 Directory > People 中添加这些用户。
所有这些分配都会作为请求发送到 Zabbix。

9. 在 "Push Groups" 选项卡中添加组。
Zabbix SAML 设置中的用户组映射模式必须与此处指定的组匹配。
如果不匹配,则无法在 Zabbix 中创建用户。

每次发生更改时,都会发送有关组成员的信息。