9.4. 使用 Ansible 设置信任协议
您可以使用 Ansible playbook 在身份管理(IdM)和活动目录(AD)之间建立单向信任协议。您可以配置三种类型的信任协议:
- One-way trust — 默认选项。单向信任使 Active Directory(AD)的用户和组可以访问 IdM 中的资源,但不允许反向访问。IdM 域信任 AD 林,但 AD 林不信任 IdM 域。
双向信任 - 双向信任使 AD 用户和组可以访问 IdM 中的资源。
您必须为像 Microsoft SQL Server 这样的解决方案配置双向信任,该解决方案希望 Kerberos 协议的
S4U2Self和S4U2ProxyMicrosoft 扩展能够跨信任边界工作。RHEL IdM 主机上的应用可能会向 Active Directory 域控制器请求有关 AD 用户的S4U2Self或S4U2Proxy信息,双向信任提供了这一特性。请注意,这个双向信任功能并不允许 IdM 用户登录到 Windows 系统,IdM 中的双向信任并不为用户授予与 AD 中的单向信任解决方案相比的任何额外权利。
-
要创建双向信任,请在 playbook 任务中添加以下变量:
two_way: true
-
要创建双向信任,请在 playbook 任务中添加以下变量:
外部信任 - 不同林中的 IdM 和 AD 域之间的信任关系。虽然林信任总是需要在 IdM 和 Active Directory 林的根域之间建立信任,但可以从 IdM 到林中的域建立外部信任只有由于管理或组织方面的原因而无法在林根域之间建立林信任时,才推荐这么做。
-
要创建外部信任,请在 playbook 任务中添加以下变量:
external: true
-
要创建外部信任,请在 playbook 任务中添加以下变量:
先决条件
- Windows 管理员的用户名和密码。
-
IdM
admin密码。 - 您已为信任准备了 IdM 服务器。
-
您可以使用 IdM 的 4.8.7 版本或更高版本。要查看您安装在服务器上的 IdM 版本,请运行
ipa --version。 您已配置了 Ansible 控制节点以满足以下要求:
- 您使用 Ansible 版本 2.14 或更高版本。
-
您已安装了
ansible-freeipa软件包。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个带有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了
ipaadmin_password。
-
目标节点,也就是在其上执行
ansible-freeipa模块的节点,是 IdM 域的一部分,作为 IdM 客户端、服务器或副本。
流程
进入您的 ~/MyPlaybooks/ 目录:
$ cd ~/MyPlaybooks/根据您的用例选择以下场景之一:
要创建 ID 映射信任协议,其中 SSSD 会根据其 SID 自动为 AD 用户和组群生成 UID 和 GID,请创建一个带有以下内容的
add-trust.ymlplaybook:--- - 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 属性,如
uidNumber和gidNumber,请创建一个包含以下内容的add-trust.ymlplaybook:--- - 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-trust或ipa-ad-trust-posix,请创建一个带有以下内容的add-trust.ymlplaybook:--- - 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 domainID 范围。如果 IdM 检测到林根域中的任何 POSIX 属性,则信任安装脚本选择
带有 POSIX 属性 ID 范围的 Active Directory 域,并假定 AD 中正确配置了 UID 和 GID。但是,如果 POSIX 属性没有在 AD 中正确设置,则您将无法解析 AD 用户。例如,如果需要访问 IdM 系统的用户和组不是林根域的一部分,而是位于林域的子域中,则安装脚本可能不会检测子 AD 域中定义的 POSIX 属性。在这种情况下,在建立信任时明确选择 POSIX ID 范围类型。
- 保存该文件。
运行 Ansible playbook。指定 playbook 文件、存储保护 secret.yml 文件的密码,以及清单文件:
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-trust.yml