可以使用“身份验证”工作区在 SaltStack Config 中配置 SSO,以与兼容安全断言标记语言 (SAML) 协议的身份验证系统配合使用。

SAML 单点登录 (SSO) 是许多组织在实施 SaltStack Config 期间配置的一项功能,有助于:

  • 缩短用户以同一身份登录到多个服务所用的时间。用户登录到某个机构中的一个服务后,会自动进行身份验证,进入使用 SSO 的任何其他服务。
  • 减少密码疲劳。用户只需记住一组凭据,而不是多组凭据。

许多服务都提供了 SAML SSO 协议的实现,包括 ADFS、OneLogin、Okta、Shibboleth、SimpleSAMLPHP、Google Suite 等。

注: 如果需要,可以在 SaltStack Config 中同时使用多个系统对用户进行身份验证。例如,可以使用基于 SAML 的 IdP 或基于 LDAP 的 IdP,同时在 RaaS 服务器上本地存储一些用户凭据。但是, SaltStack Config 不允许同时配置两个以上的 SAML 提供程序或两个以上的 LDAP 提供程序。

SAML SSO 如何与 SaltStack Config 结合使用

SaltStack Config 从其支持的任何身份验证集成收到成功的身份断言时,会搜索与断言身份的值匹配的用户登录。如果找到匹配登录,则关联的用户帐户将登录。

例如,如果 SaltStack Config 收到用户的 ADFS 断言,并且配置的身份属性的值为“fred”,则 SSE 将搜索用户名为“fred”的登录。如果找到一个,则关联的用户将登录。否则,登录将失败。

SAML 身份验证术语

缩写形式 定义
SAML

安全断言标记语言(SAML,发音为 SAM-el)

SAML 是一种开放式协议(有时也称为标准),用于在双方之间交换身份验证和授权数据。特别是,用于在身份提供程序和服务提供程序之间交换数据。

SAML 是基于浏览器的单点登录 (SSO)。所有通信都通过用户代理(浏览器)进行。服务提供程序(如 SaltStack Config)与身份提供程序(如 Azure AD)之间不进行通信。这种分离允许跨安全域进行身份验证,其中服务提供程序可以位于一个域(可能为公共域)中,而身份提供程序位于单独的安全网络分段中。

IdP

身份提供程序

IdP 的工作是根据凭据识别用户。身份提供程序是一种软件,提供符合 SAML 规范中身份提供程序部分的服务。IdP 通常提供登录屏幕界面,并在身份验证成功后向服务提供程序提供有关经过身份验证的用户的信息。

身份提供程序示例:

  • ADFS
  • Azure AD
  • Google SAML
  • Shibboleth
  • Okta*
  • OneLogin
  • PingFederated
  • SimpleSAMLPHP

* 请参见此表后面的其他详细信息。

SP

服务提供程序或依赖方

SP(服务提供程序)通常是一个向最终用户提供信息、工具、报告等的网站。服务提供程序是一种软件,提供符合 SAML 规范 SaltStack Config 中服务提供程序部分的服务。Microsoft 产品(如 Azure AD 和 ADFS)将 SP 称为依赖方。

在本情形中,SaltStack Config 是服务提供程序。SaltStack Config 接受来自 IdP 的身份验证断言并允许用户登录。

SP 无法通过 IdP 进行身份验证,除非列在经批准的服务列表中。使用经批准的 IdP 列表配置 SP 是配置过程的一部分。

SSO

单点登录

单点登录是一种身份验证系统,在该系统中,用户无需登录到第二个服务,因为有关经身份验证的用户的信息会传递给该服务。

SLO

单点注销

在用户从某服务注销时,某些 IdP 会随后将该用户从向其验证该用户身份的所有其他服务注销。

SaltStack Config 当前不支持 SLO。

RBAC

基于角色的访问控制

基于角色的访问控制(也称为基于角色的安全性)是一种高级访问控制措施,可根据组织中人员的角色限制网络访问。RBAC 中的角色指的是员工对网络的访问级别。

仅允许员工访问高效履行工作职责所必需的网络资源或执行所必需的任务。例如,如果低级别员工不需要敏感数据或网络资源履行职责,则他们通常无法访问这些敏感数据或网络资源。

SaltStack Config 可以通过“角色”工作区支持具有 SAML 的 RBAC 配置。但是,用户首先需要登录到 SaltStack Config,才能在本地用户数据库中添加为用户并通过“角色”工作区进行管理。

Okta 要求

为 SSO 配置 Okta 时的一些注意事项:
  • 设置期间的单点登录 URL 字段需要 SAML 断言客户服务 URL (ACS)。这是 SSC 的 URL,末尾为 /autho/complete/saml。例如,http://xxx.x.x.x:8080/auth/complete/saml
  • SAML 集成要求 UI 由 SSC 提供服务。如果 UI 由 CDN 或除 SSC 以外的任何其他网站提供服务,则集成将失败。
  • 所有 SAML 响应都必须签名。在 Okta 中,您可以在高级设置下启用此设置。
  • SSC 中配置的每个 SAML 属性都必须存在并在 SAML 响应中传递。

必备条件

SaltStack Config 中配置 SAML 之前:

  • 安装 SAML 身份提供程序 (IdP),并确保其正在运行。
  • 确保您有权访问 IdP 提供的凭据和配置数据。
  • 生成证书,以将 SaltStack Config 添加为经 IdP 批准的服务提供程序。SaltStack Config 服务提供程序需要 RSA 密钥对。为 SaltStack Config 配置 SAML 时,需要在多个位置输入私钥和公钥值。
    注: 可以在任何系统上生成此密钥对。不需要在 SSE 服务器上创建。可以在安装了 openssl 实用程序的任何系统上运行以下命令。或者,也可以使用 Salt 生成自签名证书。有关详细信息,请参见 对 TLS Salt 模块创建自签名证书
    要创建证书,请使用 openssl genrsa -out cert.pem 2048 生成名为 cert.perm 的私钥。然后,使用 openssl req -new -x509 -key cert.pem -out cert.pub -days 1825 命令并按照提示进行操作,创建与该私钥关联的公钥。记录这些公钥和私钥对,以便在完成其余配置过程时轻松访问。

设置 SAML 配置

  1. 单击侧边菜单上的管理 > 身份验证
  2. 单击创建
  3. 配置类型菜单中,选择 SAML

    工作区将显示 SAML 配置类型所支持的设置。

  4. 设置选项卡中的以下字段中配置有关 SaltStack Config 安装的信息:
    • 名称
    • 基本 URI
    • 实体 ID
    • 公司名称
    • 显示名称
    • 网站
  5. 私钥字段中,复制为 SaltStack Config 创建服务提供程序证书时生成的私钥。
  6. 公钥字段中,复制为 SaltStack Config 创建服务提供程序证书时生成的公钥。
  7. 在以下字段中填写相关联系信息:
    • 技术联系人
    • 支持联系人
  8. 提供程序信息部分的以下字段中,配置有关身份提供程序 (IdP) 的元数据:
    • 实体 ID
    • 用户 ID - SAML 从 IDP 接收的属性的名称,表示 SSC 中使用的用户标识。
    • 电子邮件 - SAML 从 IDP 接收的属性的名称,表示用户的电子邮件地址。SSC 需要用户的有效电子邮件地址。
    • 用户名 - SAML 从 IDP 接收的属性的名称,表示用户用户名。此 ID 应不同于用户 ID,以便您可以轻松识别其代表的用户。
    • URL
    • x509 证书
    注: ADFS、Azure AD 和 Google SAML 是通用身份提供程序的示例。此信息由您的 IdP 提供。
  9. (可选)选中属性声明检查框,让 SaltStack Config 检查 SAML 属性声明中是否包含个人资料。该选项默认处于选中状态。
  10. 单击保存

后续操作

配置 SAML 单点登录后,您可以:
  • 向您的 IdP 提供 AssertionCustomerService URL(例如:https://<your-sse-hostname>/auth/complete/saml)以及为 SaltStack Config 生成的公用 (x509) 证书和密钥。
  • 为用户创建属性映射,特别是为用户 ID、电子邮件和用户名创建属性映射。许多组织会将所有这三个值映射到用户的电子邮件地址,作为一个属性,因为用户的电子邮件地址在整个组织中通常具有唯一性。这些属性的映射过程特定于每个 SAML 身份提供程序。如果在创建这些属性映射时需要帮助,请参阅您的 IdP 文档或联系您的管理员。
  • 将用户添加到 SaltStack Config。默认情况下,只有在用户首次使用 SAML 成功登录后,才会在 SaltStack Config 中注册新用户。或者,您也可以手动添加用户,在 SaltStack Config 中预先注册这些用户。要从“身份验证”工作区手动添加用户,请从身份验证配置列表中选择您的 SAML 配置,然后从配置设置中单击用户选项卡。单击创建,输入用户凭据,然后选择角色
    注: 确保此用户名准确无误。创建用户后,将无法更改或重命名其用户名。手动创建用户后,只能在首次登录之前删除用户。用户初次登录后,删除按钮在此工作区中仍可用,但不再起作用。
  • 验证 SAML 配置,请以典型用户身份登录,以确保登录过程正常运行且角色和权限正确无误。使用可用于 Firefox 和 Chrome Web 浏览器的 SAML 跟踪工具,并查看 /var/log/raas/raas 日志消息,对潜在错误进行故障排除。
    注: 初始置备且 SAML 身份验证成功后,无法通过 SaltStack Config 用户界面或使用 API 删除用户。