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 领域。转到“选择领域”下拉菜单,然后点击“添加新领域”。
创建完成后,转到“密钥”选项卡,删除默认创建的所有证书、密钥等。
现在我们拥有了一个干净的领域,让我们用适当的信息填充它。点击右上角的“添加密钥库”,然后点击 RSA。
点击保存并创建您的 Ansible Tower 客户端信息。建议先从 Tower 配置开始,以便您可以注入元数据文件并自定义一些字段。
以管理员用户身份登录 Ansible Tower,然后转到“设置 > 配置 Tower > 身份验证 > SAML”。在这里,您会发现许多字段(其中两个是只读的),这些字段为我们提供了使这项工作正常进行所需的信息。
- 断言使用者服务
- 服务提供商的元数据 URL(这将返回您的 IDP 的配置)
现在让我们填写所有必需的字段。
- SAML 服务提供商的 EntityID:
tower.usersys.redhat.com
(必须与 RHSSO 上的client_id
名称相同) - 公钥证书:使用 saml.crt(
cat saml.crt
并复制/粘贴) - 私钥:使用相同的 .key(
cat saml.key
并复制/粘贴)
- 服务提供商的组织信息
{ "en-US": { "url": "https://rhsso.usersys.redhat.com:8443", "displayname": "RHSSO Solutions Engineering", "name": "RHSSO" } }
- SAML 服务提供商的技术联系人
{ "givenName": "Juan Manuel Parrilla", "emailAddress": "jparrill@redhat.com" }
- SAML 服务提供商的支持联系人
{ "givenName": "Juan Manuel Parrilla", "emailAddress": "jparrill@redhat.com" }
- 启用的 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
- 组织 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 } }
推荐步骤和检查事项
- 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,如下所示。
接下来,修复配置以符合以下屏幕截图。
最后一步是在 Tower 的 RHSSO 客户端上创建映射器。这样做的目的是定义来自您的 RHSSO 的信息,这些信息将映射到 Ansible Tower 用户。
为此,我们必须转到“映射器”选项卡。
下面显示了必要的映射器。
以下屏幕截图显示了用户名、姓氏、电子邮件、用户 ID 和姓名的正确配置。
注意:“firstName”和“lastName”区分大小写,因为它们映射 RHSSO 用户属性。
现在您已经全部设置好了!
让我们使用我们已经在 RHSSO 上的用户进行测试(我们有针对ldap.example.com
的用户联合的 RHSSO)。出于测试目的,如果您愿意,可以在“管理 > 用户”中创建一个用户。
现在转到 Ansible Tower 登录页面,您应该会看到“使用 S 登录”。
点击此“S”,您将被重定向到 RHSSO 服务器上的登录页面。
就是这样!
希望本指南对 Red Hat 单点登录与 Ansible Tower 集成有所帮助!