我们希望听到您的声音!帮助我们深入了解 Ansible 生态系统的现状。
参与 Ansible 项目 2024 年调查

Red Hat 单点登录与 Ansible Tower 集成

Red Hat 单点登录与 Ansible Tower 集成

如您所知,Red Hat Ansible Tower 默认支持 SAML 身份验证(N 和 Z)。本文档将指导您完成配置这两个产品以将身份验证委托给 RHSSO/Keycloak(Red Hat 单点登录)的步骤。

需求

  • 正在运行的 RHSSO/Keycloak 实例
  • Ansible Tower
  • 两者的管理员权限
  • DNS 解析

动手实验

除非您已经有自己的证书,否则第一步是创建一个。为此,执行以下命令:

openssl req -new -x509 -days 365 -nodes -out saml.crt -keyout saml.key

现在我们需要在 RHSSO 平台上创建 Ansible Tower 领域。转到“选择领域”下拉菜单,然后点击“添加新领域”。

Ansible-Tower-SSO-Screen-16

创建完成后,转到“密钥”选项卡,删除默认创建的所有证书、密钥等。

现在我们拥有了一个干净的领域,让我们用适当的信息填充它。点击右上角的“添加密钥库”,然后点击 RSA。

Ansible-Tower-SSO-Screen-15

点击保存并创建您的 Ansible Tower 客户端信息。建议先从 Tower 配置开始,以便您可以注入元数据文件并自定义一些字段。

以管理员用户身份登录 Ansible Tower,然后转到“设置 > 配置 Tower > 身份验证 > SAML”。在这里,您会发现许多字段(其中两个是只读的),这些字段为我们提供了使这项工作正常进行所需的信息。

  • 断言使用者服务
  • 服务提供商的元数据 URL(这将返回您的 IDP 的配置)

Ansible-Tower-SSO-Screen-18

现在让我们填写所有必需的字段。

  • SAML 服务提供商的 EntityID:tower.usersys.redhat.com(必须与 RHSSO 上的client_id名称相同)
  • 公钥证书:使用 saml.crt(cat saml.crt 并复制/粘贴)
  • 私钥:使用相同的 .key(cat saml.key 并复制/粘贴)

Ansible-Tower-SSO-Screen-17

  • 服务提供商的组织信息
{
  "en-US": {
    "url": "https://rhsso.usersys.redhat.com:8443",
    "displayname": "RHSSO Solutions Engineering",
    "name": "RHSSO"
  }
}

Ansible-Tower-SSO-Screen-4

  • SAML 服务提供商的技术联系人
{
  "givenName": "Juan Manuel Parrilla",
  "emailAddress": "jparrill@redhat.com"
}

Ansible-Tower-SSO-Screen-7

  • SAML 服务提供商的支持联系人
{
  "givenName": "Juan Manuel Parrilla",
  "emailAddress": "jparrill@redhat.com"
}

Ansible-Tower-SSO-Screen-7

  • 启用的 SAML 身份提供商
{
   "RHSSO": {
      "attr_last_name": "last_name",
      "attr_username": "username",
      "entity_id": "https://rhsso.usersys.redhat.com:8443/auth/realms/tower",
      "attr_user_permanent_id": "name_id",
      "url": "https://rhsso.usersys.redhat.com:8443/auth/realms/tower/protocol/saml",
      "attr_email": "email",
      "x509cert": "",
      "attr_first_name": "first_name",
      "attr_groups": "groups"
   }
}

注意:要在 JSON 上提供 x509cert 字段,只需执行此命令并将结果粘贴到 Ansible Tower 界面上。

sed ':a;N;$!ba;s/\n//g' saml.crt

Ansible-Tower-SSO-Screen-20

  • 组织 SAML 映射
{
   "Default": {
      "users": true
   },
   "Systems Engineering": {
      "admins": [
         "acheron@redhat.com",
         "jparrill@redhat.com",
         "covenant@redhat.com",
         "olympia@redhat.com
      ],
      "remove_admins": false,
      "remove_users": false,
      "users": true
   }
}

Ansible-Tower-SSO-Screen-10

推荐步骤和检查事项

  • RHSSO 是选定的名称,可以是任何您想要的名称,并且不与 DNS 或服务器配置绑定。这只是一个视觉标记。
  • 所有attr_字段都是必需的,并且将是我们在下一步创建的客户端上的映射器。
  • Entity_id将指向您的领域。通过 WebUI 转到您的 RHSSO 领域,在“常规”中您将看到“OpenID 端点配置”。只需点击并捕获“发行者”字段即可满足entity_id的要求。
  • “对于 url”是一个固定字段;在其中输入您的entity_id,后跟/protocol/saml
  • 如果您在 RHSSO 中生成了您的 cert/key,您将在一行中拥有它们。要转换为 PEM 格式,您只需将它们包装在“-----BEGIN CERTIFICATE-----”等中,并使用fold -w64来分割单行。

RHSSO 客户端配置

现在您已在 Ansible Tower 上配置了 SAML,保存更改并开始 RHSSO 客户端配置。

首先,以管理员用户身份登录 RHSSO 平台,然后转到“Tower”领域。从那里,转到“客户端”并选择“创建”。点击“选择文件”导入我们已经在 Ansible Tower 上拥有的数据(要获取配置,请从您的笔记本电脑执行此命令:curl -L -k https://tower.usersys.redhat.com/sso/metadata/saml/)。通过将其指向tower.usersys.redhat.com修改客户端 ID,然后将“客户端协议”设置为 SAML,如下所示。

Ansible-Tower-SSO-Screen-19

接下来,修复配置以符合以下屏幕截图。

Ansible-Tower-SSO-Screen-1

最后一步是在 Tower 的 RHSSO 客户端上创建映射器。这样做的目的是定义来自您的 RHSSO 的信息,这些信息将映射到 Ansible Tower 用户。

为此,我们必须转到“映射器”选项卡。

Ansible-Tower-SSO-Screen-14

下面显示了必要的映射器。

Ansible-Tower-SSO-Screen-6

以下屏幕截图显示了用户名、姓氏、电子邮件、用户 ID 和姓名的正确配置。

Ansible-Tower-SSO-Screen-22

Ansible-Tower-SSO-Screen-11

Ansible-Tower-SSO-Screen-8

Ansible-Tower-SSO-Screen-9

Ansible-Tower-SSO-Screen-3

注意:“firstName”和“lastName”区分大小写,因为它们映射 RHSSO 用户属性。

现在您已经全部设置好了!

让我们使用我们已经在 RHSSO 上的用户进行测试(我们有针对ldap.example.com的用户联合的 RHSSO)。出于测试目的,如果您愿意,可以在“管理 > 用户”中创建一个用户。

现在转到 Ansible Tower 登录页面,您应该会看到“使用 S 登录”。

Ansible-Tower-SSO-Screen-21

点击此“S”,您将被重定向到 RHSSO 服务器上的登录页面。

Ansible-Tower-SSO-Screen-2

就是这样!Ansible-Tower-SSO-Screen-5

希望本指南对 Red Hat 单点登录与 Ansible Tower 集成有所帮助!