9.4. 使用 Ansible 设置信任协议


您可以使用 Ansible playbook 在身份管理(IdM)和活动目录(AD)之间建立单向信任协议。您可以配置三种类型的信任协议:

  • One-way trust — 默认选项。单向信任使 Active Directory(AD)的用户和组可以访问 IdM 中的资源,但不允许反向访问。IdM 域信任 AD 林,但 AD 林不信任 IdM 域。
  • 双向信任 - 双向信任使 AD 用户和组可以访问 IdM 中的资源。

    您必须为像 Microsoft SQL Server 这样的解决方案配置双向信任,该解决方案希望 Kerberos 协议的 S4U2SelfS4U2Proxy Microsoft 扩展能够跨信任边界工作。RHEL IdM 主机上的应用可能会向 Active Directory 域控制器请求有关 AD 用户的 S4U2SelfS4U2Proxy 信息,双向信任提供了这一特性。

    请注意,这个双向信任功能并不允许 IdM 用户登录到 Windows 系统,IdM 中的双向信任并不为用户授予与 AD 中的单向信任解决方案相比的任何额外权利。

    • 要创建双向信任,请在 playbook 任务中添加以下变量: two_way: true
  • 外部信任 - 不同林中的 IdM 和 AD 域之间的信任关系。虽然林信任总是需要在 IdM 和 Active Directory 林的根域之间建立信任,但可以从 IdM 到林中的域建立外部信任只有由于管理或组织方面的原因而无法在林根域之间建立林信任时,才推荐这么做。

    • 要创建外部信任,请在 playbook 任务中添加以下变量:external: true

先决条件

  • Windows 管理员的用户名和密码。
  • IdM admin 密码。
  • 您已为信任准备了 IdM 服务器
  • 您可以使用 IdM 的 4.8.7 版本或更高版本。要查看您安装在服务器上的 IdM 版本,请运行 ipa --version
  • 您已配置了 Ansible 控制节点以满足以下要求:

    • 您使用 Ansible 版本 2.15 或更高版本。
    • 您已安装了 ansible-freeipa 软件包。
    • 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个带有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件
    • 示例假定 secret.yml Ansible vault 存储了 ipaadmin_password
  • 目标节点,也就是在其上执行 ansible-freeipa 模块的节点,是 IdM 域的一部分,作为 IdM 客户端、服务器或副本。

步骤

  1. 进入您的 ~/MyPlaybooks/ 目录:

    $ cd ~/MyPlaybooks/
  2. 根据您的用例选择以下场景之一:

    • 要创建 ID 映射信任协议,其中 SSSD 会根据其 SID 自动为 AD 用户和组群生成 UID 和 GID,请创建一个带有以下内容的 add-trust.yml playbook:

      ---
      - name: Playbook to create a trust
        hosts: ipaserver
      
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
          - name: ensure the trust is present
            ipatrust:
              ipaadmin_password: "{{ ipaadmin_password }}"
              realm: ad.example.com
              admin: Administrator
              password: secret_password
              state: present

      在示例中:

      • realm 定义 AD 领域名称字符串。
      • admin 定义 AD 域管理员字符串。
      • password 定义 AD 域管理员密码字符串。
    • 要创建 POSIX 信任协议,其中 SSSD 会处理存储在 AD 中的 POSIX 属性,如 uidNumbergidNumber,请创建一个包含以下内容的 add-trust.yml playbook:

      ---
      - name: Playbook to create a trust
        hosts: ipaserver
      
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
          - name: ensure the trust is present
            ipatrust:
              ipaadmin_password: "{{ ipaadmin_password }}"
              realm: ad.example.com
              admin: Administrator
              password: secret_password
              range_type: ipa-ad-trust-posix
              state: present
    • 要通过请求林根域中 AD 域控制器的详情来创建信任协议,其中 IdM 试图自动选择适当的范围类型、ipa-ad-trustipa-ad-trust-posix,请创建一个带有以下内容的 add-trust.yml playbook:

      ---
      - name: Playbook to create a trust
        hosts: ipaserver
      
        vars_files:
        - /home/user_name/MyPlaybooks/secret.yml
        tasks:
          - name: ensure the trust is present
            ipatrust:
              ipaadmin_password: "{{ ipaadmin_password }}"
              realm: ad.example.com
              admin: Administrator
              password: secret_password
              state: present
    警告

    如果您在创建信任时没有指定 ID 范围类型,且 IdM 没有在 AD 林根域中检测到任何 POSIX 属性,则信任安装脚本会选择 Active Directory domain ID 范围。

    如果 IdM 检测到林根域中的任何 POSIX 属性,则信任安装脚本选择 带有 POSIX 属性 ID 范围的 Active Directory 域,并假定 AD 中正确配置了 UID 和 GID。

    但是,如果 POSIX 属性没有在 AD 中正确设置,则您将无法解析 AD 用户。例如,如果需要访问 IdM 系统的用户和组不是林根域的一部分,而是位于林域的子域中,安装脚本可能不会检测到子 AD 域中定义的 POSIX 属性。在这种情况下,红帽建议您在创建信任时显式选择 POSIX ID 范围类型。

  3. 保存该文件。
  4. 运行 Ansible playbook。指定 playbook 文件、存储保护 secret.yml 文件的密码,以及清单文件:

    $ ansible-playbook --vault-password-file=password_file -v -i inventory add-trust.yml

其他资源

  • /usr/share/doc/ansible-freeipa/README-trust.md
  • /usr/share/doc/ansible-freeipa/playbooks/trust
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.