使用 Ansible 在 RHEL 中安装和管理身份管理
大约 262 分钟
使用 Ansible 在 RHEL 中安装和管理身份管理
来源:官方文档 原始多页入口:使用 Ansible 在 RHEL 中安装和管理身份管理 内容规模:约 368,036 字符,276 个章节标题,741 个命令/代码块,88 条提示框
阅读提要
- 副标题:使用 Ansible playbook 安装、配置和维护 IdM 环境
- 摘要:红帽提供了 ansible-freeipa 软件包,以使管理员能够使用 Ansible 运行 Red Hat Enterprise Linux 身份管理(IdM)。您可以使用 playbook 安装 IdM 并管理用户、组、主机、访问控制和配置设置。
- 主要章节:使用 Ansible playbook 安装、配置和维护 IdM 环境;第 1 章 Ansible 术语;第 2 章 使用 Ansible playbook 来安装身份管理服务器;第 3 章 使用 Ansible playbook 安装身份管理副本;第 4 章 使用 Ansible playbook 安装身份管理客户端;第 5 章 准备您的环境以使用 Ansible playbook 管理 IdM;第 6 章 使用 Ansible playbook 备份和恢复 IdM 服务器;第 7 章 使用 Ansible playbook 配置全局 IdM 设置;第 8 章 使用 Ansible playbook 管理用户帐户;第 9 章 使用 Ansible playbook 管理用户组;第 10 章 使用 Ansible 在 IdM 中自动化组成员资格;第 11 章 使用 Ansible playbook 管理 IdM 中的自助服务规则
- 推荐阅读顺序:先看“阅读提要”和目录,再按章节查看“关键点/命令/注意”;需要原文细节时点击来源链接。
章节笔记
概览
- 该章节主要为下一级主题的入口。
使用 Ansible playbook 安装、配置和维护 IdM 环境
- 要点:摘要
第 1 章 Ansible 术语
- 要点:在使用 playbook 管理 IdM 部署前,请查看关键 Ansible 概念和术语,确保您了解清单文件、角色和 playbook 结构。
- 列表:Ansible 部分中的基本概念 概述了 Ansible 中最常使用的概念。
- 列表:用户指南概述了开始使用 Ansible 时最常见的情况和问题,例如使用命令行;使用清单;与数据交互;编写任务、play 和 playbook;以及执行 playbook。
- 列表:如何构建您的清单,提供了有关如何设计清单的提示。清单 (inventory) 是 Ansible 用于针对基础架构中的多个受管节点或主机的一组列表。
- 列表:Playbook 简介引入了 Ansible playbook 的概念,作为可重复和可重复使用的系统来管理配置、部署机器和部署复杂应用。
- 列表:Ansible roles 部分中介绍如何根据已知的文件结构自动加载变量、任务和处理程序。
- 列表:使用 playbook 中的集合 部分提供了如何简化引用 playbook 中的集合的建议。
第 2 章 使用 Ansible playbook 来安装身份管理服务器
- 要点:要将系统配置为 IdM 服务器,您可以使用 freeipa.ansible_freeipa.ipaserver Ansible 角色。将系统配置为 IdM 服务器建立 IdM 域,并允许系统为 IdM 客户端提供服务。
2.1. 先决条件
- 列表:您了解了一般的 Ansible 和 IdM 概念。
2.2. Ansible 及其安装 IdM 的优点
- 要点:与手动安装相比,使用 Ansible 部署身份管理(IdM)提供了重要的操作优势,包括集中管理和可重复部署。
- 要点:Ansible 是一个自动化工具,用于配置系统、部署软件和执行滚动更新。Ansible 包含对 IdM 的支持,您可以使用 Ansible 角色自动执行安装任务,如 IdM 服务器、副本、客户端或整个 IdM 拓扑的配置。
2.2.1. 使用 Ansible 安装 IdM 的优点
- 要点:以下列表提供了使用 Ansible 安装身份管理与手动安装的优点。
- 要点:其他资源
- 列表:您不需要登录受管节点。
- 列表:您不需要配置每个主机上的设置来单独部署。反之,您可以有一个清单文件来部署完整的集群。
- 列表:您可以稍后重复将清单文件用于管理任务,例如添加用户和主机。即使与 IdM 相关的任务,也可以重复使用清单文件。
- 列表:自动化身份管理安装
- 列表:规划身份管理
- 列表:为 IdM 服务器安装准备系统
2.3. 安装 ansible-freeipa 软件包
- 要点:在控制节点上安装 ansible-freeipa 软件包,以访问身份管理(IdM)部署和管理所需的 Ansible 角色和模块。
- 要点:先决条件
- 列表:确定控制器是一个带有有效订阅的 Red Hat Enterprise Linux 系统。否则,请参阅官方 Ansible 文档 安装指南 来获取替代安装说明。
- 列表:确保您可以通过 SSH 协议,从控制器访问受管节点。检查该受管节点是否已列在控制器的 /root/.ssh/known_hosts 文件中。
- 列表:在 Ansible 控制器上,安装 ansible-freeipa 软件包: # dnf install ansible-freeipa 角色和模块被安装到 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/roles/ 和 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/plugins/modules 目录中。
- 命令/配置摘录:
# dnf install ansible-freeipa- 注意:重要 在 RHEL 10 中,ansible-freeipa RPM 软件包只安装 freeipa.ansible_freeipa 集合。 要使用新集合,请将 freeipa.ansible_freeipa 前缀添加到角色和模块的名称中。使用完全限定名称来遵循 Ansible 建议。例如,要引用 ipahbacrule 模块,请使用 freeipa.ansible_freeipa.ipahbacrule。
2.4. 在文件系统中的 Ansible 角色位置
- 要点:在文件系统中找到 ansible-freeipa 角色和 playbook 示例,以用作 IdM 部署和管理任务的模板。
- 要点:默认情况下,ansible-freeipa 角色被安装到 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/roles/ 目录中。ansible-freeipa 软件包的结构如下:
- 列表:/usr/share/ansible/collections/ansible_collections/ansible_freeipa/roles/ 目录在 Ansible 控制器上存储 ipaserver,ipareplica,ipaclient,ipasmartcard 和 ipabackup 角色。每个角色目录都会在 README.md Markdown 文件中存储有关角色的示例、基本概述、许可证和文档。 [root@server]# ls -1 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/roles ipaclient …
- 列表:/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/ 目录将有关各个角色和拓扑的文档存储在 README.md Markdown 文件中。它还存储 playbook/ 子目录。 [root@server]# ls -1 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/ playbooks README-client.md README.md README-replica.md README-server.md README-topol…
- 列表:/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/ 目录存储示例 playbook: [root@server]# ls -1 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/ install-client.yml install-cluster.yml install-replica.yml install-server.yml uninstall-client.yml uninstall-…
- 命令/配置摘录:
[root@server]# ls -1 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/roles ipaclient ipareplica ipaserver
[root@server]# ls -1 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/ playbooks README-client.md README.md README-replica.md README-server.md README-topology.md- 注意:重要 在 RHEL 10 中,ansible-freeipa RPM 软件包只安装 freeipa.ansible_freeipa 集合。 要使用新集合,请将 freeipa.ansible_freeipa 前缀添加到角色和模块的名称中。使用完全限定名称来遵循 Ansible 建议。例如,要引用 ipahbacrule 模块,请使用 freeipa.ansible_freeipa.ipahbacrule。
2.5. 为带有集成 DNS 和集成 CA 作为根 CA 的部署设置参数
- 要点:配置清单文件,以便在使用 IdM 集成 DNS 解决方案的环境中安装带有集成 CA 作为 root CA 的 IdM 服务器。
- 要点:流程
- 列表:创建一个 ~/MyPlaybooks/ 目录: $ mkdir MyPlaybooks
- 列表:创建一个 ~/MyPlaybooks/inventory 文件。
- 列表:打开清单文件进行编辑。指定您要用作 IdM 服务器的主机的完全限定域名(FQDN)。确保 FQDN 满足以下条件: 只允许字母数字字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。 主机名必须都是小写。
- 列表:只允许字母数字字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。
- 列表:主机名必须都是小写。
- 列表:指定 IdM 域和域信息。
- 命令/配置摘录:
$ mkdir MyPlaybooks
ipaserver_setup_dns=true- 注意:注意 此流程中的清单使用 INI 格式。或者,也可以使用 YAML 或 JSON 格式。
- 注意:注意 如果没有 DNS 转发器,您的环境是隔离的,且您基础架构中来自其他 DNS 域的名称不能被解决。
2.6. 为带有外部 DNS 和集成 CA 作为根 CA 的部署设置参数
- 要点:完成这个流程,来为在使用外部 DNS 解决方案的环境中安装带有集成 CA 作为根 CA 的 IdM 服务器配置 inventory 文件。
- 要点:流程
- 列表:创建一个 ~/MyPlaybooks/ 目录: $ mkdir MyPlaybooks
- 列表:创建一个 ~/MyPlaybooks/inventory 文件。
- 列表:打开清单文件进行编辑。指定您要用作 IdM 服务器的主机的完全限定域名(FQDN)。确保 FQDN 满足以下条件: 只允许字母数字字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。 主机名必须都是小写。
- 列表:只允许字母数字字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。
- 列表:主机名必须都是小写。
- 列表:指定 IdM 域和域信息。
- 命令/配置摘录:
$ mkdir MyPlaybooks
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no [...]- 注意:注意 此流程中的清单文件使用 INI 格式。或者,也可以使用 YAML 或 JSON 格式。
- 注意:重要 指定的 firewalld 区必须存在,并且是永久的。
2.7. 使用 Ansible playbook 将集成 CA 的 IdM 服务器部署为 root CA
- 要点:运行 Ansible playbook 以使用集成证书颁发机构(CA)部署第一个 IdM 服务器,建立 IdM 域的基础。
- 要点:先决条件
- 列表:受管节点是一个具有静态 IP 地址的 Red Hat Enterprise Linux 10 系统,且是一个可正常工作的软件包管理器。
- 列表:您可以通过选择以下流程之一来设置与您的场景相对应的参数: 带有集成 DNS 的流程 带有外部 DNS 的流程
- 列表:带有集成 DNS 的流程
- 列表:带有外部 DNS 的流程
- 列表:运行 Ansible playbook: $ ansible-playbook -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server.yml
- 列表:选择以下选项之一: 如果您的 IdM 部署使用外部 DNS:将包含在 /tmp/ipa.system.records.UFRPto.db 文件中的 DNS 资源记录添加到现有的外部 DNS 服务器中。更新 DNS 记录的过程因特定的 DNS 解决方案而异。 ... Restarting the KDC Please add records in this file to your DNS system: /tmp/ipa.system.records.UFRBto.db Restarting the web server ... 重要 在将 DNS 记录添加到现有 DNS 服务器之前,服务器安装不会完成。 如果您的 IdM 部署使…
- 命令/配置摘录:
$ ansible-playbook -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server.yml
... Restarting the KDC Please add records in this file to your DNS system: /tmp/ipa.system.records.UFRBto.db Restarting the web server ...- 注意:重要 在将 DNS 记录添加到现有 DNS 服务器之前,服务器安装不会完成。
- 注意:重要 每次安装 IdM DNS 服务器后都会重复这个步骤。
2.8. 为带有集成 DNS 和外部 CA 作为根 CA 的部署设置参数
- 要点:配置清单文件,以便在使用 IdM 集成 DNS 解决方案的环境中安装带有外部 CA 作为 root CA 的 IdM 服务器(如果您的机构需要由现有企业 CA 签名的证书)。
- 要点:流程
- 列表:创建一个 ~/MyPlaybooks/ 目录: $ mkdir MyPlaybooks
- 列表:创建一个 ~/MyPlaybooks/inventory 文件。
- 列表:打开清单文件进行编辑。指定您要用作 IdM 服务器的主机的完全限定域名(FQDN)。确保 FQDN 满足以下条件: 只允许字母数字字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。 主机名必须都是小写。
- 列表:只允许字母数字字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。
- 列表:主机名必须都是小写。
- 列表:指定 IdM 域和域信息。
- 命令/配置摘录:
$ mkdir MyPlaybooks
ipaserver_setup_dns=true- 注意:注意 此流程中的清单文件使用 INI 格式。或者,也可以使用 YAML 或 JSON 格式。
- 注意:注意 如果没有 DNS 转发器,您的环境是隔离的,且您基础架构中来自其他 DNS 域的名称不能被解决。
2.9. 为带有外部 DNS 和外部 CA 作为根 CA 的部署设置参数
- 要点:配置 Ansible 清单文件,以便在与现有 DNS 和 PKI 基础架构集成时安装具有外部 DNS 和外部 CA 作为根 CA 的 IdM 服务器。
- 要点:流程
- 列表:创建一个 ~/MyPlaybooks/ 目录: $ mkdir MyPlaybooks
- 列表:创建一个 ~/MyPlaybooks/inventory 文件。
- 列表:打开清单文件进行编辑。指定您要用作 IdM 服务器的主机的完全限定域名(FQDN)。确保 FQDN 满足以下条件: 只允许字母数字字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。 主机名必须都是小写。
- 列表:只允许字母数字字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。
- 列表:主机名必须都是小写。
- 列表:指定 IdM 域和域信息。
- 命令/配置摘录:
$ mkdir MyPlaybooks
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no [...]- 注意:注意 此流程中的清单文件使用 INI 格式。或者,也可以使用 YAML 或 JSON 格式。
- 注意:重要 指定的 firewalld 区必须存在,并且是永久的。
2.10. 使用 Ansible playbook 将外部 CA 部署 IdM 服务器作为 root CA
- 要点:运行 Ansible playbook,以部署链到外部或企业证书颁发机构(CA)的 IdM 服务器,将 IdM 证书与现有 PKI 层次结构集成。
- 要点:先决条件
- 列表:受管节点是一个具有静态 IP 地址的 Red Hat Enterprise Linux 10 系统,且是一个可正常工作的软件包管理器。
- 列表:您可以通过选择以下流程之一来设置与您的场景相对应的参数: 带有集成 DNS 的流程 带有外部 DNS 的流程
- 列表:带有集成 DNS 的流程
- 列表:带有外部 DNS 的流程
- 列表:使用安装第一步的说明运行 Ansible playbook,如 install-server-step1.yml : $ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server-step1.yml
- 列表:在控制器上找到 ipa.csr 证书签名请求文件,并提交给外部的 CA。
- 命令/配置摘录:
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server-step1.yml
$ ansible-playbook -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-server-step2.yml- 注意:重要 在将 DNS 记录添加到现有 DNS 服务器之前,服务器安装不会完成。
- 注意:重要 每次安装 IdM DNS 服务器后都会重复这个步骤。
2.11. 使用 Ansible playbook 卸载 IdM 服务器或副本
- 要点:在停用硬件或降低基础架构时,使用 Ansible 从拓扑中删除 IdM 服务器或副本。
- 要点:在本例中:
- 列表:从 server123.idm.example.com 卸载 IdM 配置。
- 列表:server123.idm.example.com 和关联的主机条目从 IdM 拓扑中删除。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
--- - name: Playbook to uninstall an IdM replica hosts: ipaserver become: true roles: - role: freeipa.ansible_freeipa.ipaserver ipaserver_remove_from_domain: true state: absent
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/uninstall-server.yml- 注意:注意 在现有的身份管理(IdM)部署中,副本 和 服务器 是可交换的术语。
- 注意:注意 如果 server123.idm.example.com 的删除导致断开连接的拓扑,则删除操作将被中止。如需更多信息,请参阅 如果这会导致断开连接的拓扑,请使用 Ansible playbook 卸载 IdM 服务器。
2.12. 如果这会导致断开连接的拓扑,请使用 Ansible playbook 卸载 IdM 服务器
- 要点:当因为拓扑约束而正常卸载失败时,使用 Ansible 强制删除 IdM 服务器,指定要保留的域段。
- 要点:在示例中,server456.idm.example.com 用于从拓扑中删除副本和 FQDN 为 server123.idm.example.com server123.idm.example.com 的相关的主机条目,使某些副本与 server456.idm.example.com 以及拓扑的其余部分断开连接。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(即运行 freeipa.ansible_freeipa 模块的节点)是作为 IdM 客户端、服务器或副本的 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to uninstall an IdM replica hosts: ipaserver become: true roles: - role: freeipa.ansible_freeipa.ipaserver ipaserver_remove_from_domain: true ipaserver_remove_on_server: server456.idm.example.com ipaserver_ignore_topology_disconnect: true state: absent
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/uninstall-server.yml- 注意:注意 在现有的身份管理(IdM)部署中,副本 和 服务器 是可交换的术语。
- 注意:注意 如果只使用 remove_server_from_domain 从拓扑中删除副本不会导致断开连接的拓扑,则不需要其他选项。如果结果是断开连接的拓扑,您必须指定您要保留域的哪一部分。在这种情况下,您必须执行以下操作: 指定 ipaserver_remove_on_server 值。 将 ipaserver_ignore_topology_disconnect 设置为 True。
2.13. 其他资源
- 列表:Ansible 社区文档
- 列表:规划副本拓扑
- 列表:使用 Ansible playbook 备份和恢复 IdM 服务器
- 列表:清单基础知识:格式、主机和组
第 3 章 使用 Ansible playbook 安装身份管理副本
- 要点:使用 Ansible 部署 IdM 副本以提供冗余和负载平衡,确保在主服务器或任何副本不可用时继续的身份服务。
- 要点:将系统配置为 IdM 副本将它注册到 IdM 域中,并允许系统为域中的 IdM 客户端提供 IdM 服务。部署由 freeipa.ansible_freeipa.ipaserver Ansible 角色管理。该角色可以使用自动发现模式来识别 IdM 服务器、域和其他设置。但是,如果您在类似层的模式中部署多个副本,且不同的副本组在不同时间被部署,则您必须为每个组定义特定的服务器或副本。
3.1. 先决条件
- 要点:其他资源
- 列表:您已在 Ansible 控制节点上安装了 ansible-freeipa 软件包。
- 列表:您了解了一般的 Ansible 和 IdM 概念。
- 列表:您已规划了部署中的副本拓扑。
- 列表:安装 ansible-freeipa 软件包
- 列表:Ansible 社区文档
- 列表:规划副本拓扑
3.2. 指定用于安装 IdM 副本的基础、服务器和客户端变量
- 要点:使用服务器和客户端变量配置清单文件,以便为 IdM 副本部署准备。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已在 Ansible 控制器上安装了 ansible-freeipa 软件包。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已在 Ansible 控制器上安装了 ansible-freeipa 软件包。
- 列表:打开清单文件进行编辑。指定要成为 IdM 副本的主机的完全限定域名(FQDN)。FQDN 必须是有效的 DNS 名称: 仅允许数字、字母字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。 主机名必须都是小写。 仅定义副本 FQDN 的简单清单主机文件示例 [ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...] 如果 IdM 服务器已经部署,且在 IdM DNS 区中正确设置了 SRV 记录,那么脚本会自动发现所有其他必需的值。
- 列表:仅允许数字、字母字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。
- 列表:主机名必须都是小写。 仅定义副本 FQDN 的简单清单主机文件示例 [ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...] 如果 IdM 服务器已经部署,且在 IdM DNS 区中正确设置了 SRV 记录,那么脚本会自动发现所有其他必需的值。
- 命令/配置摘录:
[ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...]
[ipaservers] server.idm.example.com [ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...]- 注意:重要 指定的 firewalld 区必须存在,并且是永久的。
- 注意:注意 ipaclient_dns_servers 列表必须仅包含 IP 地址。主机名不允许。
3.3. 使用 Ansible playbook 指定用于安装 IdM 副本的凭证
- 要点:在清单文件中配置身份验证凭据,以授权副本注册到 IdM 域。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(即运行 freeipa.ansible_freeipa 模块的节点)是作为 IdM 客户端、服务器或副本的 IdM 域的一部分。
- 命令/配置摘录:
- name: Playbook to configure IPA replicas hosts: ipareplicas become: true vars_files: - playbook_sensitive_data.yml roles: - role: freeipa.ansible_freeipa.ipareplica state: present
[...] [ipareplicas:vars] ipaadmin_password=Secret123- 注意:注意 在安装 IdM 副本时,检查提供的 Kerberos 主体是否有所需的权限,也可以扩展来检查用户 ID 覆盖。因此,您可以使用配置为充当 IdM 管理员的 AD 管理员的凭证来部署副本。
3.4. 使用 Ansible playbook 部署 IdM 副本
- 要点:运行 Ansible playbook 以部署 IdM 副本、添加冗余并提高 IdM 域中的可用性。
- 要点:先决条件
- 列表:受管节点是一个具有静态 IP 地址的 Red Hat Enterprise Linux 10 系统,且是一个可正常工作的软件包管理器。
- 列表:您已配置了 用于安装 IdM 副本的清单文件。
- 列表:您已配置了 用于安装 IdM 副本的授权。
- 列表:运行 Ansible playbook: $ ansible-playbook -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-replica.yml
- 列表:在大型部署中,您可以调整 IdM 副本的特定参数,以提高性能。请参阅 在身份管理中调优性能 标题,来查找最适合您场景的调优说明。
- 命令/配置摘录:
$ ansible-playbook -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-replica.yml3.5. 使用 Ansible playbook 卸载 IdM 服务器或副本
- 要点:在停用硬件或降低基础架构时,使用 Ansible 从拓扑中删除 IdM 服务器或副本。
- 要点:在本例中:
- 列表:从 server123.idm.example.com 卸载 IdM 配置。
- 列表:server123.idm.example.com 和关联的主机条目从 IdM 拓扑中删除。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
--- - name: Playbook to uninstall an IdM replica hosts: ipaserver become: true roles: - role: freeipa.ansible_freeipa.ipaserver ipaserver_remove_from_domain: true state: absent
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/uninstall-server.yml- 注意:注意 在现有的身份管理(IdM)部署中,副本 和 服务器 是可交换的术语。
- 注意:注意 如果 server123.idm.example.com 的删除导致断开连接的拓扑,则删除操作将被中止。如需更多信息,请参阅 如果这会导致断开连接的拓扑,请使用 Ansible playbook 卸载 IdM 服务器。
第 4 章 使用 Ansible playbook 安装身份管理客户端
- 要点:使用 Ansible 将系统注册为身份管理(IdM)客户端,以启用集中身份验证和同时在多个主机间访问 IdM 服务。
- 要点:默认情况下,freeipa.ansible_freeipa.ipaclient Ansible 角色(其管理注册)使用自动发现模式来识别 IdM 服务器、域和其他设置。角色可以被修改为使用 Ansible playbook 使用指定的设置,例如在清单文件中。
4.1. 先决条件
- 要点:其他资源
- 列表:您已在 Ansible 控制节点上安装了 ansible-freeipa 软件包。
- 列表:您在使用 Ansible 版本 2.15 或更高版本。
- 列表:您了解了一般的 Ansible 和 IdM 概念。
- 列表:安装 ansible-freeipa 软件包
- 列表:Ansible 社区文档
4.2. 为自动发现客户端安装模式设置清单文件的参数
- 要点:在您的网络为 IdM 服务器正确配置 SRV 记录时,将清单文件配置为使用 DNS 自动发现。
- 要点:要使用 Ansible playbook 安装身份管理(IdM)客户端,请在清单文件(如 inventory)中配置目标主机参数 :
- 列表:有关主机的信息
- 列表:任务的授权
- 列表:打开 inventory 文件进行编辑。
- 列表:指定要成为 IdM 客户端的主机的完全限定主机名(FQDN)。完全限定域名必须是有效的 DNS 名称: 仅允许数字、字母字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。 主机名必须都是小写。不允许使用大写字母。 如果在 IdM DNS 区中正确设置了 SRV 记录,该脚本会自动发现所有其他必要的值。 只带有客户端 FQDN 定义的简单的清单主机文件示例 [ipaclients] client.idm.example.com [...]
- 列表:仅允许数字、字母字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。
- 列表:主机名必须都是小写。不允许使用大写字母。 如果在 IdM DNS 区中正确设置了 SRV 记录,该脚本会自动发现所有其他必要的值。 只带有客户端 FQDN 定义的简单的清单主机文件示例 [ipaclients] client.idm.example.com [...]
- 命令/配置摘录:
[ipaclients] client.idm.example.com [...]
- name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true vars_files: - playbook_sensitive_data.yml roles: - role: freeipa.ansible_freeipa.ipaclient state: present- 注意:注意 要在 RHEL 中将智能卡与图形用户界面搭配使用,请确保在 Ansible playbook 中包含 ipaclient_mkhomedir 变量。
- 注意:注意 ipaclient_dns_servers 列表必须仅包含 IP 地址。主机名不允许。
4.3. 当在客户端安装过程中无法自动发现时设置清单文件的参数
- 要点:当 DNS SRV 记录不可用时,手动指定清单文件中的 IdM 服务器、域和域。
- 要点:要使用 Ansible playbook 安装身份管理客户端,请在清单文件中配置目标主机参数,如 inventory/hosts :
- 列表:有关主机、IdM 服务器和 IdM 域或 IdM 领域的信息
- 列表:任务的授权
- 列表:指定要成为 IdM 客户端的主机的完全限定主机名(FQDN)。完全限定域名必须是有效的 DNS 名称: 仅允许数字、字母字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。 主机名必须都是小写。不允许使用大写字母。
- 列表:仅允许数字、字母字符和连字符(-)。例如,不允许使用下划线,这可能导致 DNS 失败。
- 列表:主机名必须都是小写。不允许使用大写字母。
- 列表:在 inventory/hosts 文件的相关部分中指定其他选项: [ipaservers] 部分中服务器的 FQDN,用于指示客户端将注册到哪个 IdM 服务器 以下两个选项之一: [ipaclients:vars] 部分中的 ipaclient_domain 选项,用来指示客户端将注册到的 IdM 服务器的 DNS 域名 [ipaclients:vars] 部分中的 ipaclient_realm 选项,用于指示 IdM 服务器控制的 Kerberos 域的名称 带有客户端 FQDN、服务器 FQDN 和定义的域的清单主机文件示例 [ipaclients] client.idm.example.com [ipaservers]…
- 命令/配置摘录:
[ipaclients] client.idm.example.com [ipaservers] server.idm.example.com [ipaclients:vars] ipaclient_domain=idm.example.com [...]
- name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true vars_files: - playbook_sensitive_data.yml roles: - role: freeipa.ansible_freeipa.ipaclient state: present- 注意:注意 要在 RHEL 中将智能卡与图形用户界面搭配使用,请确保在 Ansible playbook 中包含 ipaclient_mkhomedir 变量。
4.4. 使用 Ansible playbook 进行 IdM 客户端注册的授权选项
- 要点:根据您的安全要求和管理工作流,为身份管理(IdM)客户端注册选择适当的验证方法。
- 要点:您可以使用以下任一方法授权 IdM 客户端注册:
- 列表:一个随机的一次性密码(OTP)+ 管理员密码
- 列表:一个随机的一次性密码(OTP)+ admin keytab
- 列表:之前注册中的客户端 keytab
- 列表:授权注册客户端的用户 (admin) 的密码存储在清单文件中
- 列表:授权注册客户端的用户(admin) 的密码存储在 Ansible vault 中
- 命令/配置摘录:
- name: Playbook to configure IPA clients hosts: ipaclients become: true roles: - role: freeipa.ansible_freeipa.ipaclient state: true- 注意:注意 在上述两个 OTP 授权场景中,使用 kinit 命令请求管理员的 TGT 发生在第一个指定或发现的 IdM 服务器上。因此,不需要对 Ansible 控制节点进行额外的修改。
- 表格样本(共 7 行):
- 授权选项 | 清单文件
- 一个随机的一次性密码(OTP)+ 管理员密码 | [ipaclients:vars] ipaadmin_password=Secret123 ipaclient_use_otp=true
- 一个随机的一次性密码(OTP) | [ipaclients:vars] ipaclient_otp=<W5YpARl=7M.> 这个场景假定 OTP 已在安装前由 IdM admin 生成。
- 一个随机的一次性密码(OTP)+ admin keytab | [ipaclients:vars] ipaadmin_keytab=/root/admin.keytab ipaclient_use_otp=true
4.5. 使用 Ansible playbook 部署 IdM 客户端
- 要点:使用 Ansible playbook 在 IdM 环境中部署 IdM 客户端,使其能够消耗 IdM 资源。
- 要点:先决条件
- 列表:受管节点是一个具有静态 IP 地址和可工作的软件包管理器的 Red Hat Enterprise Linux 10 系统。
- 列表:您已设置了 IdM 客户端部署的参数,以对应您的部署场景: 为自动发现客户端安装模式设置清单文件的参数 当在客户端安装过程中无法自动发现时设置清单文件的参数
- 列表:为自动发现客户端安装模式设置清单文件的参数
- 列表:当在客户端安装过程中无法自动发现时设置清单文件的参数
- 列表:运行 Ansible playbook: $ ansible-playbook -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-client.yml
- 命令/配置摘录:
$ ansible-playbook -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/install-client.yml4.6. 在 Ansible 中使用一次性密码方法来安装 IdM 客户端
- 要点:在预注册主机的人员和部署它们的人员之间分离管理员权限时,使用一次性密码注册 IdM 客户端。
- 要点:您可以为身份管理(IdM)中的新主机生成一个一次性密码(OTP),并使用它来将系统注册到 IdM 域中。在示例中,您可以在为另一个 IdM 主机生成 OTP 后使用 Ansible 安装 IdM 客户端。
- 列表:一个有 IdM 管理员凭证。
- 列表:另一个有所需的 Ansible 凭证,包括对要成为 IdM 客户端的主机的 root 访问权限。
- 列表:您有 IdM admin 凭证或至少 Host Enrollment 特权以及在 IdM 中添加 DNS 记录的权限。
- 列表:您已在 Ansible 受管节点上配置了一个用户升级方法,以允许您安装 IdM 客户端。
- 列表:如果您的 Ansible 控制节点在 RHEL 8.7 或更早版本上运行,则您必须能够在 Ansible 控制节点上安装软件包。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ ssh admin@server.idm.example.com
[admin@server ~]$ ipa host-add client.idm.example.com --ip-address=172.25.250.11 --random -------------------------------------------------- Added host "client.idm.example.com" -------------------------------------------------- Host name: client.idm.example.com Random password: W5YpARl=7M.n Password: True Keytab: False Managed by: server.idm.example.com4.7. Ansible 安装后测试身份管理客户端
- 要点:即使 ansible-playbook 命令报告成功后,您可以手动验证 IdM 客户端的功能。运行这些检查会确认您的客户端系统成功验证 IdM 用户并从服务器检索身份信息。
- 要点:流程
- 列表:要测试身份管理客户端是否可以获取服务器上定义的用户的信息,请检查您是否能够解析服务器上定义的用户。例如,检查默认的 admin 用户: [user@client1 ~]$ id admin uid=1254400000(admin) gid=1254400000(admins) groups=1254400000(admins)
- 列表:要测试身份验证是否正常工作,请以另一个已存在的 IdM 用户身份执行 su - : [user@client1 ~]$ su - idm_user Last login: Thu Oct 18 18:39:11 CEST 2018 from 192.168.122.1 on pts/0 [idm_user@client1 ~]$
- 命令/配置摘录:
[user@client1 ~]$ id admin uid=1254400000(admin) gid=1254400000(admins) groups=1254400000(admins)
[user@client1 ~]$ su - idm_user Last login: Thu Oct 18 18:39:11 CEST 2018 from 192.168.122.1 on pts/0 [idm_user@client1 ~]$4.8. 使用 Ansible playbook 卸载 IdM 客户端
- 要点:在停用系统或排除注册问题时,使用 Ansible 从主机中删除 IdM 客户端配置。
- 要点:先决条件
- 列表:IdM 管理员凭证。
- 列表:受管节点是一个具有静态 IP 地址的 Red Hat Enterprise Linux 10 系统。
- 列表:运行带有卸载客户端指令的 Ansible playbook ,如 uninstall-client.yml : $ ansible-playbook -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/uninstall-client.yml
- 列表:卸载 IdM 客户端
- 命令/配置摘录:
$ ansible-playbook -v -i ~/MyPlaybooks/inventory ~/MyPlaybooks/uninstall-client.yml- 注意:重要 卸载客户端只从主机中删除基本的 IdM 配置,但会在主机上保留配置文件,以防您决定重新安装客户端。另外,卸载有以下限制: 它不会从 IdM LDAP 服务器中删除客户端主机条目。卸载仅是将主机取消注册。 它不会从 IdM 中删除任何位于客户端的服务。 它不会从 IdM 服务器中删除客户端的 DNS 条目。 它不会删除 /etc/krb5.keytab 之外的 keytab 的旧主体。 请注意,卸载会删除 IdM CA 为主机发布的所有证书。
第 5 章 准备您的环境以使用 Ansible playbook 管理 IdM
- 要点:使用正确的目录结构、清单文件和 vault 配置设置您的 Ansible 控制节点,以使用 playbook 安全地管理身份管理(IdM)。
- 要点:在将 Ansible 用作管理 IdM 的系统管理员时,最好执行以下操作:
- 列表:在您的主目录中保留专用于 Ansible playbook 的子目录,如 ~/MyPlaybooks。
- 列表:将 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/* 和 /usr/share/doc/rhel-system-roles/* 目录和子目录中的 Ansible playbook 示例复制并改编到 ~/MyPlaybooks 目录中。
- 列表:将清单文件包含在 ~/MyPlaybooks 目录中。
- 列表:IdM admin 是受管节点上的远程 Ansible 用户。
- 列表:您可以将 IdM admin 密码加密存储在 Ansible vault 中。
- 列表:您已将保护 Ansible vault 的密码放置在密码文件中。
- 注意:注意 您可以在受管节点上运行 ansible-freeipa playbook,而无需调用 root 特权。例外包括使用 ipaserver、ipareplica、ipaclient、ipasmartcard_server、ipasmartcard_client 和 ipabackup ansible-freeipa 角色的 playbook。这些角色需要具有目录和 dnf 软件包管理器的特权访问权限。
5.1. 使用 Ansible playbook 准备控制节点和受管节点以管理 IdM
- 要点:使用所需的目录结构、清单文件和加密密码库设置 Ansible 控制节点,以安全地管理 IdM 服务器。
- 要点:创建 ~/MyPlaybooks 目录并进行配置,以便您可以使用它来存储和运行 Ansible playbook。
- 列表:您已在受管节点上安装了 IdM 服务器 server.idm.example.com 和 replica.idm.example.com。
- 列表:您已配置了 DNS 和网络,以便您可以直接从控制节点登录到受管节点 server.idm.example.com 和 replica.idm.example.com。
- 列表:您需要知道 IdM admin 密码。
- 列表:进入 ~/MyPlaybooks/ 目录: $ cd ~/MyPlaybooks
- 列表:使用以下内容创建 ~/MyPlaybooks/ansible.cfg 文件: [defaults] inventory = /home/your_username/MyPlaybooks/inventory remote_user = admin
- 列表:使用以下内容创建 ~/MyPlaybooks/inventory 文件: [eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us 此配置定义了两个主机组,即 eu 和 us,用于这些位置中的主机。此外,此配置定义了 ipaserver 主机组,它包含来自 eu 和 us 组的所有主机。
- 命令/配置摘录:
$ cd ~/MyPlaybooks
[defaults] inventory = /home/your_username/MyPlaybooks/inventory remote_user = admin- 注意:注意 要在 playbook 中使用加密的 ipaadmin_password,您必须使用 vars_file 指令。例如,一个删除 IdM 用户的简单 playbook 如下所示: --- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete user robot freeipa.ansible_freeipa.ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: robot state: absent 在执行 playbook 时,通过添加 --vault-password-file=password_file 选项来指示 Ansible 使用 vault 密码来解密 ipaadmin_password。例如: ansible-playbook -i inventory --vault-password-…
- 注意:警告 为安全起见,在每次会话结束时删除 vault 密码文件,并在每个新会话开始时重复步骤 6-8。
5.2. 为 ansible-freeipa playbook 提供所需凭证的不同方法
- 要点:根据您的安全要求和自动化需求,选择提供运行使用 ansible-freeipa 角色和模块的 playbook 的适当方法。
- 要点:将密码以纯文本形式存储在 playbook 中
- 列表:运行 playbook 时,不会一直提示。
- 列表:易于实现。
- 列表:有权访问该文件的人都可以读取密码。设置错误的权限并共享文件(例如在内部或外部存储库中)都可能会破坏安全性。
- 列表:高维护性工作:如果更改了密码,则需要在所有 playbook 中进行更改。
- 列表:无人可以窃取密码,因为它不存储在任何地方。
- 列表:您可以轻松地更新密码。
5.3. 使用 ansible-freeipa 中的清单插件创建 IdM 服务器的动态清单
- 要点:使用 ansible- freeipa freeipa 清单插件使用特定角色自动发现和目标身份管理(IdM)服务器,从而消除对静态清单文件的需求。
- 要点:要将插件与 ansible-playbook 命令一起使用,请将 -i 选项的值设置为使用 freeipa 插件的清单文件。因此,playbook 中的 play 仅针对那些在清单文件中指定的角色的服务器运行。
- 列表:创建一个文件,如 inventory.yml,来根据您选择的 IdM 服务器角色或角色生成动态清单。例如,要创建具有 IdM DNS 服务器角色的服务器的清单: --- plugin: freeipa server: server.idm.example.com ipaadmin_password: Secret123 verify: ca.crt role: DNS server server 定义要开始扫描的主机的完全限定域名。 verify 定义用于验证的服务器 TLS 证书文件。 role 定义主机必须具有的所有服务器角色,以便返回主机。
- 列表:server 定义要开始扫描的主机的完全限定域名。
- 列表:verify 定义用于验证的服务器 TLS 证书文件。
- 列表:role 定义主机必须具有的所有服务器角色,以便返回主机。
- 列表:创建一个 playbook,如 bind-playbook.yml,您要针对 freeipa 清单插件标识的 IdM 服务器运行。例如,要确定 IdM DNS 服务器上安装的 bind 软件包的发行版本: --- - name: Check bind version hosts: ipaservers tasks: - name: Query bind package version package: name: bind state: present register: bind_version - name: Display bind release info debug: msg: "Bind relea…
- 列表:[可选] 创建插件识别的 IdM 服务器的图形表示: $ ansible-inventory -i inventory.yml --graph @all: |--@ungrouped |--@ipaservers: | |--replica01.idm.example.com
- 命令/配置摘录:
--- plugin: freeipa server: server.idm.example.com ipaadmin_password: Secret123 verify: ca.crt role: DNS server
--- - name: Check bind version hosts: ipaservers tasks: - name: Query bind package version package: name: bind state: present register: bind_version - name: Display bind release info debug: msg: "Bind release: {{ bind_version.results[0].version }}"5.4. RPM 和 RH AAH 集合之间的兼容性
- 要点:ansible-freeipa RPM 软件包提供的 freeipa.ansible_freeipa 集合与 Red Hat Ansible Automation Hub (RH AAH)中的命名空间和 redhat.rhel_idm 集合的名称兼容。
- 要点:安装 RPM 软件包后,您可以运行引用 AAH 集合中角色和模块的 playbook。在内部,会使用 RPM 软件包中的命名空间和名称。
- 命令/配置摘录:
--- - name: Host playbook hosts: ipaserver tasks: - name: Ensure host is present redhat.rhel_idm.ipahost: ipaadmin_password: SomeADMINpassword name: host01.example.com description: Example host ip_address: 192.168.0.123 state: present
--- - name: Host playbook hosts: ipaserver tasks: - name: Ensure host is present freeipa.ansible_freeipa.ipahost: ipaadmin_password: SomeADMINpassword name: host01.example.com description: Example host ip_address: 192.168.0.123 state: present第 6 章 使用 Ansible playbook 备份和恢复 IdM 服务器
- 要点:使用 Ansible 自动化 IdM 服务器备份和恢复,以简化灾难恢复并确保您的环境的一致性。
6.1. 使用 Ansible 创建 IdM 服务器的备份
- 要点:您可以在 Ansible playbook 中使用 ipabackup 角色创建 IdM 服务器的备份,并将其存储在 IdM 服务器上。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(即运行 freeipa.ansible_freeipa 模块的节点)是作为 IdM 客户端、服务器或副本的 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/backup-server.yml backup-my-server.yml6.2. 使用 Ansible 在 Ansible 控制器上创建 IdM 服务器的备份
- 要点:您可以在 Ansible playbook 中使用 ipabackup 角色创建 IdM 服务器的备份,并在 Ansible 控制器上自动传输它。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(即运行 freeipa.ansible_freeipa 模块的节点)是作为 IdM 客户端、服务器或副本的 IdM 域的一部分。
- 命令/配置摘录:
$ mkdir ~/ipabackups
$ cd ~/MyPlaybooks/6.3. 使用 Ansible 将 IdM 服务器的备份复制到 Ansible 控制器
- 要点:您可以使用 Ansible playbook 将 IdM 服务器的现有备份文件从 IdM 服务器复制到 Ansible 控制器。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(即运行 freeipa.ansible_freeipa 模块的节点)是作为 IdM 客户端、服务器或副本的 IdM 域的一部分。
- 命令/配置摘录:
$ mkdir ~/ipabackups
$ cd ~/MyPlaybooks/- 注意:注意 要将所有 IdM 备份复制到控制器,请将 Ansible playbook 中的 ipabackup_name 变量设置为 all : vars: ipabackup_name: all ipabackup_to_controller: true 例如,请参阅 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks 目录中的 copy-all-backups-from-server.yml Ansible playbook。
6.4. 使用 Ansible 将 IdM 服务器的备份从 Ansible 控制器复制到 IdM 服务器
- 要点:您可以使用 Ansible playbook 将 IdM 服务器的现有备份文件从 Ansible 控制器复制到 IdM 服务器。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(即运行 freeipa.ansible_freeipa 模块的节点)是作为 IdM 客户端、服务器或副本的 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/copy-backup-from-controller.yml copy-backup-from-my-controller-to-my-server.yml6.5. 使用 Ansible 从 IdM 服务器中删除备份
- 要点:您可以使用 Ansible playbook 自动从 IdM 服务器中删除旧的或不必要的备份文件。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(即运行 freeipa.ansible_freeipa 模块的节点)是作为 IdM 客户端、服务器或副本的 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/remove-backup-from-server.yml remove-backup-from-my-server.yml- 注意:注意 要从 IdM 服务器中删除所有 IdM 备份,将 Ansible playbook 中的 ipabackup_name 变量设置为 all : vars: ipabackup_name: all 例如,请参阅 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks 目录中的 remove-all-backups-from-server.yml Ansible playbook。
6.6. 使用 Ansible 从服务器中存储的备份中恢复 IdM 服务器
- 要点:您可以使用 Ansible playbook ,从存储在该主机上的备份恢复 IdM 服务器。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(即运行 freeipa.ansible_freeipa 模块的节点)是作为 IdM 客户端、服务器或副本的 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/restore-server.yml restore-my-server.yml6.7. 使用 Ansible 从 Ansible 控制器中存储的备份中恢复 IdM 服务器
- 要点:您可以使用 Ansible playbook ,从存储在 Ansible 控制器上的备份恢复 IdM 服务器。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(即运行 freeipa.ansible_freeipa 模块的节点)是作为 IdM 客户端、服务器或副本的 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/restore-server-from-controller.yml restore-my-server-from-my-controller.yml第 7 章 使用 Ansible playbook 配置全局 IdM 设置
- 要点:使用 freeipa.ansible_freeipa.config 模块检索和修改全局身份管理(IdM)配置参数,包括 CA 续订服务器设置和默认用户 shell 首选项。
- 要点:有关 FreeIPA Ansible 集合中变量和示例 playbook 的详情,请查看控制节点上的 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-config.md 文件和 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/config 目录。
7.1. 使用 Ansible playbook 检索 IdM 配置
- 要点:使用 Ansible 查询当前的 IdM 全局设置,以审核您的配置或收集自动化决策信息。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle global IdM configuration hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Query IPA global configuration freeipa.ansible_freeipa.ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" register: serverconfig - debug: msg: "{{ serverconfig }}"
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/config/retrieve-config.yml [...] TASK [debug] ok: [server.idm.example.com] => { "msg": { "ansible_facts": { "discovered_interpreter_ }, "changed": false, "config": { "ca_renewal_master_server": "server.idm.example.com", "configstring": [ "AllowNThash", "KDC:Disable Last Success" ], "defaultgroup": "ipausers", "defaultshell": "/bin/bash", "emaildomain": "idm.example.com", "enable_migration": false, "groupsearch": [ "cn", "description" ], …7.2. 使用 Ansible playbook 配置 IdM CA 续订服务器
- 要点:使用 Ansible 配置身份管理(IdM) CA 续订服务器,确保正确的主机处理自动续订 CA 子系统证书。
- 要点:有关 IdM CA 续订服务器角色的详情,请参阅 使用 IdM CA 续订服务器。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ ipa config-show | grep 'CA renewal' IPA CA renewal master: server.idm.example.com
--- - name: Playbook to handle global DNS configuration hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: set ca_renewal_master_server freeipa.ansible_freeipa.ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" ca_renewal_master_server: carenewal.idm.example.com7.3. 使用 Ansible playbook 为 IdM 用户配置默认 shell
- 要点:为新 IdM 用户设置默认登录 shell,以匹配您的机构标准或应用程序要求。
- 要点:shell 是一个接受和解释命令的程序。Red Hat Enterprise Linux (RHEL) 中提供了多个 shell,如 bash、sh、ksh、zsh、fish 等。Bash 或 /bin/bash 是大多数 Linux 系统中常用的 shell,它通常是 RHEL 上用户帐户的默认 shell。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to ensure some config options are set hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Set defaultlogin and maxusername - freeipa.ansible_freeipa.ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" defaultshell: /bin/bash maxusername: 64
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/config/ensure-config-options-are-set.yml7.4. 使用 Ansible 为 IdM 域配置 NetBIOS 名称
- 要点:NetBIOS 名称用于 Microsoft Windows (SMB)类型的共享和消息。您可以使用 NetBIOS 名称来映射驱动器或连接到打印机。使用 Ansible playbook 为您的身份管理(IdM)域配置 NetBIOS 名称。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
--- - name: Playbook to change IdM domain netbios name hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Set IdM domain netbios name freeipa.ansible_freeipa.ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" netbios_name: IPADOM7.5. 使用 Ansible 确保 IdM 用户和组有 SID
- 要点:为 IdM 用户和组生成安全标识符(SID),以便在 Kerberos 票据中启用 PAC 数据,这是跨域信任所必需的。
- 要点:身份管理(IdM)服务器可以根据本地域的 ID 范围中的数据,在内部将唯一安全标识符(SID)分配给 IdM 用户和组。SID 存储在用户和组对象中。
- 列表:为已存在的 IdM 用户和用户组生成 SID。
- 列表:为 IdM 新用户和组启用 SID 生成。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
--- - name: Playbook to ensure SIDs are enabled and users and groups have SIDs hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Enable SID and generate users and groups SIDS freeipa.ansible_freeipa.ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" enable_sid: true add_sids: true- 注意:注意 使用 add_sids: true 时,您还必须将 enable_sid 变量设置为 true。
第 8 章 使用 Ansible playbook 管理用户帐户
- 要点:使用 Ansible playbook 创建、修改和删除身份管理(IdM)用户帐户,以自动化域中的用户生命周期管理。IdM 支持三个用户帐户状态: Stage、Active、Preserved。
- 要点:有关 FreeIPA Ansible 集合中变量和示例 playbook 的详情,请查看控制节点上的 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-user.md 文件和 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/user 目录。
8.1. 使用 Ansible playbook 确保存在一个 IdM 用户
- 要点:使用 Ansible playbook 创建或验证是否存在 IdM 用户帐户,以自动化域中的用户调配。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create user idm_user freeipa.ansible_freeipa.ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: idm_user first: Alice last: Acme uid: 1000111 gid: 10011 phone: "+555123457" email: idm_user@acme.com passwordexpiration: "2023-01-19 23:59:59" password: "Password123" update_password: on_create
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-IdM-user.yml- 注意:注意 如果您使用 update_password: on_create 选项,Ansible 仅在创建用户时创建用户密码。如果已使用密码创建了用户,Ansible 不会生成新的密码。
8.2. 使用 Ansible playbook 确保存在多个 IdM 用户
- 要点:在单个 Ansible playbook 运行中创建或验证多个身份管理(IdM)用户帐户,以便批量置备用户。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create user idm_users freeipa.ansible_freeipa.ipauser: ipaadmin_password: "{{ ipaadmin_password }}" users: - name: idm_user_1 first: Alice last: Acme uid: 10001 gid: 10011 phone: "+555123457" email: idm_user@acme.com passwordexpiration: "2023-01-19 23:59:59" password: "Password123" - name: idm_user_2 first: Bob last: Acme uid: 100011 gid: 10011 - name: idm_user_3 first: Eve last: Acme uid: 1000111 gid: 10011
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-users.yml- 注意:注意 如果没有指定 update_password: on_create 选项,Ansible 每次运行 playbook 时都会重新设置用户密码:如果用户自上次运行 playbook 起更改了密码,则 Ansible 重新设置密码。
8.3. 使用 Ansible playbook 确保存在 JSON 文件中的多个 IdM 用户
- 要点:使用 Ansible 从 JSON 文件导入用户帐户,以便从外部数据源或 HR 系统批量置备用户。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Ensure users' presence hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Include users_present.json include_vars: file: users_present.json - name: Users present freeipa.ansible_freeipa.ipauser: ipaadmin_password: "{{ ipaadmin_password }}" users: "{{ users }}"
{ "users": [ { "name": "idm_user_1", "first": "First 1", "last": "Last 1", "password": "Password123" }, { "name": "idm_user_2", "first": "First 2", "last": "Last 2" }, { "name": "idm_user_3", "first": "First 3", "last": "Last 3" } ] }8.4. 确保没有用户使用 Ansible playbook
- 要点:当不再需要员工离开或帐户时,使用 Ansible 删除 IdM 用户帐户以自动化用户取消置备。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete users idm_user_1, idm_user_2, idm_user_3 freeipa.ansible_freeipa.ipauser: ipaadmin_password: "{{ ipaadmin_password }}" users: - name: idm_user_1 - name: idm_user_2 - name: idm_user_3 state: absent
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/delete-users.yml第 9 章 使用 Ansible playbook 管理用户组
- 要点:使用 Ansible 创建和管理 IdM 用户组,以组织具有常见特权、密码策略和访问权限的用户。
- 要点:身份管理(IdM)中的用户组可以包括以下内容:
- 列表:IdM 用户
- 列表:其他 IdM 用户组
- 列表:外部用户,即 IdM 之外的用户
9.1. 使用 Ansible playbook 确保存在 IdM 组和组成员
- 要点:创建或验证身份管理(IdM)组,并使用 Ansible 添加成员来自动化组调配和成员资格管理。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle groups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create group ops with gid 1234 freeipa.ansible_freeipa.ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: ops gidnumber: 1234 - name: Create group sysops freeipa.ansible_freeipa.ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: sysops user: - idm_user - name: Create group appops freeipa.ansible_freeipa.ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: appops - name: Add group members sysops and appops to group ops freeipa.ansible_freeipa.ipagroup: ipaadmin_password: "…
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-group-members.yml9.2. 使用 Ansible 在一个任务中添加多个 IdM 组
- 要点:使用 ansible-freeipa ipagroup 模块中的 groups batch 选项,在单个 Ansible 任务中创建多个身份管理(IdM}组,以简化组置备。
- 要点:使用 groups 选项,您还可以指定多个仅应用到特定组的组变量。根据 name 变量定义此组,这是 groups 选项的唯一强制变量。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to add nonposix and external groups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add nonposix group sysops and external group appops freeipa.ansible_freeipa.ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" groups: - name: sysops nonposix: true - name: appops external: true
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/add-nonposix-and-external-groups.yml9.3. 使用 Ansible 启用 AD 用户来管理 IdM
- 要点:通过在 IdM 组中添加 ID 覆盖,为活动目录(AD)用户授予身份管理(IdM)管理特权,从而消除了对单独的 IdM 帐户的需求。
- 要点:在以下示例中,用户 ID 覆盖是在使用 AD 建立信任后在 Default Trust View 中创建的 AD 用户的覆盖。
- 列表:您知道 IdM admin 密码。
- 列表:您已 安装了一个与 AD 的信任。
- 列表:AD 用户的用户 ID 覆盖在IdM 中已存在。如果不存在,请使用 ipa idoverrideuser-add 'default trust view' ad_user@ad.example.com 命令创建它。
- 列表:您要添加用户 ID 覆盖的组已在 IdM 中存在。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
--- - name: Playbook to ensure presence of users in a group hosts: ipaserver tasks: - name: Ensure the ad_user@ad.example.com user ID override is a member of the admins group: freeipa.ansible_freeipa.ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: admins idoverrideuser: - ad_user@ad.example.com9.4. 使用 Ansible playbook 确保 IdM 用户组中存在成员管理器
- 要点:将组成员资格管理委派给特定的用户或组,允许他们在不完全管理特权的情况下添加和删除成员。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure user test is present for group_a freeipa.ansible_freeipa.ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_user: test - name: Ensure group_admins is present for group_a freeipa.ansible_freeipa.ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_group: group_admins
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-member-managers-user-groups.yml9.5. 使用 Ansible playbook 确保 IdM 用户组中没有成员管理者
- 要点:在重新构建委派或撤销管理职责时,从用户或组中删除成员管理者特权。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了 ipaadmin_password。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了 ipaadmin_password。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager user and group members are absent for group_a freeipa.ansible_freeipa.ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_user: test membermanager_group: group_admins action: member state: absent
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-member-managers-are-absent.yml9.6. 其它资源
- 列表:在 IdM CLI 中管理用户组
第 10 章 使用 Ansible 在 IdM 中自动化组成员资格
- 要点:使用 Ansible 配置自动成员规则,根据其属性自动将用户和主机分配给组,从而减少手动管理。例如,您可以:
- 列表:根据员工的经理、地点、职位或任何其他属性将员工的用户条目分成不同的组。
- 列表:根据它们的类、位置或任何其他属性,将主机分成不同的组。
- 列表:将所有用户或全部主机添加到单个全局组。
10.1. 使用 Ansible 确保 IdM 用户组的自动成员规则存在
- 要点:使用 Ansible 为身份管理(IdM)用户组创建自动成员规则,以根据其属性自动将新用户分配到组中。
- 要点:在以下示例中,您要确保 testing_ group 用户组的自动成员规则 存在。
- 列表:IdM 中存在 testing_group 用户组。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/automember/automember-group-present.yml automember-group-present-copy.yml10.2. 使用 Ansible 确保指定的条件在 IdM 用户组自动成员规则中存在
- 要点:使用 Ansible 为身份管理(IdM)用户组自动成员规则添加条件,以定义基于用户属性自动组成员资格的条件。
- 要点:在以下示例中,您要确保 testing_group 组的 自动成员 规则中存在与 UID 相关的条件。通过指定 .* 条件,您可以确保所有将来的 IdM 用户都自动成为 testing_group 的成员。
- 列表:testing_group 用户组和自动成员用户组规则在 IdM 中存在。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/automember/automember-hostgroup-rule-present.yml automember-usergroup-rule-present.yml10.3. 使用 Ansible 确保条件在 IdM 用户组自动成员规则中不存在
- 要点:使用 Ansible 从身份管理(IdM)用户组自动成员规则中删除条件,以防止特定用户自动添加到组中。
- 要点:在以下示例中,您可以确保没有 自动成员规则 中的条件,该条件指定应包含初始为 dp 的用户。将自动成员规则应用到 testing_group 组。通过应用条件,您可以确保将来首字母为 dp 的用户不会成为 testing_group 的成员。
- 列表:testing_group 用户组和自动成员用户组规则在 IdM 中存在。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/automember/automember-hostgroup-rule-absent.yml automember-usergroup-rule-absent.yml10.4. 使用 Ansible 确保 IdM 用户组的自动成员规则不存在
- 要点:使用 Ansible 删除身份管理(IdM)用户组的自动成员规则,以禁用基于用户属性的自动组分配。
- 要点:在以下示例中,您可以确保 testing_group 组的 自动成员 规则不存在。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/automember/automember-group-absent.yml automember-group-absent-copy.yml- 注意:注意 删除自动成员规则也会删除与规则相关的所有条件。要只从规则中删除特定条件,请参阅 使用 Ansible 确保 IdM 用户组自动成员规则中的一个条件不存在。
10.5. 使用 Ansible 确保 IdM 主机组自动成员规则中存在条件
- 要点:使用 Ansible 为身份管理(IdM)主机组自动成员规则添加条件,以根据其属性(如 FQDN 模式)自动将主机分配到组。
- 要点:在示例中,您可以确保 FQDN 为 configured. idm.example.com 的主机是 primary_dns_domain_hosts 主机组的成员,以及 FQDN 为 scc. example.org 的主机不是 primary_dns_domain_hosts 主机组的成员。
- 列表:IdM 中存在 primary_dns_domain_hosts 主机组和自动成员主机组规则。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/automember/automember-hostgroup-rule-present.yml automember-hostgroup-rule-present-copy.yml10.6. 其他资源
- 列表:使用 IdM CLI 自动化组成员资格
第 11 章 使用 Ansible playbook 管理 IdM 中的自助服务规则
- 要点:使用 Ansible 定义自助服务访问规则,以允许身份管理(IdM)用户修改其自己的目录条目上的特定属性。
11.1. 使用 Ansible 确保存在自助服务规则
- 要点:使用 Ansible 在身份管理(IdM)中创建自助服务规则,使用户能够修改其自己的目录条目上的特定属性,如显示名称或初始条目。
- 要点:在以下示例中,新的 Users can manage their own name details 规则授予用户更改他们自己的指定名称、display name 、title 和 initials 属性的权限。例如,这允许他们更改其显示名称或缩写(如果想更改)。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/selfservice/selfservice-present.yml selfservice-present-copy.yml11.2. 使用 Ansible 确保缺少自助服务规则
- 要点:使用 Ansible 从身份管理(IdM)中删除自助服务规则,以防止用户修改其自己的目录条目上的特定属性。
- 要点:在以下示例中,您可以确保 Users can manage their own name details 自助服务规则在 IdM 中不存在。例如,这可确保用户无法更改自己的显示名称或初始名称。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/selfservice/selfservice-absent.yml selfservice-absent-copy.yml11.3. 使用 Ansible 确保自助服务规则具有特定属性
- 要点:使用 Ansible 将属性添加到现有身份管理(IdM)自助服务规则,以扩展用户可以修改其自身的用户条目字段。
- 要点:在以下示例中,您可以确保 Users can manage their own name details 自助服务规则也具有 surname 成员属性。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:Users can manage their own name details 自助服务规则存在于 IdM 中。
- 列表:进入 ~/MyPlaybooks/ 目录: $ cd ~/MyPlaybooks/
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/selfservice/selfservice-member-present.yml selfservice-member-present-copy.yml11.4. 使用 Ansible 确保自助服务规则没有特定属性
- 要点:使用 Ansible 从现有身份管理(IdM)自助服务规则中删除属性,以限制用户可以修改哪个用户条目字段。
- 要点:在以下示例中,您可以确保 Users can manage their own name details 自助服务规则没有 givenname 和 surname 成员属性。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/selfservice/selfservice-member-absent.yml selfservice-member-absent-copy.yml11.5. 其他资源
- 列表:使用 CLI 管理 IdM 中的自助服务规则
第 12 章 将权限委托到用户组,以使用 Ansible playbook 管理用户
- 要点:使用 Ansible 配置委派规则,以授予一个用户组权限来管理另一个组的条目,从而分发管理职责。
- 要点:委派是身份管理(IdM)中的访问控制方法之一,以及自助服务规则和基于角色的访问控制(RBAC)。
12.1. 使用 Ansible 确保存在委托规则
- 要点:使用 Ansible 在身份管理(IdM)中创建委派规则,以授予一个用户组权限来管理另一个组成员的特定属性。
- 要点:在这个示例中,新的 basic manager attributes 委托规则授予 managers 组为 employees 组成员读取和写入以下属性的权限:
- 列表:businesscategory
- 列表:departmentnumber
- 列表:employeenumber
- 列表:employeetype
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/delegation/delegation-present.yml delegation-present-copy.yml12.2. 使用 Ansible 确保没有委托规则
- 要点:使用 Ansible 从身份管理(IdM)中删除委派规则,以撤销用户组的权限来管理另一个组成员的属性。
- 要点:以下示例描述了如何确保自定义 basic manager attributes 委托规则在 IdM 中不存在。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks>/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/delegation/delegation-present.yml delegation-absent-copy.yml12.3. 使用 Ansible 确保委托规则具有特定属性
- 要点:使用 Ansible 将属性添加到现有身份管理(IdM)委派规则,以修改组可为另一个组的成员管理哪些用户条目字段。
- 要点:在以下示例中,您可以确保 basic manager attributes 委派规则只有 departmentnumber 成员属性。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/delegation/delegation-member-present.yml delegation-member-present-copy.yml12.4. 使用 Ansible 确保委托规则没有特定的属性
- 要点:使用 Ansible 从现有身份管理(IdM)委派规则中删除属性,以限制组可以为另一个组的成员管理哪些用户条目字段,从而限制不必要的访问。
- 要点:在示例中,您确保 basic manager attributes 委托规则没有 employeenumber 和 employeetype 成员属性。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/delegation/delegation-member-absent.yml delegation-member-absent-copy.yml12.5. 其他资源
- 列表:委托规则
第 13 章 在 IdM 中使用 Ansible playbook 管理基于角色的访问控制
- 要点:使用 Ansible 在身份管理(IdM)中定义基于角色的访问控制(RBAC)规则,创建具有特定职责区域的管理员分层系统。
- 要点:RBAC 是一个根据角色、特权和权限定义的策略中立访问控制机制:
- 列表:Permissions 授予执行特定任务的权利,如添加或删除用户、修改组并启用读访问。
- 列表:Privileges(特权) 结合了权限,例如添加新用户所需的所有权限。
- 列表:Roles(角色) 向用户、用户组、主机或主机组授予一组特权。
13.1. IdM 中的权限
- 要点:IdM 权限将 LDAP 条目上的特定操作定义为基于角色的访问控制(RBAC)的基本单元。作为 IdM 的基础构建块运行,可以将权限分配给多个特权。
- 要点:一个或多个权利定义了允许的操作 :
- 列表:write
- 列表:读取
- 列表:search
- 列表:compare
- 列表:add
- 列表:delete
- 注意:注意 如果目标 LDAP 条目不包含任何对组成员资格的引用,则不会应用 memberof 属性权限。
- 注意:注意 权限不能包含其他权限。
13.2. 默认管理的权限
- 要点:了解 IdM 管理的权限与用户创建的权限以及如何使用包含或排除的属性进行扩展。
- 要点:管理的权限是 IdM 默认附带的权限。它们的行为与用户创建的其他权限类似,但有以下区别:
- 列表:您无法删除它们或修改其名称、位置和目标属性。
- 列表:它们有三组属性: Default 属性,用户无法修改它们,因为它们由 IdM 管理 Included 属性,它们是用户添加的额外属性 Excluded 属性,这些属性由用户删除
- 列表:Default 属性,用户无法修改它们,因为它们由 IdM 管理
- 列表:Included 属性,它们是用户添加的额外属性
- 列表:Excluded 属性,这些属性由用户删除
- 列表:添加自动成员重新构建成员身份任务
- 注意:注意 虽然您无法删除受管权限,但将其绑定类型设置为权限并从所有特权中删除托管权限会有效地禁用该权限。
- 注意:注意 如果您试图通过命令行修改受管权限,系统不允许更改您无法修改的属性,命令会失败。如果您试图从 Web UI 修改受管权限,则无法修改的属性将被禁用。
13.3. IdM 中的特权
- 要点:IdM 特权组合了特定管理任务所需的多个权限,如创建用户或管理组。
- 要点:虽然权限提供了执行单个操作的权限,但某些 IdM 任务需要多个权限才能成功。因此,特权组合了执行特定任务所需的不同权限。
- 列表:创建新用户条目
- 列表:重置用户密码
- 列表:将新用户添加到默认 IPA 用户组
- 注意:注意 特权可能不包含其他特权。
13.4. IdM 中的角色
- 要点:IdM 角色将特权分组在一起,以定义特定用户或组可在您的域中执行的操作。
- 要点:实际上,权限授予执行给定低级别任务(如创建用户条目和向组添加条目)的能力,特权组合了更高级别任务所需的一个或多个这些权限(如在给定组中创建新用户)。角色根据需要收集权限:例如,用户管理员角色能够添加、修改和删除用户。
- 注意:重要 角色用于对允许的操作进行分类。它们不用作实施特权升级或防止特权升级的工具。
- 注意:注意 角色不能包含其他角色。
13.5. Identity Management 中的预定义角色
- 要点:查看 Red Hat Enterprise Linux 身份管理(IdM)中提供的默认 RBAC 角色,以了解为常见管理任务分配哪些特权。
- 要点:IdM 提供以下预定义角色范围:
- 表格样本(共 7 行):
- 角色 | 特权 | 描述
- Enrollment Administrator | 主机注册 | 负责客户端或主机、注册
- helpdesk | 改用户和重置密码,修改组成员身份 | 负责执行简单的用户管理任务
- IT Security Specialist | Netgroups Administrators, HBAC Administrator, Sudo Administrator | 负责管理安全策略,如基于主机的访问控制、sudo 规则
13.6. 使用 Ansible 确保存在带有特权的 IdM RBAC 角色
- 要点:使用 Ansible 在身份管理(IdM)中创建自定义 RBAC 角色,为特定管理职责定义唯一的特权组合。
- 要点:在这个示例中,新的 user_and_host_administrator 角色默认包含 IdM 中的以下权限的唯一组合:
- 列表:Group Administrators
- 列表:User Administrators
- 列表:Stage User Administrators
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 命令/配置摘录:
$ cd ~/<MyPlaybooks>/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/role/role-member-user-present.yml role-member-user-present-copy.yml13.7. 使用 Ansible 确保缺少 IdM RBAC 角色
- 要点:使用 Ansible 从身份管理(IdM)中删除 RBAC 角色,以防止意外地分配给用户或组。
- 要点:以下示例描述了如何确保 IdM 中不存在自定义 user_and_host_administrator 角色。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/<MyPlaybooks>/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/role/role-is-absent.yml role-is-absent-copy.yml13.8. 使用 Ansible 确保为一组用户分配 IdM RBAC 角色
- 要点:使用 Ansible 为身份管理(IdM)中的用户组分配 RBAC 角色,以一次性为多个用户授予一组管理特权。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/<MyPlaybooks>/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/role/role-member-group-present.yml role-member-group-present-copy.yml13.9. 使用 Ansible 确保没有将特定用户分配给 IdM RBAC 角色
- 要点:在用户更改角色或离开组织时,使用 Ansible 从身份管理(IdM)中的特定用户中删除 RBAC 角色分配,以撤销管理特权。
- 要点:在以下示例中,您可以确保没有将名为 user_01 和 user_02 的用户分配给 helpdesk 角色。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/<MyPlaybooks>/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/role/role-member-user-absent.yml role-member-user-absent-copy.yml13.10. 使用 Ansible 确保服务是 IdM RBAC 角色的成员
- 要点:通过将服务添加为角色成员,授予 RBAC 角色权限来管理特定的服务,从而启用委派的服务管理。
- 要点:以下示例描述了如何确保自定义 web_administrator 角色可以管理 client01.idm.example.com 上运行的 HTTP 服务。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/<MyPlaybooks>/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/role/role-member-service-present-absent.yml role-member-service-present-copy.yml13.11. 使用 Ansible 确保主机是 IdM RBAC 角色的成员
- 要点:使用 Ansible 将特定主机添加到身份管理(IdM)中的 RBAC 角色,以授予该主机的角色管理权限。
- 要点:在以下示例中,您可以确保自定义 web_administrator 角色可以管理运行 HTTP 服务的 client01.idm.example.com IdM 主机。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/<MyPlaybooks>/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/role/role-member-host-present.yml role-member-host-present-copy.yml13.12. 使用 Ansible 确保主机组是 IdM RBAC 角色的成员
- 要点:使用 Ansible 将主机组添加到身份管理(IdM)中的 RBAC 角色,以便该角色可以管理该组中的所有主机。
- 要点:在以下示例中,您可以确保自定义 web_administrator 角色可以管理运行 HTTP 服务的 IdM 主机的 web_servers 组。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/<MyPlaybooks>/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/role/role-member-hostgroup-present.yml role-member-hostgroup-present-copy.yml13.13. 其他资源
- 列表:IdM 中的访问控制
第 14 章 使用 Ansible playbook 管理 RBAC 特权
- 要点:使用 Ansible 创建和修改 RBAC 特权,将权限分组在一起,以分配给管理角色。
- 要点:基于角色的访问控制 (RBAC) 是一种基于角色、特权和权限定义的策略中立访问控制机制。尤其是在大型公司,使用 RBAC 可以帮助创建具有各个职责领域的管理员分层系统。
14.1. 先决条件
- 要点:如需更多信息,您可以参阅 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/ 目录中相关的 README-privilege.md 文件和 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/ipaprivilege 目录中 playbook 示例。
- 列表:您了解 RBAC 的概念和原则。
14.2. 使用 Ansible 确保存在自定义 IdM RBAC 特权
- 要点:使用 Ansible 在身份管理(IdM)中创建自定义 RBAC 特权,作为对管理角色的权限进行分组。
- 要点:要在 Identity Management (IdM) 基于角色的访问控制 (RBAC) 中有一个完全设计的自定义权限,您需要逐步进行:
- 列表:创建没有附加权限的特权。
- 列表:将您选择的权限添加到特权。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/privilege/privilege-present.yml privilege-present-copy.yml14.3. 使用 Ansible 确保自定义 IdM RBAC 特权中存在成员权限
- 要点:使用 Ansible 为 Identity Management (IdM)中的现有自定义特权添加权限,以定义特权授予的完整操作集合。
- 要点:要在 IdM 基于角色的访问控制(RBAC)中具有完全功能的自定义权限,您需要逐步进行:
- 列表:创建没有附加权限的特权。
- 列表:将您选择的权限添加到特权。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/privilege/privilege-member-present.yml privilege-member-present-copy.yml14.4. 使用 Ansible 确保 IdM RBAC 特权不包括权限
- 要点:使用 Ansible 从身份管理(IdM)中的 RBAC 特权中删除权限,以限制该特权授予的能力。
- 要点:作为身份管理系统管理员 (IdM),您可以自定义 IdM 基于角色的访问控制。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/privilege/privilege-member-absent.yml privilege-member-absent-copy.yml14.5. 使用 Ansible 重命名自定义 IdM RBAC 特权
- 要点:当当前名称不再准确描述其权限时,使用 Ansible 在身份管理(IdM)中重命名 RBAC 特权。
- 要点:以下流程描述了如何重命名权限,例如,您已从其中删除了一些权限。因此,特权的名称不再准确。在示例中,管理员将 full_host_administration 特权重命名为 limited_host_administration。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/privilege/privilege-present.yml rename-privilege.yml14.6. 使用 Ansible 确保缺少 IdM RBAC 特权
- 要点:在重新组织访问控制或移除过时的特权分组时,使用 Ansible 从身份管理(IdM)删除 RBAC 特权。
- 要点:作为身份管理系统管理员 (IdM),您可以自定义 IdM 基于角色的访问控制。以下示例描述了如何确保缺少 CA 管理员特权。因此,admin 管理员可能成为在 IdM 中管理证书颁发机构的唯一用户。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/privilege/privilege-absent.yml privilege-absent-copy.yml14.7. 其他资源
- 列表:IdM 中的特权
- 列表:IdM 中的权限
第 15 章 使用 Ansible playbook 在 IdM 中管理 RBAC 权限
- 要点:使用 Ansible 定义粒度 RBAC 权限,以控制特定的操作,如添加用户、修改组或启用读取访问权限。
- 要点:基于角色的访问控制 (RBAC) 是一种基于角色、特权和权限定义的策略中立访问控制机制。尤其是在大型公司,使用 RBAC 可以帮助创建具有各个职责领域的管理员分层系统。
15.1. 先决条件
- 要点:如需更多信息,您可以参阅 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/ 目录中相关的 README-permission.md 文件和 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/ipapermission 目录中的 playbook 示例。
- 列表:您了解 RBAC 的概念和原则。
15.2. 使用 Ansible 确保存在 RBAC 权限
- 要点:使用 Ansible 在身份管理(IdM)中创建 RBAC 权限,以定义用户可以对目录条目执行特定的操作。
- 要点:作为身份管理系统管理员 (IdM),您可以自定义 IdM 基于角色的访问控制 (RBAC)。您可以使用 Ansible playbook 确保 IdM 中存在权限,以便可以将其添加到特权中。在以下示例中,您可以确保以下目标状态:
- 列表:MyPermission 权限存在。
- 列表:MyPermission 权限只能应用到主机。
- 列表:授予了包含权限的用户可以对条目执行以下所有可能的操作: 写 读 搜索 比较 添加 删除
- 列表:写
- 列表:读
- 列表:搜索
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/permission/permission-present.yml permission-present-copy.yml15.3. 使用 Ansible 确保存在带有属性的 RBAC 权限
- 要点:使用 Ansible 在身份管理(IdM)中创建 RBAC 权限,用于定义用户可以对条目执行的操作,如读取、写入、添加和删除,以及具有权限的用户可以对条目管理哪些特定属性。
- 要点:作为身份管理系统管理员 (IdM),您可以自定义 IdM 基于角色的访问控制 (RBAC)。您可以使用 Ansible playbook 确保 IdM 中存在权限,以便可以将其添加到特权中。在以下示例中,您可以确保以下目标状态:
- 列表:MyPermission 权限存在。
- 列表:MyPermission 权限只能用于添加主机。
- 列表:获得了包含权限的用户可以在主机条目上执行以下所有可能的操作: 写 读 搜索 比较 添加 删除
- 列表:写
- 列表:读
- 列表:搜索
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/permission/permission-present.yml permission-present-with-attribute.yml- 注意:注意 创建或修改权限时可以指定的属性类型不受 IdM LDAP 模式的限制。但是,当 object_type 是 host 时指定 attrs: car_licence,会导致在使用权限并为一个主机添加特定的 car 许可证时出现 ipa: ERROR: attribute "car-license" not allowed 错误。
15.4. 使用 Ansible 确保缺少 RBAC 权限
- 要点:使用 Ansible 从身份管理(IdM)中删除 RBAC 权限,以防止它被分配到任何特权。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/permission/permission-absent.yml permission-absent-copy.yml15.5. 使用 Ansible 确保属性是 IdM RBAC 权限的成员
- 要点:使用 Ansible 将属性添加到身份管理(IdM)中的 RBAC 权限,以指定具有该权限的用户可以管理哪些条目属性。
- 要点:作为身份管理系统管理员 (IdM),您可以自定义 IdM 基于角色的访问控制 (RBAC)。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/permission/permission-member-present.yml permission-member-present-copy.yml- 注意:注意 创建或修改权限时可以指定的属性类型不受 IdM LDAP 模式的限制。但是,当 object_type 是 host 时指定 attrs: car_licence,会导致在使用权限并为一个主机添加特定的 car 许可证时出现 ipa: ERROR: attribute "car-license" not allowed 错误。
15.6. 使用 Ansible 确保属性不是 IdM RBAC 权限的成员
- 要点:使用 Ansible 从身份管理(IdM)中的 RBAC 权限中删除属性,以防止具有该权限的用户设置属性。
- 要点:作为身份管理系统管理员 (IdM),您可以自定义 IdM 基于角色的访问控制 (RBAC)。
- 列表:MyPermission 权限存在。
- 列表:具有特权的用户创建的主机条目包含 MyPermission 权限,不能具有 description 属性。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/permission/permission-member-absent.yml permission-member-absent-copy.yml15.7. 使用 Ansible 重命名 IdM RBAC 权限
- 要点:使用 Ansible 在身份管理(IdM)中重命名 RBAC 权限,以便在当前名称不再准确时更新其名称。
- 要点:在以下示例中,您要将 MyPermission 重命名为 MyNewPermission。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/permission/permission-renamed.yml permission-renamed-copy.yml15.8. 其他资源
- 列表:IdM 中的权限
- 列表:IdM 中的特权
第 16 章 使用 Ansible 管理 IdM 中的复制拓扑
- 要点:使用 Ansible playbook 自动管理 IdM 服务器复制,以维护冗余服务器配置,启用对服务器故障的快速恢复,并确保您的机构不间断的域服务。
- 要点:当您创建副本时,身份管理(IdM)会在初始服务器和副本之间创建一个复制协议。然后,复制的数据会存储在拓扑后缀中,当两个副本在它们的后缀之间有复制协议时,后缀会形成一个拓扑段。
- 列表:如何配置其他服务器以保持向域提供服务,以防一台服务器出现故障。
- 列表:如何根据剩余的服务器创建新副本来恢复丢失的服务器。
16.1. 使用 Ansible 确保 IdM 中存在复制协议
- 要点:自动化服务器到服务器数据共享,以保持冗余并防止服务中断。
- 要点:存储在身份管理 (IdM) 服务器上的数据存储基于复制协议:配置了两个服务器时,它们共享其数据。复制协议始终为现实:数据从第一个副本复制到另一个副本,另一个副本复制到第一个副本。
- 列表:确保您了解设计 在拓扑中连接 IdM 副本的准则 中列出的 IdM 拓扑的建议。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/topology/add-topologysegment.yml add-topologysegment-copy.yml16.2. 使用 Ansible 确保多个 IdM 副本之间存在复制协议
- 要点:自动化验证并在服务器基础架构中建立数据共享连接,以保持高可用性。
- 要点:存储在身份管理 (IdM) 服务器上的数据存储基于复制协议:配置了两个服务器时,它们共享其数据。复制协议始终为现实:数据从第一个副本复制到另一个副本,另一个副本复制到第一个副本。
- 列表:您已查看了 在拓扑中连接副本中列出的 IdM 拓扑 的建议。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/topology/add-topologysegments.yml add-topologysegments-copy.yml16.3. 使用 Ansible 检查两个副本之间是否存在复制协议
- 要点:验证 IdM 中的多个副本对是否存在复制协议,维护高可用性。与使用 Ansible 确保 IdM 中是否存在复制协议 不同,此流程不会修改现有配置。
- 要点:存储在身份管理 (IdM) 服务器上的数据存储基于复制协议:配置了两个服务器时,它们共享其数据。复制协议始终为现实:数据从第一个副本复制到另一个副本,另一个副本复制到第一个副本。
- 列表:确保您了解拓扑中连接副本中列出的 IdM 拓扑的建议。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/topology/check-topologysegments.yml check-topologysegments-copy.yml16.4. 使用 Ansible 验证 IdM 中是否存在拓扑后缀
- 要点:在配置新协议前,使用 Ansible 确认 IdM 部署中存在所需的拓扑后缀来验证您的复制基础架构。
- 要点:在身份管理 (IdM) 中的复制协议中,拓扑后缀存储要复制的数据。IdM 支持两种类型的拓扑后缀:domain 和 ca。每个后缀代表一个单独的后端,即一个单独的复制拓扑。配置复制协议时,它会在两个不同的服务器上加入同一类型的两个拓扑后缀。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/topology/ verify-topologysuffix.yml verify-topologysuffix-copy.yml16.5. 使用 Ansible 重新初始化 IdM 副本
- 要点:恢复损坏的或过时的副本数据库,以确保 IdM 基础架构中的一致性数据。
- 要点:如果副本离线很长时间或者其数据库已损坏,您可以重新初始化它。重新初始化会使用更新的一组数据刷新副本。例如,如果需要从备份进行权威恢复,可以使用重新初始化。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/topology/reinitialize-topologysegment.yml reinitialize-topologysegment-copy.yml- 注意:注意 与复制更新不同,副本仅互相发送更改的条目,重新初始化会刷新整个数据库。
16.6. 使用 Ansible 确保 IdM 中没有复制协议
- 要点:在重新创建拓扑或停止特定副本之间的数据同步时,使用 Ansible 删除 IdM 服务器之间的不需要的复制协议。
- 要点:存储在身份管理 (IdM) 服务器上的数据存储基于复制协议:配置了两个服务器时,它们共享其数据。复制协议始终为现实:数据从第一个副本复制到另一个副本,另一个副本复制到第一个副本。
- 列表:您了解设计 在拓扑中连接副本 中列出的 IdM 拓扑的建议。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/topology/delete-topologysegment.yml delete-topologysegment-copy.yml16.7. 其他资源
- 列表:规划副本拓扑
- 列表:安装 IdM 副本
第 17 章 使用 Ansible 管理 IdM 服务器
- 要点:使用 ansible-freeipa 软件包中的 server 模块来管理拓扑中的身份管理(IdM)服务器,包括检查服务器存在、隐藏副本和分配 DNS 位置。
17.1. 使用 Ansible 检查 IdM 服务器是否存在
- 要点:在运行依赖自动化前,使用 Ansible 验证拓扑中是否存在身份管理(IdM)服务器来验证基础架构状态。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/server/server-present.yml server-present-copy.yml- 注意:注意 ipaserver Ansible 模块不会安装 IdM 服务器。
17.2. 使用 Ansible 确保 IdM 拓扑中没有 IdM 服务器
- 要点:删除身份管理(IdM)服务器和从拓扑运行的主机,使用 Ansible 停用基础架构,同时维护一致的域配置。
- 要点:与 ansible-freeipa ipaserver 角色不同,此 playbook 中使用的 ipaserver 模块不会从服务器卸载 IdM 服务。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/server/server-absent.yml server-absent-copy.yml17.3. 确保尽管拥有最后一个 IdM 服务器角色,也不存在 IdM 服务器
- 要点:强制使用 Ansible 删除身份管理(IdM)服务器,即使它托管 CA、KRA 或 DNS 服务的最后一个实例。
- 要点:与 ansible-freeipa ipaserver 角色不同,此 playbook 中使用的 ipaserver 模块不会从服务器卸载 IdM 服务。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了 ipaadmin_password。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了 ipaadmin_password。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/server/server-absent-ignore-last-of-role.yml server-absent-ignore-last-of-role-copy.yml- 注意:警告 如果您删除了作为 CA、KRA 或 DNS 服务器的最后一台服务器,会严重破坏 IdM 功能。您可以使用 ipa service-find 命令手动检查哪些服务运行在哪些 IdM 服务器上。CA 服务器的主要名称为 dogtag/server_name/REALM_NAME。
17.4. 确保 IdM 服务器不存在,但不一定与其他 IdM 服务器断开连接
- 要点:使用 Ansible 删除身份管理(IdM)服务器,同时保留复制协议,在删除计划删除的功能服务器时很有用。
- 要点:playbook 还确保 IdM 服务器在 IdM 中不存在,即使作为主机也是如此。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了 ipaadmin_password。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了 ipaadmin_password。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 清单文件中定义的从控制节点到 IdM 服务器的 SSH 连接工作正常。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/server/server-absent-ignore_topology_disconnect.yml server-absent-ignore_topology_disconnect-copy.yml- 注意:重要 仅当其他服务器是您计划删除的工作不正常的服务器时,才建议在删除时忽略服务器的复制协议。删除拓扑中作为中心点的服务器会将拓扑分成两个断开连接的集群。 您可以使用 ipa server-del 命令从拓扑中删除工作不正常的服务器。
- 注意:注意 如果删除了作为证书颁发机构(CA)、密钥恢复机构(KRA)或 DNS 服务器的最后一台服务器,将会严重破坏身份管理(IdM)功能。为防止此问题,playbook 在卸载充当 CA、KRA 或 DNS 服务器的服务器之前,确保这些服务运行在域中的另一台服务器上。
17.5. 使用 Ansible playbook 确保现有的 IdM 服务器被隐藏
- 要点:使用 Ansible 将身份管理(IdM)服务器配置为隐藏服务器,使其从客户端发现中排除,从而启用专用的备份或维护场景。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/server/server-hidden.yml server-hidden-copy.yml17.6. 使用 Ansible playbook 确保现有的 IdM 服务器可见
- 要点:使用 Ansible 再次看到隐藏的身份管理(IdM)服务器,以便客户端和其他服务器可以发现并使用它来进行身份验证。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了 ipaadmin_password。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了 ipaadmin_password。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。 清单文件中定义的从控制节点到 IdM 服务器的 SSH 连接工作正常。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/server/server-not-hidden.yml server-not-hidden-copy.yml17.7. 确保现有的 IdM 服务器被分配了 IdM DNS 位置
- 要点:使用 Ansible 为身份管理(IdM)服务器分配一个 DNS 位置,以便该位置中的客户端接收指向接近服务器的 SRV 记录。
- 要点:请注意,ipaserver Ansible 模块没有安装 IdM 服务器。
- 列表:您需要知道 IdM admin 密码。
- 列表:IdM DNS 位置存在。位置示例为 germany。
- 列表:您有访问服务器的 root 权限。服务器示例是 server123.idm.example.com。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了 ipaadmin_password。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/server/server-location.yml server-location-copy.yml17.8. 确保现有的 IdM 服务器没有分配 IdM DNS 位置
- 要点:使用 Ansible 从身份管理(IdM)服务器中删除 DNS 位置分配,对于经常更改地理位置的服务器很有用。
- 要点:先决条件
- 列表:您需要知道 IdM admin 密码。
- 列表:您有访问服务器的 root 权限。服务器示例是 server123.idm.example.com。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了 ipaadmin_password。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/server/server-no-location.yml server-no-location-copy.yml第 18 章 使用 Ansible playbook 管理主机
- 要点:使用 Ansible 创建和管理 IdM 主机条目,将域中的机器注册到正确的 DNS 信息和凭证。
- 要点:有关 FreeIPA Ansible 集合中变量和示例 playbook 的详情,请查看控制节点上的 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-host.md 文件。
18.1. 使用 Ansible playbook 确保存在带有 FQDN 的 IdM 主机条目
- 要点:当主机具有动态 IP 地址或 DNS 时,确保存在仅由 完全限定域名 (FQDN)定义的 IdM 主机条目。
- 要点:如果至少适用以下条件之一,则指定主机的 FQDN 名称就足够:
- 列表:IdM 服务器没有配置为管理 DNS。
- 列表:主机没有静态 IP 地址,或者在配置主机时不知道该 IP 地址。添加仅由 FQDN 定义的主机实质上会在 IdM DNS 服务中创建占位符条目。例如,笔记本电脑可能预配置为 IdM 客户端,但它们在配置时没有 IP 地址。当 DNS 服务动态更新其记录时,将检测主机的当前 IP 地址,并更新其 DNS 记录。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
cd ~/MyPlaybooks
--- - name: Host present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Host host01.idm.example.com present freeipa.ansible_freeipa.ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com state: present force: true- 注意:注意 如果没有 Ansible,则使用 ipa host-add 命令在 IdM 中创建主机条目。将主机添加到 IdM 的结果是 IdM 中存在的主机状态。由于 Ansible 依赖于 idempotence,要使用 Ansible 将主机添加到 IdM,您必须创建一个 playbook,将主机的状态定义为 present: state: present。
- 注意:注意 这个过程会导致在 IdM LDAP 服务器中创建主机条目,但不将主机注册到 IdM Kerberos 域。为此,您必须将主机部署为 IdM 客户端。详情请参阅使用 Ansible playbook 安装身份管理客户端。
18.2. 使用 Ansible playbook 确保存在含有 DNS 信息的 IdM 主机条目
- 要点:运行 Ansible playbook,以添加带有其 完全限定域名 (FQDN)和 IP 地址的 IdM 主机条目。
- 要点:先决条件
- 列表:您知道 IdM 管理员密码。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
cd ~/MyPlaybooks
--- - name: Host present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure host01.idm.example.com is present freeipa.ansible_freeipa.ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com description: Example host ip_address: 192.168.0.123 locality: Lab ns_host_location: Lab ns_os_version: CentOS 7 ns_hardware_platform: Lenovo T61 mac_address: - "08:00:27:E3:B1:2D" - "52:54:00:BD:97:1E" state: present- 注意:注意 这个过程会导致在 IdM LDAP 服务器中创建主机条目,但不将主机注册到 IdM Kerberos 域。为此,您必须将主机部署为 IdM 客户端。详情请参阅使用 Ansible playbook 安装身份管理客户端。
18.3. 使用 Ansible playbook 确保存在带有随机密码的多个 IdM 主机条目
- 要点:在单个 Ansible 任务中创建多个主机条目,并为每个主机生成随机注册密码。
- 要点:freeipa.ansible_freeipa.ipahost 模块允许系统管理员使用一个 Ansible 任务来确保 IdM 中存在或不存在多个主机条目。在以下示例中,多个主机条目仅由其 完全限定域名 (FQDN)定义。运行 Ansible playbook 会为主机生成随机密码。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
cd ~/MyPlaybooks
--- - name: Ensure hosts with random password hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Hosts host01.idm.example.com and host02.idm.example.com present with random passwords freeipa.ansible_freeipa.ipahost: ipaadmin_password: "{{ ipaadmin_password }}" hosts: - name: host01.idm.example.com random: true force: true - name: host02.idm.example.com random: true force: true register: ipahost- 注意:注意 要使用随机的一次性密码(OTP)将主机部署为 IdM 客户端,请参阅 使用 Ansible playbook 为 IdM 客户端注册授权选项 或 使用一次性密码安装客户端:交互式安装。
18.4. 使用 Ansible playbook 确保存在具有多个 IP 地址的 IdM 主机条目
- 要点:运行 Ansible playbook,在主机有多个网络接口时,创建具有多个 IPv4 和 IPv6 地址的身份管理(IdM)主机条目。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
cd ~/MyPlaybooks
--- - name: Host member IP addresses present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure host101.example.com IP addresses present freeipa.ansible_freeipa.ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com ip_address: - 192.168.0.123 - fe80::20c:29ff:fe02:a1b3 - 192.168.0.124 - fe80::20c:29ff:fe02:a1b4 force: true- 注意:注意 与 ipa host 工具不同,Ansible freeipa.ansible_freeipa.ipahost 模块可以确保一个主机的多个 IPv4 和 IPv6 地址存在或不存在。ipa host-mod 命令无法处理 IP 地址。
- 注意:注意 这个过程在 IdM LDAP 服务器中创建主机条目,但不将主机注册到 IdM Kerberos 域。为此,您必须将主机部署为 IdM 客户端。详情请参阅使用 Ansible playbook 安装身份管理客户端。
18.5. 使用 Ansible playbook 确保没有 IdM 主机条目
- 要点:在停用系统或清理域中的过时条目时,使用 Ansible 删除 IdM 主机条目。
- 要点:按照以下流程,使用 Ansible playbook 确保主机条目在身份管理(IdM)中不存在。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Host absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Host host01.idm.example.com absent freeipa.ansible_freeipa.ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com updatedns: true state: absent
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-absent.yml- 注意:注意 这个过程会产生: IdM Kerberos 域中没有的主机。 IdM LDAP 服务器中不存在主机条目。 要从客户端主机本身中删除系统服务的特定 IdM 配置,如系统安全服务守护进程 (SSSD),您必须在客户端上运行 ipa-client-install --uninstall 命令。详情请参阅卸载 IdM 客户端。
18.6. 其他资源
- 列表:在 IdM CLI 中管理主机
第 19 章 使用 Ansible playbook 管理主机组
- 要点:使用 Ansible 将 IdM 主机组织到组中,以简化访问控制策略和其他配置的应用程序。
19.1. IdM 中的主机组
- 要点:了解 IdM 主机组如何为具有常见特征的一组主机的集中控制访问策略和其他管理任务。例如,您可以根据公司部门、物理位置或访问控制要求来定义主机组。
- 要点:IdM 中的主机组可以包括:
- 列表:IdM 服务器和客户端
- 列表:其他 IdM 主机组 默认创建的主机组 默认情况下,IdM 服务器为所有 IdM 服务器主机创建主机组 ipaservers。 直接和间接组成员 IdM 中的组属性同时适用于直接和间接成员:当主机组 B 是主机组 A 的成员时,主机组 B 的所有成员都被视为主机组 A 的间接成员。
19.2. 使用 Ansible playbook 确保存在 IdM 主机组
- 要点:使用 Ansible 创建身份管理(IdM)主机组,以组织主机,以简化访问控制和策略管理。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is present - freeipa.ansible_freeipa.ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases state: present
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-present.yml- 注意:注意 如果没有 Ansible,则使用 ipa hostgroup-add 命令在 IdM 中创建主机组条目。将主机组添加到 IdM 的结果是 IdM 中存在主机组的状态。由于 Ansible 依赖幂等性,要使用 Ansible 将主机组添加到 IdM,您必须创建一个 playbook,其中将主机组的状态定义为 present: state: present。
19.3. 确保使用 Ansible playbook 在 IdM 主机组中存在主机
- 要点:使用 Ansible 将主机添加到身份管理(IdM)主机组,以组织系统以进行访问控制和策略应用。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is present - freeipa.ansible_freeipa.ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases host: - db.idm.example.com action: member
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-present-in-hostgroup.yml19.4. 使用 Ansible playbook 嵌套 IdM 主机组
- 要点:使用 Ansible 将主机组织到逻辑层次结构,在身份管理(IdM)中嵌套主机组。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure hosts and hostgroups are present in existing databases hostgroup - freeipa.ansible_freeipa.ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases hostgroup: - mysql-server - oracle-server action: member
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-present-in-hostgroup.yml19.5. 使用 Ansible playbook 确保 IdM 主机组中存在成员管理器
- 要点:将主机组成员资格管理委派给身份管理(IdM)中的特定用户或组,允许它们添加和删除主机。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle host group membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager user example_member is present for group_name freeipa.ansible_freeipa.ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_user: example_member - name: Ensure member manager group project_admins is present for group_name freeipa.ansible_freeipa.ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_group: project_admins
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-member-managers-host-groups.yml19.6. 使用 Ansible playbook 确保 IdM 主机组中没有主机
- 要点:在重新组织组成员资格或停用系统时,使用 Ansible 从身份管理(IdM)主机组中删除主机。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is absent - freeipa.ansible_freeipa.ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases host: - db.idm.example.com action: member state: absent
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-absent-in-hostgroup.yml19.7. 使用 Ansible playbook 确保 IdM 主机组没有嵌套的主机组
- 要点:在重新创建您的主机组层次结构时,使用 Ansible 从身份管理(IdM)中的父组中删除嵌套的主机组。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure hosts and hostgroups are absent in existing databases hostgroup - freeipa.ansible_freeipa.ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases hostgroup: - mysql-server - oracle-server action: member state: absent
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-absent-in-hostgroup.yml19.8. 使用 Ansible playbook 确保没有 IdM 主机组
- 要点:在整合组或从域中删除过时分组时,使用 Ansible 删除身份管理(IdM)主机组。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - Ensure host-group databases is absent freeipa.ansible_freeipa.ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases state: absent
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-absent.yml- 注意:注意 如果没有 Ansible,则使用 ipa hostgroup-del 命令从 IdM 中删除主机组条目。从 IdM 中删除主机组的结果是 IdM 中缺少主机组的状态。由于 Ansible 依赖于 idempotence,若要使用 Ansible 从 IdM 中删除主机组,您必须创建一个 playbook,它将主机组的状态定义为 absent: state: absent。
19.9. 使用 Ansible playbook 确保 IdM 主机组中没有成员管理器
- 要点:在撤销委派的管理职责时,从身份管理(IdM)主机组的用户或组中删除成员管理者特权。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle host group membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager host and host group members are absent for group_name freeipa.ansible_freeipa.ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_user: example_member membermanager_group: project_admins action: member state: absent
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-member-managers-host-groups-are-absent.yml第 20 章 使用 Ansible playbook 定义 IdM 密码策略
- 要点:使用 Ansible 配置密码策略,以强制实施身份管理(IdM)用户组的密码复杂性、到期和历史记录要求。
20.1. IdM 中的密码策略
- 要点:密码是 Identity Management (IdM) 用户对 IdM Kerberos 域进行身份验证的最常用方式。您可以使用 IdM 密码策略来定义 Kerberos 密钥分发中心(KDC)自动强制执行的密码要求。
- 要点:密码策略是密码必须满足的一组规则。例如,password 策略可以定义最小密码长度和最大密码生命周期。受此策略影响的所有用户都必须设置足够长的密码,并经常更改密码以满足指定条件。这样,密码策略有助于降低某人发现和滥用用户密码的风险。
- 列表:密码中有哪些有效字符?
- 列表:IdM 中的附加密码策略选项
- 注意:注意 IdM 密码策略在底层 LDAP 目录中设置,但 KDC 强制执行密码策略。
- 注意:重要 如果您一组不同的硬件可能不能使用国际字符和符号,则字符类要求应为英语字母和常用符号。
- 表格样本(共 9 行):
- 属性 | 介绍 | 示例
- Max lifetime | 密码在必须重置密码之前有效的最长时间(以天为单位)。默认值为 90 天。 请注意,如果属性被设为 0,则密码永不过期。 | Max lifetime = 180 用户密码仅 180 天有效。之后,IdM 会提示用户更改它们。
- Min lifetime | 两个密码更改操作之间必须经过的最短时间(以小时为单位)。 | Min Life = 1 用户更改密码后,他们必须至少等待 1 小时后再重新更改密码。
- History size | 保存的之前密码的数量。用户无法重复使用其密码历史记录中的密码,但可以重复利用未存储的旧密码。 | History size = 0 在这种情况下,密码历史记录为空,用户可以重复使用他们之前的任何密码。
20.2. IdM 中的密码策略优先级
- 要点:当用户属于多个组时,IdM 根据适用策略的优先级值为用户应用密码策略。
- 要点:密码策略帮助降低某人发现并滥用用户密码的风险。默认密码策略是 全局密码策略。您还可以创建其他组密码策略。全局策略规则适用于所有没有组密码策略的用户。组密码策略适用于相应用户组的所有成员。
- 列表:每个组密码策略都设置了优先级。值越低,策略的优先级越高。最低支持的值是 0。
- 列表:如果多个密码策略适用于用户,则具有最低优先级值的策略优先。其他策略中定义的所有规则都会被忽略。
- 列表:优先级值最低的密码策略适用于所有密码策略属性,即使属性没有在策略中定义。
- 注意:注意 ipa pwpolicy-show --user=user_name 命令显示哪个策略当前对特定用户有效。
20.3. 使用 Ansible playbook 在 IdM 中存在密码策略
- 要点:使用 Ansible 为身份管理(IdM)组创建或更新密码策略,以强制实施比全局默认值更强的密码要求。
- 要点:在 IdM 中的默认 global_policy 密码策略中,密码中不同字符类的数量设置为 0。历史记录大小也设置为 0。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure presence of pwpolicy for group ops freeipa.ansible_freeipa.ipapwpolicy: ipaadmin_password: "{{ ipaadmin_password }}" name: ops minlife: 7 maxlife: 49 history: 5 priority: 1 lockouttime: 300 minlength: 8 minclasses: 4 maxfail: 3 failinterval: 5
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/new_pwpolicy_present.yml- 注意:注意 您只能为 IdM 组定义密码策略。您无法为单个用户定义密码策略。
- 注意:重要 ops 密码策略的优先级设置为 1,而 global_policy 密码策略没有设置优先级。因此,ops 策略会自动取代 ops 组的 global_policy,并立即强制执行。 当没有为用户设置任何组策略时,global_policy 充当备份策略,并且永远不会优先于组策略。
20.4. 使用 Ansible playbook 将额外的密码策略选项应用到 IdM 组
- 要点:应用高级密码策略选项,如使用 Ansible 的字典检查和用户名限制,以增强特定身份管理(IdM)组的安全性。
- 要点:为此,您可以使用 maxrepeat,maxsequence,dictcheck,usercheck , d credit ,ucredit,lcredit, 和 ocredit 密码策略选项。以下示例描述了如何为 managers 组设置以下要求:
- 列表:用户的新密码不包含用户对应的用户名。
- 列表:密码不能包含两个连续相同的字符。
- 列表:密码中的任何单调字符序列都不能超过 3 个字符。这意味着系统不接受如 1234 或 abcd 这样序列的密码。
- 列表:密码必须包含至少一个数字、一个大写字母字符、一个小写字符和一个特殊字符。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 命令/配置摘录:
--- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure presence of password policy options for group managers freeipa.ansible_freeipa.ipapwpolicy: ipaadmin_password: "{{ ipaadmin_password }}" name: managers usercheck: True maxrepeat: 2 maxsequence: 3 dcredit: -1 ucredit: -1 lcredit: -1 ocredit: -1
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/manager_pwpolicy_present.yml- 注意:注意 Kerberos 没有精细的错误密码策略报告,在某些情况下,没有提供拒绝密码的明确原因。
第 21 章 使用 Ansible 在 IdM 中配置系统帐户以更改用户密码,而无需重置
- 要点:使用 Ansible 配置身份管理(IdM)系统帐户,以便外部凭据管理系统可以在不在第一次登录时强制重置的情况下设置用户密码。在与外部服务集成时,您要保留 IdM 密码策略强制。
- 要点:默认情况下,当 IdM 管理员重置 IdM 用户的密码时,密码在第一次成功登录后过期。但是,当将 IdM 部署与外部凭证管理系统集成时,您可能需要确保此外部系统设置的密码在第一次使用时不会过期,因为这可能对最终用户不方便。同时,绕过 IdM 密码策略会带来安全风险,因此保持密码强度和历史记录检查在 IdM 端非常重要。
21.1. 身份管理中的系统帐户
- 要点:了解系统帐户如何启用自动化和第三方集成,同时使人类管理员凭证安全,并且您的审计日志保持干净。
- 要点:系统帐户(也称为服务帐户)是应用程序、服务或自动化工具用来与身份管理(IdM)目录交互的非人身份。它们的主要目的是,为软件提供安全、可跟踪且可管理的方式来执行任务,而不必使用人工管理员的凭据。
- 表格样本(共 6 行):
- 功能 | 标准用户帐户 | 系统帐户(sysaccount)
- 位置 | cn=users,cn=accounts | cn=sysaccounts,cn=etc
- 交互式登录 | 是(SSH、Web UI、桌面) | 否(仅限 LDAP 绑定)
- 密码到期 | 根据全局策略 | 通常设置为永不过期
21.2. 使用 ipa_pwd_extop 插件和 SysAcctManagersDNs 列表在 IdM 中进行密码同步
- 要点:了解身份管理(IdM)如何将 SysAcctManagersDNs 与 ipa_pwd_extop 插件一起使用,以便可信系统帐户可以在仍强制执行密码策略时更新用户密码。
- 要点:从 RHEL 10.2 开始,IdM 可以使用两个组件为自动系统帐户配置可信例外:
- 列表:ipa_pwd_extop 插件:处理密码更改请求的插件。
- 列表:SysAcctManagersDNs 列表:一个配置属性,您可以在其中指定允许在不强制重置的情况下更改密码的可分辨名称(DN)。
- 列表:如果帐户不在列表中,插件会将请求视为标准管理员重置。用户在下次登录时必须更改密码。
- 列表:如果帐户位于列表中,插件会验证新密码是否符合用户定义的密码策略,如长度和复杂性要求,并更新密码。它并不强制用户更改它。 注意 这些配置是特定于服务器的:LDAP 条目 cn=ipa_pwd_extop,cn=plugins,cn=config 不会被复制。如果您需要多个服务器来允许在不触发重置的情况下修改密码,您必须单独更新每个服务器上的配置。另一方面,系统帐户 会被 复制。
21.3. 使用 Ansible 在 IdM 中配置系统帐户以更改用户密码
- 要点:使用 Ansible 配置身份管理(IdM)系统帐户,具有正确的特权和角色,以便外部凭据管理系统可以设置用户密码,而无需在第一次登录时重置。
- 要点:在以下示例中,您使用 ansible-freeipa 软件包中的模块来创建以下内容:
- 列表:名为 my-app 的系统帐户。
- 列表:名为 my-app password 的权限使用 System: Change User password 权限更改特权。
- 列表:名为 my-app 角色的角色,为系统帐户授予特权。
- 列表:您是具有 System Accounts Administrators 特权的角色的成员,如 admin。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
--- - name: Configure a system account in IdM to change user passwords without requiring a reset hosts: ipaserver become: false gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure sysaccount my-app is present with a random password freeipa.ansible_freeipa.ipasysaccount: ipaadmin_password: "{{ ipaadmin_password }}" name: my-app random: true register: sysaccount_result - name: Print the generated random password ansible.builtin.debug: var: sysaccount_result.sysaccount.randompassword - name: Ensure privilege my-app password change privilege is present with the password change permission…21.4. 其他资源
- 列表:在 IdM 中配置系统帐户以更改用户密码,而无需重置
第 22 章 使用 Ansible playbook 管理 sudo 访问权限
- 要点:使用 Ansible 定义 sudo 规则,以控制哪些身份管理(IdM)用户可以在域中的特定主机上运行特权命令。
22.1. 使用 Ansible playbook 确保 IdM 客户端上的 IdM 用户具有 sudo 访问权限
- 要点:使用 Ansible 确保对特定命令的 sudo 访问权限授予特定 IdM 主机上的身份管理(IdM)用户帐户。
- 要点:使用以下示例来创建或更新名为 idm_user_reboot 的 sudo 规则。该规则授予 idm_user 在 idmclient 机器上运行 /usr/sbin/reboot 命令的权限。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to manage sudo command hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure sudo command is present - freeipa.ansible_freeipa.ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" name: /usr/sbin/reboot state: present
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.yml22.2. 在单个 Ansible 任务中管理多个 IdM sudo 规则
- 要点:使用 sudo rules batch 选项在单个 Ansible 任务中定义多个身份管理(IdM) sudo 规则,以简化 playbook 结构并改进执行效率。
- 要点:使用 freeipa.ansible_freeipa.ipasudorule collection 模块中提供的 services 选项,您还可以指定仅适用于特定服务的多个服务变量。根据 name 变量定义此服务,这是 services 选项的唯一强制变量。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
--- - name: Playbook to handle sudorules hosts: ipaserver become: true tasks: # Ensure sudo command name: /usr/sbin/dmidecode is present - freeipa.ansible_freeipa.ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" name: /usr/sbin/dmidecode # Ensure sudo command /usr/sbin/reboot is present - freeipa.ansible_freeipa.ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" name: /usr/sbin/reboot # Ensure sudo command /usr/bin/yum is present - freeipa.ansible_freeipa.ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" name: /usr/bin/yum # Ensure a sudo command group is present - freeipa.ansible_freeipa.ipasudocmdgroup…22.3. 其他资源
- 列表:为 IdM 客户端上的 IdM 用户授予 sudo 访问权限
第 23 章 确保使用 Ansible playbook 的基于主机的访问控制规则在 IdM 中存在
- 要点:使用 Ansible 配置 HBAC 规则,以控制哪些用户可以根据其组成员身份访问特定的身份管理(IdM)主机和服务。
23.1. IdM 中基于主机的访问控制规则
- 要点:基于主机的访问控制(HBAC)规则定义哪些用户或用户组可以通过哪些服务或服务组中的哪些服务来访问哪些主机或主机组。作为系统管理员,您可以使用 HBAC 规则来实现以下目标:
- 要点:默认情况下,IdM 是使用一个名为 allow_all 的默认 HBAC 规则配置的,这意味着每个用户都可以通过整个 IdM 域中每个相关服务对每个主机进行通用访问。
- 列表:将您域中对指定系统的访问权限限制为特定用户组的成员。
- 列表:仅允许使用特定服务来访问域中的系统。
23.2. 使用 Ansible playbook 确保在 IdM 中存在 HBAC 规则
- 要点:使用 Ansible 创建 HBAC 规则,来控制哪些用户可以通过身份管理(IdM)域中指定的服务访问特定主机。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to handle hbacrules hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure idm_user can access client.idm.example.com via the sshd service - freeipa.ansible_freeipa.ipahbacrule: ipaadmin_password: "{{ ipaadmin_password }}" name: login user: idm_user host: client.idm.example.com hbacsvc: - sshd state: present
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-new-hbacrule-present.yml第 24 章 使用 Ansible 管理 IdM 证书
- 要点:使用 ansible-freeipa ipacert 模块为身份管理(IdM)用户、主机和服务请求、撤销和检索 SSL 证书。您还可以恢复已搁置的证书。
24.1. 使用 Ansible 为 IdM 主机、服务和用户请求 SSL 证书
- 要点:使用 Ansible 自动 SSL 证书请求,以在 IdM 实体之间建立加密的可信连接并启用基于证书的身份验证。
- 要点:以下示例使用 ansible-freeipa freeipa.ansible_freeipa.ipacert 模块从 IdM 证书颁发机构(CA)为 HTTP 服务器请求 SSL 证书。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
# openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout new.key \ -out new.csr -subj '/CN=client.idm.example.com,O=IDM.EXAMPLE.COM'
--- - name: Playbook to request a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Request a certificate for a web server freeipa.ansible_freeipa.ipacert: ipaadmin_password: "{{ ipaadmin_password }}" state: requested csr: | -----BEGIN CERTIFICATE REQUEST----- MIGYMEwCAQAwGTEXMBUGA1UEAwwOZnJlZWlwYSBydWxlcyEwKjAFBgMrZXADIQBs HlqIr4b/XNK+K8QLJKIzfvuNK0buBhLz3LAzY7QDEqAAMAUGAytlcANBAF4oSCbA 5aIPukCidnZJdr491G4LBE+URecYXsPknwYb+V+ONnf5ycZHyaFv+jkUBFGFeDgU SYaXm/gF8cDYjQI= -----END CERTIFICATE REQUEST----- principal: HTTP/client.idm.example.com register: cert24.2. 使用 Ansible 为 IdM 主机、服务和用户撤销 SSL 证书
- 要点:您可以使用 ansible-freeipa freeipa.ansible_freeipa.ipacert 模块撤销身份管理(IdM)用户、主机和服务用来向 IdM 进行身份验证的 SSL 证书。
- 要点:使用以下示例为 HTTP 服务器撤销证书。吊销证书的原因是"keyCompromise"。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to revoke a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Revoke a certificate for a web server freeipa.ansible_freeipa.ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 revocation_reason: "keyCompromise" state: revoked
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/revoke-certificate.yml24.3. 使用 Ansible 为 IdM 用户、主机和服务恢复 SSL 证书
- 要点:当您恢复私钥并确认在保存期间没有被破坏时,从 使用 Ansible playbook 发布证书。
- 要点:您可以使用 ansible-freeipa ipacert 模块恢复之前由身份管理(IdM)用户、主机或服务用来向 IdM 进行身份验证的已撤销的 SSL 证书。以下示例描述了如何发布 HTTP 服务的证书。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您的 IdM 部署有一个集成的 CA。
- 命令/配置摘录:
--- - name: Playbook to restore a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Restore a certificate for a web service ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 state: released
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/restore-certificate.yml- 注意:注意 您只能恢复搁置的证书。您可能已将其搁置,例如,您不确定私钥是否已丢失。但是,您现在已恢复了密钥,并且您确定没有人在同时访问它,所以您希望重新恢复证书。
24.4. 使用 Ansible 为 IdM 用户、主机和服务检索 SSL 证书
- 要点:使用 Ansible 从身份管理(IdM)检索现有的 SSL 证书,并将其存储在受管节点上,供用户、主机或服务使用。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to retrieve a certificate and store it locally on the managed node hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Retrieve a certificate and save it to file 'cert.pem' freeipa.ansible_freeipa.ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 certificate_out: cert.pem state: retrieved
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/retrieve-certificate.yml24.5. 其他资源
- 列表:身份管理中的公钥证书
第 25 章 IdM 中的 vault
- 要点:了解身份管理(IdM)密码库概念,包括密码库类型、所有权和访问控制,以安全地存储和共享密码和密钥等敏感数据。
25.1. vaults 及其优势
- 要点:IdM 库为敏感数据提供安全存储,如密码和密钥。您可以使用 vaults 在授权的用户和服务间进行受控共享。
- 要点:您可以使用身份管理(IdM)vault 来安全地存储所有敏感数据,且便捷地存储在一个地方。
- 列表:密码
- 列表:PIN
- 列表:私有 SSH 密钥
- 列表:Vault 只能供 vault 所有者和 vault 所有者选择为 vault 成员的 IdM 用户访问。另外,IdM 管理员还可以访问所有 vault。
- 列表:如果用户没有足够的特权来创建密码库,IdM 管理员可以创建密码库并将该用户设置为其所有者。
- 列表:用户和服务可从 IdM 域注册的任何机器访问存储在密码库中的 secret。
- 注意:注意 IdM 中的密码库的目的是存储身份验证凭据,允许您向外部的非IdM 相关服务进行身份验证。
- 注意:注意 Vault 仅在 IdM 命令行(CLI)中可用,不能来自 IdM Web UI。
25.2. Vault 所有者、成员和管理员
- 要点:查看身份管理(IdM)中的不同 vault 用户类型,以及它们对应的特权来管理和访问 vault secret。
- 要点:身份管理(IdM)区分以下 vault 用户类型:
- 列表:标准、对称和非对称 vault
- 列表:Vault 容器
- 列表:在 IdM 中使用 Ansible playbook 管理基于角色的访问控制
- 命令/配置摘录:
$ ipa vault-show my_vault Vault name: my_vault Type: standard Owner users: user Vault user: user- 注意:注意 对称和非对称密码库通过密码或密钥进行保护。特殊访问控制规则适用于管理员,来: 访问对称和非对称密码库中的机密。 更改或重置 vault 密码或密钥。
25.3. 标准、对称和非对称密码库
- 要点:根据您的安全要求选择适当的 vault 类型,从没有加密的标准库中选择到非对称密码库,使用公钥加密。
- 要点:根据安全性和访问控制级别,IdM 将密码库分类为以下类型:
25.4. 用户、服务和共享密码库
- 要点:根据机密是否为单个用户、服务,还是在多个实体之间共享,选择相应的 vault 所有权类型。
- 表格样本(共 4 行):
- Type | 描述 | 所有者 | 备注
- 用户密码库 | 用户的私有库 | 单个用户 | 如果 IdM 管理员允许,任何用户都可以拥有一个或多个用户库
- 服务库 | 服务的私有库 | 单个服务 | 如果 IdM 管理员允许,任何服务都可以拥有一个或多个用户库
- 共享 vault | 由多个用户和服务共享的库 | 创建密码库的 vault 管理员 | 如果 IdM 管理员允许,用户和服务可以拥有一个或多个用户库。除了创建 vault 的人,vault 管理员也有访问 vault 的全部权限。
25.5. Vault 容器
- 要点:IdM 中的默认 vault 容器结构根据用户、服务或共享所有权组织密码库。
- 要点:vault 容器是密码库的集合。下表列出了 Identity Management (IdM) 提供的默认 vault 容器。
- 表格样本(共 4 行):
- Type | 描述 | 目的
- 用户容器 | 用户的私有容器 | 为特定用户存储用户密码库
- 服务容器 | 服务的私有容器 | 为特定服务存储服务库
- 共享容器 | 用于多个用户和服务的容器 | 存储可由多个用户或服务共享的 vault
25.6. 基本 IdM vault 命令
- 要点:使用 ipa vault gcp 命令,从命令行创建、访问和管理 IdM 库及其包含的 secret。
- 注意:注意 在运行任何 ipa vault-* 命令前,请将密钥恢复授权 (KRA) 证书系统组件安装到 IdM 域中的一个或多个服务器上。详情请参阅在 IdM 中安装密钥恢复授权。
- 表格样本(共 5 行):
- 命令 | 目的
- ipa help vault | 显示有关 IdM 库和示例密码库命令的概念信息。
- ipa vault-add --help,ipa vault-find --help | 在特定的 ipa vault-* 命令中添加 --help 选项会显示该命令可用的选项和详细帮助。
- ipa vault-show user_vault --user idm_user | 当以 vault 成员身份访问用户 vault 时,您必须指定 vault 所有者。如果您没有指定 vault 所有者,IdM 会通知您没有找到密码库: [admin@server ~]$ ipa vault-show user_vault ipa: ERROR: user_vault: vault not found
25.7. 在 IdM 中安装密钥恢复授权
- 要点:在身份管理(IdM)服务器上安装密钥恢复授权(KRA)证书系统(CS)组件,以启用 vault 功能,以便您的域中的安全 secret 存储。
- 要点:先决条件
- 列表:您已以 root 身份登录到 IdM 服务器。
- 列表:IdM 证书颁发机构已安装在 IdM 服务器上。
- 列表:您有 目录管理器 凭证。
- 列表:安装 KRA: # ipa-kra-install 注意 要使密码库服务高可用且具有弹性,请在两个或多个 IdM 服务器上安装 KRA。维护多个 KRA 服务器可防止数据丢失。 重要 您可以在隐藏的副本上安装 IdM 集群的第一个 KRA。但是,在在非隐藏的副本上安装 KRA 克隆前,安装额外的 KRA 克隆需要临时激活隐藏的副本。然后您可以再次隐藏原始隐藏的副本。
- 列表:演示或提升隐藏副本
- 列表:安装 IdM 隐藏的副本
- 命令/配置摘录:
# ipa-kra-install- 注意:注意 要使密码库服务高可用且具有弹性,请在两个或多个 IdM 服务器上安装 KRA。维护多个 KRA 服务器可防止数据丢失。
- 注意:重要 您可以在隐藏的副本上安装 IdM 集群的第一个 KRA。但是,在在非隐藏的副本上安装 KRA 克隆前,安装额外的 KRA 克隆需要临时激活隐藏的副本。然后您可以再次隐藏原始隐藏的副本。
第 26 章 使用 Ansible 管理 IdM 用户库:存储和检索 secret
- 要点:创建用户 vault,并使用 Ansible 安全存储或检索 secret,使用户能够从不同的 IdM 客户端管理敏感数据。
- 要点:有关使用 Ansible 管理 IdM vaults 和用户 secret 以及 playbook 变量的更多信息,请参阅 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/ 目录中的 README-vault.md Markdown 文件和 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/ 目录中的 playbook 示例。
26.1. 先决条件
- 要点:其他资源
- 列表:密钥恢复授权中心 (KRA) 证书系统组件已安装在您的 IdM 域中的一个或多个服务器上。
- 列表:在 IdM 中安装密钥恢复授权
26.2. 使用 Ansible 在 IdM 中存在标准用户库
- 要点:使用 Ansible playbook 创建具有一个或多个私有密码库的 vault 容器,以安全地存储敏感信息,允许 vault 所有者从任何 IdM 客户端访问存储的 secret,而无需额外身份验证。
- 要点:在以下示例中,idm_user 用户创建名为 my_vault 的标准类型库。标准密码库类型确保无需 idm_user 在访问该文件时进行身份验证。idm_user 能够从用户登录的任何 IdM 客户端检索 文件。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 列表:您知道 idm_user 的密码。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/ensure-standard-vault-is-present.yml ensure-standard-vault-is-present-copy.yml26.3. 使用 Ansible 将 secret 归档到 IdM 中的标准用户库中
- 要点:使用 Ansible playbook 将敏感信息存储在个人密码库中。在使用的示例中,idm_user 用户在名为 my_vault 的库中归档含有名为 password.txt 的敏感信息的文件。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 列表:您知道 idm_user 的密码。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/data-archive-in-symmetric-vault.yml data-archive-in-standard-vault-copy.yml26.4. 使用 Ansible 从 IdM 中的标准用户库检索 secret
- 要点:使用 Ansible 从您的个人库检索机密,并访问安装 Ansible 的任何 IdM 客户端上存储的敏感数据。
- 要点:在以下示例中,idm_user 用户从名为 my_vault 的标准类型库检索包含敏感数据的文件到名为 host01 的 IdM 客户端。idm_user 在访问该文件时不必进行身份验证。idm_user 可以使用 Ansible 从安装 Ansible 的任何 IdM 客户端检索 文件。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 列表:您知道 idm_user 的密码。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
[ipahost] host01.idm.example.com第 27 章 使用 Ansible 管理 IdM 服务库:存储和检索 secret
- 要点:使用 Ansible 在非对称库中存储服务机密,以安全地将凭据分发到服务实例,同时维护管理员控制。
- 要点:身份管理(IdM)管理员可以使用 ansible-freeipa vault 模块将服务 secret 安全地存储在集中式位置。示例中使用的密码库是非对称的,这意味着要使用它,管理员需要执行以下步骤:
- 列表:例如,使用 openssl 工具生成一个私钥。
- 列表:根据私钥生成一个公钥。
27.1. 先决条件
- 要点:在以下流程中:
- 列表:密钥恢复授权中心 (KRA) 证书系统组件已安装在您的 IdM 域中的一个或多个服务器上。
- 列表:admin 是管理服务密码的管理员。
- 列表:private-key-to-an-externally-certificate.pem 是包含服务 secret 的文件,本例中为外部签名证书的私钥。请勿将此私钥与用于从密码库检索机密的私钥混淆。
- 列表:secret_vault 是为存储服务 secret 而创建的库。
- 列表:HTTP/webserver1.idm.example.com 是密码库的所有者服务。
- 列表:HTTP/webserver2.idm.example.com 和 HTTP/webserver3.idm.example.com 是 vault 成员服务。
27.2. 使用 Ansible 在 IdM 中存在非对称服务库
- 要点:使用 Ansible playbook 创建具有一个或多个私有密码库的服务 vault 容器,以安全地存储敏感信息,需要私钥身份验证。
- 要点:在以下示例中,管理员创建名为 secret_vault 的非对称库。这样可确保 vault 成员必须使用私钥进行身份验证,以检索 vault 中的 secret。vault 成员能够从任何 IdM 客户端检索 文件。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ openssl genrsa -out service-private.pem 2048 Generating RSA private key, 2048 bit long modulus .+++ ...........................................+++ e is 65537 (0x10001)27.3. 使用 Ansible 将成员服务添加到非对称库
- 要点:使用 Ansible playbook 将成员服务添加到服务库中,以便它们都可以检索密码库中存储的机密。
- 要点:在以下示例中,您要将 HTTP/webserver2.idm.example.com 和 HTTP/webserver3.idm.example.com 服务主体添加到 HTTP/webserver1.idm.example.com 拥有的 secret_vault 中,授予它们访问权限来检索存储的机密。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/data-archive-in-asymmetric-vault.yml add-services-to-an-asymmetric-vault.yml27.4. 使用 Ansible 将 IdM 服务 secret 存储在非对称库中
- 要点:使用 Ansible 将服务 secret 归档到名为 secret_vault 的非对称库中,使用用于安全存储的公钥加密。
- 要点:之后:
- 列表:服务可以从密码库检索机密。
- 列表:检索需要使用对应的私钥进行身份验证。
- 列表:该服务可以在任何 IdM 客户端中运行。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/data-archive-in-asymmetric-vault.yml data-archive-in-asymmetric-vault-copy.yml27.5. 使用 Ansible 为 IdM 服务检索服务 secret
- 要点:使用 Ansible 从 secret_vault 检索 secret,并将它分发到清单文件中列出的服务实例。
- 要点:使用以下 Ansible playbook,代表该服务从服务库检索机密。具体来说,运行 playbook 从名为 secret_vault 的非对称库检索带有 secret 的 PEM 文件,并将它存储在 Ansible 清单文件中列出的所有主机上的指定位置,存为 ipaservers。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
[ipaserver] server.idm.example.com [webservers] webserver1.idm.example.com webserver2.idm.example.com webserver3.idm.example.com27.6. 在使用 Ansible 泄露时更改 IdM 服务 vault secret
- 要点:重复使用 Ansible playbook 来替换服务库中被入侵的 secret,并将它重新分发到不受影响的服务实例,不包括被破坏的主机。
- 要点:以下示例中的情景假定 on webserver3.idm.example.com 检索到的机密已被破坏,而不是存储该机密的非对称库的密钥。在示例中,管理员重复利用在非对称库中存储一个 secret 时,以及从非对称库中获取一个 secret 导入到 IdM 主机 时使用的 Ansible playbook。在流程开始时,IdM 管理员使用非对称密码库中的新 secret 存储一个新的 PEM 文件,调整清单文件,而不检索到被入侵的 Web 服务器 webserver3.idm.example.com,然后重新运行这两个程序。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
[ipaserver] server.idm.example.com [webservers] webserver1.idm.example.com webserver2.idm.example.com- 注意:重要 确保列表不包含当前 example webserver3.idm.example.com 中被入侵的 web 服务器。
27.7. 其他资源
- 列表:在 IdM 中安装密钥恢复授权
第 28 章 使用 Ansible 在 IdM 中确保存在或不存在服务
- 要点:使用 freeipa.ansible_freeipa.service Ansible 模块(包括服务主体的证书附加和 keytab 管理)在身份管理(IdM)中注册和管理非原生服务。
- 要点:有关 FreeIPA Ansible 集合中变量和示例 playbook 的详情,请查看控制节点上的 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-service.md 文件。
28.1. 使用 Ansible playbook 在 IdM 中存在 HTTP 服务
- 要点:在 IdM 中注册 HTTP 服务,以便为 IdM 客户端上的 Web 应用程序启用 Kerberos 验证和证书管理。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/service/service-is-present.yml service-is-present-copy.yml28.2. 使用一个 Ansible 任务确保在 IdM 客户端上的 IdM 中存在多个服务
- 要点:将单个 Ansible 任务与 services batch 选项结合使用,在身份管理(IdM)中注册多个服务,以便有效地调配服务。
- 要点:您可以使用 ansible-freeipa freeipa.ansible_freeipa.ipaservice 模块来添加、修改和删除带有单个 Ansible 任务的多个 IdM 服务。使用 services 选项,您还可以指定多个仅应用到特定的服务的服务变量。根据 name 变量定义此服务,这是 services 选项的唯一强制变量。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to add multiple services in a single task hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add HTTP and ftp services freeipa.ansible_freeipa.ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" services: - name: HTTP/client01.idm.example.com@IDM.EXAMPLE.COM - name: ftp/client02.idm.example.com@IDM.EXAMPLE.COM
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-http-and-ftp-services.yml28.3. 使用 Ansible playbook,确保在 IdM 中存在于非IdM 客户端中的 HTTP 服务
- 要点:为不是 IdM 客户端的主机注册 HTTP 服务,在 IdM 中自动创建主机条目。
- 要点:先决条件
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/service/service-is-present-without-host-check.yml service-is-present-without-host-check-copy.yml28.4. 使用 Ansible playbook 确保在没有 DNS 的 IdM 客户端上存在 HTTP 服务
- 要点:为缺少 DNS 记录的主机注册 HTTP 服务,绕过服务创建过程中的默认 DNS 验证。
- 要点:在以下示例中,如果使用 IPv6 而不是 IPv4,IdM 主机没有可用的 DNS A 条目 - 或没有 DNS AAAA 条目。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/service/service-is-present-with-host-force.yml service-is-present-with-host-force-copy.yml28.5. 使用 Ansible playbook 确保 IdM 服务条目中存在外部签名的证书
- 要点:当您的机构需要来自可信第三方 CA 的证书时,请将外部签名的证书附加到 IdM 服务。
- 要点:以下示例使用 ansible-freeipa service 模块来确保外部证书颁发机构(CA)发布的证书附加到 HTTP 服务的 IdM 条目。如果您的 IdM CA 使用自签名证书,则由外部 CA 而不是 IdM CA 签名的 HTTP 服务证书特别有用。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/service/service-member-certificate-present.yml service-member-certificate-present-copy.yml28.6. 使用 Ansible playbook 来允许 IdM 用户、组、主机或主机组创建服务的 keytab
- 要点:将 keytab 创建权限委派给特定的用户或主机,使它们能够在不完全管理访问的情况下管理服务身份验证。
- 要点:keytab 是一个包含 Kerberos 主体和加密密钥对的文件。keytab 文件通常用于允许脚本使用 Kerberos 自动进行身份验证,无需人工交互或访问存储在纯文本文件中的密码。然后,脚本可以使用获取的凭据来访问存储在远程系统上的文件。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/service/service-member-allow_create_keytab-present.yml service-member-allow_create_keytab-present-copy.yml28.7. 使用 Ansible playbook 来允许 IdM 用户、组、主机或主机组检索服务的 keytab
- 要点:向特定用户或主机授予 keytab 检索权限,允许它们获取自动化脚本的服务凭证。
- 要点:keytab 是一个包含 Kerberos 主体和加密密钥对的文件。keytab 文件通常用于允许脚本使用 Kerberos 自动进行身份验证,无需人工交互或访问存储在纯文本文件中的密码。然后,脚本可以使用获取的凭据来访问存储在远程系统上的文件。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/service/service-member-allow_retrieve_keytab-present.yml service-member-allow_retrieve_keytab-present-copy.yml28.8. 使用 Ansible playbook 确保存在服务的 Kerberos 主体别名
- 要点:为服务添加主体别名,以便客户端可以使用替代名称(如公司域名)进行身份验证。
- 要点:在某些情况下,IdM 管理员可启用 IdM 用户、主机或服务使用 Kerberos 主体别名进行身份验证。这些情况包括:
- 列表:用户名已更改,但该用户应该能够使用先前和新用户名登录系统。
- 列表:即使 IdM Kerberos 域与电子邮件域不同,用户也需要使用电子邮件地址登录。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/service/service-member-principal-present.yml service-member-principal-present-copy.yml28.9. 使用 Ansible playbook 确保 IdM 中缺少 HTTP 服务
- 要点:在停用 web 服务器或清理未使用的服务主体时,使用 Ansible 从 IdM 中删除 HTTP 服务条目。
- 要点:以下示例确保 IdM 中没有名为 HTTP/client.idm.example.com 的 HTTP 服务器。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/service/service-is-absent.yml service-is-absent-copy.yml第 29 章 使用 Ansible playbook 在 IdM 中管理全局 DNS 配置
- 要点:使用 freeipa.ansible_freeipa.dnsconfig Ansible 模块配置全局 DNS 设置,包括应用到所有身份管理(IdM) DNS 服务器的转发器和转发策略。
- 要点:dnsconfig 模块支持以下变量:
- 列表:全局转发器,特别是 IP 地址和用于通信的端口。
- 列表:全局转发策略:只有、first 或 none。
- 列表:同步正向查找和反向查找区域。 注意 全局配置的优先级低于特定 IdM DNS 区的配置。
29.1. 先决条件
- 要点:其他资源
- 列表:DNS 服务安装在 IdM 服务器上。
- 列表:安装 IdM 服务器:使用集成的 DNS,集成的 CA 作为 root CA
- 列表:安装 IdM 服务器:具有集成的 DNS,具有外部 CA 作为根CA
- 列表:安装 IdM 服务器:使用集成的 DNS,没有 CA
29.2. IdM 如何确保 NetworkManager 不会删除 /etc/resolv.conf 中的全局转发器
- 要点:了解身份管理(IdM)如何配置 NetworkManager,以在 DHCP 网络上的 /etc/resolv.conf 中保留 DNS 设置。
- 要点:安装带有集成 DNS 的 IdM 配置 /etc/resolv.conf 文件以指向 127.0.0.1 localhost 地址:
- 列表:DNS 安装脚本会创建一个 /etc/NetworkManager/conf.d/zzz-ipa.conf NetworkManager 配置文件来控制搜索顺序和 DNS 服务器列表: # auto-generated by IPA installer [main] dns=default [global-dns] searches=$DOMAIN [global-dns-domain-*] servers=127.0.0.1
- 列表:NetworkManager 服务已重新加载,该服务始终使用 /etc/NetworkManager/conf.d/ 目录中的最后一个文件中的设置来创建 /etc/resolv.conf 文件。这时为 zzz-ipa.conf 文件。
- 命令/配置摘录:
# Generated by NetworkManager search idm.example.com nameserver 127.0.0.1
# auto-generated by IPA installer [main] dns=default [global-dns] searches=$DOMAIN [global-dns-domain-*] servers=127.0.0.1- 注意:重要 不要手动修改 /etc/resolv.conf 文件。
29.3. 使用 Ansible 确保 IdM 中存在 DNS 全局转发器
- 要点:使用 Ansible 将全局 DNS 转发器添加到身份管理(IdM),以解析 IdM DNS 区域之外的域的查询。
- 要点:在以下示例中,IdM 管理员确保在端口 53 上存在一个 Internet 协议(IP) v4 地址为 7.7.9.9 和 IP v6 地址为 2001:db8::1:0 的 DNS 全局转发器。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/forwarders-absent.yml ensure-presence-of-a-global-forwarder.yml29.4. 使用 Ansible 确保 IdM 中没有 DNS 全局转发器
- 要点:在弃用外部 DNS 服务器或更改转发配置时,使用 Ansible 从身份管理(IdM)中删除全局 DNS 转发器。
- 要点:在以下示例流程中,IdM 管理员确保端口 53 上具有互联网协议(IP)v4 地址 8.8.6.6 和 IP v6 地址 2001:4860:4860::8800 的 DNS 全局转发器(IP)不存在。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/forwarders-absent.yml ensure-absence-of-a-global-forwarder.yml- 注意:重要 如果您仅在 playbook 中使用 state: absent 选项,而不使用 action: member,则 playbook 会失败。
29.5. ipadnsconfig ansible-freeipa 模块中的 action: member 选项
- 要点:查看在需要 action: member 和 ipadnsconfig 模块时使用 Ansible 在身份管理(IdM)中管理全局转发器时的示例。
- 要点:使用 ansible-freeipa ipadnsconfig 模块排除 IdM 中的全局转发器,除了 state: absent 选项外,还需要使用 action: member 选项。如果您只使用 playbook 中的 state: absent,而没有使用 action: member,则 playbook 将失败。因此,要删除所有全局转发器,您必须在 playbook 中分别指定它们。相反,state: present 选项不需要 action: member。
- 列表:执行 playbook 前配置的全局转发器
- 列表:playbook 摘录
- 列表:执行 playbook 后配置的全局转发器
- 表格样本(共 5 行):
- 之前的转发器 | Playbook 摘录 | 之后的转发器
- 8.8.6.6 | [...] tasks: - name: Ensure the presence of DNS global forwarder 8.8.6.7 ipadnsconfig: forwarders: - ip_address: 8.8.6.7 state: present | 8.8.6.7
- 8.8.6.6 | [...] tasks: - name: Ensure the presence of DNS global forwarder 8.8.6.7 ipadnsconfig: forwarders: - ip_address: 8.8.6.7 action: member state: present | 8.8.6.6, 8.8.6.7
- 8.8.6.6, 8.8.6.7 | [...] tasks: - name: Ensure the absence of DNS global forwarder 8.8.6.7 ipadnsconfig: forwarders: - ip_address: 8.8.6.7 state: absent | 尝试执行 playbook 会导致错误。原始配置 - 8.8.6.6、8.8.6.7 - 保持不变。
29.6. IdM 中的 DNS 转发策略
- 要点:了解身份管理(IdM)中的 DNS 转发策略类型,以及它们如何确定查询是否在本地转发、解析或被视为不存在。
- 要点:IdM 支持 第一个 且 唯一的 标准 BIND 转发策略,以及任何 IdM 特定的转发策略。
- 注意:注意 您不能使用转发将 IdM 中的数据与其他 DNS 服务器的数据组合。您只能在 IdM DNS 中转发主区的查询。 默认情况下,如果查询的 DNS 名称属于 IdM 服务器具有权威的区域,BIND 服务不会将查询转发到另一服务器。在这种情况下,如果无法在 IdM 数据库中找到查询的 DNS 名称,则会返回 NXDOMAIN 回答。未使用转发。
29.7. 使用 Ansible playbook 确保 IdM DNS 全局配置中设置了 forward first 策略
- 要点:使用 Ansible 将全局 DNS 转发策略 设置为在身份管理(IdM)中转发,它会首先尝试转发器,然后回退到递归解析。
- 要点:forward first 策略是默认策略。它适用于流量优化。如果因为服务器错误或超时查询失败,BIND 会使用 Internet 上的服务器回退到递归解析。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/set-configuration.yml set-forward-policy-to-first.yml29.8. 使用 Ansible playbook 确保 IdM DNS 中禁用了全局转发器
- 要点:使用 Ansible 禁用身份管理(IdM)中的全局 DNS 转发,以强制服务器使用递归解析。
- 要点:禁用转发仅作为全局转发配置的特定区覆盖。这个选项等同于在 BIND 配置中指定空转发器列表。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/disable-global-forwarders.yml disable-global-forwarders-copy.yml29.9. 使用 Ansible playbook 确保 IdM DNS 中禁用了正向和反向查找区域的同步
- 要点:使用 Ansible 进行独立区域管理,禁用身份管理(IdM)中的正向和反向 DNS 区域之间的自动同步。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig/disallow-reverse-sync.yml disallow-reverse-sync-copy.yml第 30 章 使用 Ansible playbook 管理 IdM DNS 区域
- 要点:使用 Ansible 在身份管理(IdM)中创建和配置主 DNS 区域,以管理您的域的权威 DNS 数据。
30.1. 先决条件
- 列表:DNS 服务安装在 IdM 服务器上。
30.2. 支持的 DNS 区类型
- 要点:您可以使用主区域来托管权威 DNS 数据,并转发区域,将查询委派给身份管理(IdM)部署中的外部服务器。
- 要点:身份管理 (IdM) 支持两种类型的 DNS 区域:primary 和 forward区域。
- 列表:域名
- 列表:与域关联的 DNS 服务器的 IP 地址 所有对属于定义的域的名称的查询都转发到指定的 IP 地址。此行为等同于标准 BIND 配置中的 type forward 设置。您可以使用 ipa dnsforwardzone-* 命令管理转发区域。 转发 DNS 区域在 IdM-Active Directory(AD)信任的上下文中特别有用。如果 IdM DNS 服务器对 idm.example.com 区域具有权威,并且 AD DNS 服务器对 ad.example.com 区域具有权威,则 ad.example.com 是 idm.example.com 主区的 DNS 转发区域。这意味着,当查询来自 IdM 客户端以获取 some…
- 注意:注意 本指南对区域类型使用 BIND 术语,不同于用于 Microsoft Windows DNS 的术语。BIND 服务器中的 Primary zones 与 Microsoft Windows DNS 中的 forward lookup zones 和 reverse lookup zones 作用相同。BIND 中的转发区域的作用与 Microsoft Windows DNS 中的条件 转发器相同。
30.3. 使用 Ansible 时主 IdM DNS 区域的配置属性
- 要点:查看 Ansible ipadnszone 模块中提供的 DNS 区域属性,并调优它们以获得最佳 DNS 性能。
- 要点:身份管理(IdM)创建一个具有特定默认配置的新区域,如刷新周期、传输设置或缓存设置。在下面,您可以找到可使用 Ansible 修改的默认区域配置的属性。
- 表格样本(共 17 行):
- 属性 | ansible-freeipa 变量 | 描述
- 权威名称服务器 | name_server | 设置主 DNS 名称服务器的域名,也称为 SOA MNAME。 默认情况下,每个 IdM 服务器在 SOA MNAME 字段中公告其自身。因此,使用 --name-server 存储在 LDAP 中的值会被忽略。
- 管理员电子邮件地址 | admin_email | 设置要用于区域管理员的电子邮件地址。这默认为主机上的 root 帐户。
- SOA 串行 | serial | 在 SOA 记录中设置序列号。请注意,IdM 会自动设置版本号,用户不应该修改它。
30.4. 使用 Ansible 在 IdM DNS 中创建主区域
- 要点:在 IdM 中创建主 DNS 区域,以托管由您的 IdM 服务器管理的域的权威 DNS 记录。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone
[ipaserver] server.idm.example.com30.5. 使用 Ansible playbook 确保 IdM 中存在一个带有多个变量的主 DNS 区域
- 要点:使用自定义设置(如管理员电子邮件、刷新间隔和 TTL 值)创建 DNS 区域,以满足您所在机构的 DNS 要求。
- 要点:在以下示例中,作为 IdM 管理员,您要确保存在 zone.idm.example.com DNS 区域。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone
$ cp dnszone-all-params.yml dnszone-all-params-copy.yml30.6. 在给定 IP 地址时,使用 Ansible playbook 确保存在用于反向 DNS 查找的区域
- 要点:使用 Ansible 创建反向 DNS 区域,为 IP 到主机名解析启用 PTR 记录查找。
- 要点:在以下示例中,IdM 管理员使用 IdM 主机的 IP 地址和前缀长度来确保存在反向 DNS 查找区。
- 列表:1.168.192.in-addr.arpa.
- 列表:168.192.in-addr.arpa.
- 列表:192.in-addr.arpa.
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnszone
$ cp dnszone-reverse-from-ip.yml dnszone-reverse-from-ip-copy.yml30.7. 其他资源
- 列表:管理 IdM 中的 DNS 区域
第 31 章 使用 Ansible 管理 IdM 中的 DNS 位置
- 要点:使用 Ansible 定义 DNS 位置,使客户端能够发现和使用地理附近的身份管理(IdM)服务器,以加快响应速度。
- 要点:有关 FreeIPA Ansible 集合中变量和示例 playbook 的详情,请查看控制节点上的 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-location.md 文件和 /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location 目录。
31.1. 基于 DNS 的服务发现
- 要点:了解客户端如何使用 DNS 来自动定位接近 IdM 服务器,从而减少网络延迟和消除手动服务器配置。
- 要点:在基于 DNS 的服务发现中,客户端使用 DNS 协议在提供特定服务的网络中查找服务器,如 LDAP 或 Kerberos。种典型的操作类型是允许客户端在最接近的网络基础架构中查找身份验证服务器,因为它们提供更高的吞吐量和较低的网络延迟,从而降低总体成本。
- 列表:无需使用附近服务器的名称明确配置客户端。
- 列表:DNS 服务器用作策略的中央提供程序。使用同一 DNS 服务器的客户端有权访问关于服务提供商及其首选顺序的相同策略。
- 列表:0 (优先级):目标主机的优先级。首选使用较低值。
- 列表:100 (权重).为优先级相同的条目指定相对权重。
- 列表:88(端口号):服务的端口号。
- 列表:提供服务的主机的规范名称。
- 命令/配置摘录:
$ dig -t SRV +short _kerberos._tcp.idm.example.com 0 100 88 idmserver-01.idm.example.com. 0 100 88 idmserver-02.idm.example.com.
$ dig -t SRV +short _kerberos._tcp.idm.example.com _kerberos._tcp.germany._locations.idm.example.com. 0 100 88 idmserver-01.idm.example.com. 50 100 88 idmserver-02.idm.example.com.31.2. DNS 位置部署的注意事项
- 要点:规划您的 DNS 位置部署,以确保客户端收到特定于位置的 SRV 记录,并连接到接近 IdM 服务器。
- 要点:使用集成 DNS 时,身份管理(IdM)可以生成特定于位置的服务(SRV)记录。因为每个 IdM DNS 服务器都会生成特定于位置的 SRV 记录,所以您必须在每个 DNS 位置至少安装一个 IdM DNS 服务器。
31.3. DNS 生存时间(TTL)
- 要点:查看您可以使用 DNS TTL 值来控制客户端缓存记录的时长,这对在位置间移动的客户端来说尤其重要。
- 要点:客户端可以在区域配置中设置的一段时间内缓存 DNS 资源记录。由于这种缓存,客户端可能无法接收更改,直到生存时间(TTL)值过期为止。Identity Management(IdM)中的默认 TTL 值为 1 天。
- 列表:使用 Ansible 时主 IdM DNS 区域的配置属性
31.4. 使用 Ansible 确保存在 IdM 位置
- 要点:使用 Ansible 在身份管理(IdM)中创建 DNS 位置,以便客户端可以发现并使用 nearby 服务器来加快身份验证。
- 要点:作为身份管理系统管理员(IdM),您可以配置 IdM DNS 位置,以允许客户端在最接近的网络基础架构中查找身份验证服务器。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/location-present.yml location-present-copy.yml31.5. 使用 Ansible 确保缺少 IdM 位置
- 要点:在停用地理站点或重新构建拓扑时,使用 Ansible 从身份管理(IdM)中删除 DNS 位置。
- 要点:作为身份管理系统管理员(IdM),您可以配置 IdM DNS 位置,以允许客户端在最接近的网络基础架构中查找身份验证服务器。
- 列表:没有 IdM 服务器被分配给 germany DNS 位置。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/location/location-absent.yml location-absent-copy.yml31.6. 其他资源
- 列表:管理 IdM 中的 DNS 位置
第 32 章 在 IdM 中管理 DNS 转发
- 要点:使用 Web UI、CLI 或 Ansible 配置全局转发器和 DNS 转发区域,以解析身份管理(IdM)域之外的名称。
32.1. IdM DNS 服务器的两个角色
- 要点:身份管理(IdM) DNS 服务器可以作为权威和递归 DNS 服务器运行,并使用转发来解析外部查询。
- 要点:DNS 转发会影响 DNS 服务如何应答 DNS 查询。默认情况下,集成了 IdM 的 Berkeley Internet Name Domain (BIND) 作为一个 authoritative 和一个 recursive DNS 服务器:
32.2. 在 IdM Web UI 中添加全局转发器
- 要点:通过 Web 界面配置全局 DNS 转发器,以解析身份管理(IdM) DNS 区域之外的域的查询。
- 要点:先决条件
- 列表:以 IdM 管理员身份登录到 IdM WebUI。
- 列表:您知道要将查询转发到的 DNS 服务器的 Internet 协议(IP)地址。
- 列表:在 IdM Web UI 中,选择 Network Services → DNS Global Configuration → DNS。
- 列表:在 DNS Global Configuration 部分中,单击 Add。
- 列表:指定将接收转发 DNS 查询的 DNS 服务器的 IP 地址。
- 列表:选择 Forward policy。
32.3. 在 CLI 中添加全局转发器
- 要点:从命令行配置全局 DNS 转发器,以解析身份管理(IdM) DNS 区域之外的域的查询。
- 要点:先决条件
- 列表:以 IdM 管理员身份登录。
- 列表:您知道要将查询转发到的 DNS 服务器的 Internet 协议(IP)地址。
- 列表:使用 ipa dnsconfig-mod 命令添加新的全局转发器。使用 --forwarder 选项指定 DNS 转发器的 IP 地址。 [user@server ~]$ ipa dnsconfig-mod --forwarder=10.10.0.1 Server will check DNS forwarder(s). This may take some time, please wait ... Global forwarders: 10.10.0.1 IPA DNS servers: server.example.com
- 列表:使用 dnsconfig-show 命令显示全局转发器。 [user@server ~]$ ipa dnsconfig-show Global forwarders: 10.10.0.1 IPA DNS servers: server.example.com
- 命令/配置摘录:
[user@server ~]$ ipa dnsconfig-mod --forwarder=10.10.0.1
Server will check DNS forwarder(s). This may take some time, please wait ... Global forwarders: 10.10.0.1 IPA DNS servers: server.example.com32.4. 在 IdM Web UI 中添加 DNS 转发区域
- 要点:通过身份管理(IdM) Web 界面(Web UI)创建 DNS 转发区域,将对特定域的查询转发到指定的外部 DNS 服务器。
- 要点:先决条件
- 列表:以 IdM 管理员身份登录到 IdM WebUI。
- 列表:您知道要将查询转发到的 DNS 服务器的 Internet 协议(IP)地址。
- 列表:在 IdM Web UI 中,选择 Network Services → DNS Forward Zones → DNS。
- 列表:在 DNS Forward Zones 部分,点 Add。
- 列表:在 Add DNS forward zone 窗口中,指定 forward zone 名称。
- 列表:点击 Add 按钮,并指定 DNS 服务器的 IP 地址来接收转发请求。您可以为每个转发区指定多个转发器。
- 注意:重要 除非绝对需要,否则请不要使用转发区域。转发区域不是标准解决方案,使用它们可能会导致意外和有问题的行为。如果您必须使用 forward zone,限制使用它们覆盖全局转发配置。 在创建新 DNS 区域时,红帽建议您始终使用名称服务器(NS)记录和避免转发区域,始终使用标准 DNS 委派。在大多数情况下,使用全局转发器足够了,并且转发区不需要。
32.5. 在 CLI 中添加 DNS 转发区域
- 要点:从命令行(CLI)创建 DNS 转发区域,将特定域的查询转发到指定的外部 DNS 服务器。
- 要点:先决条件
- 列表:以 IdM 管理员身份登录。
- 列表:您知道要将查询转发到的 DNS 服务器的 Internet 协议(IP)地址。
- 列表:使用 dnsforwardzone-add 命令添加新的转发区域。如果转发策略不是 none,则使用 --forwarder 选项至少指定一个转发器,并使用 --forward-policy 选项指定转发策略。 [user@server ~]$ ipa dnsforwardzone-add forward.example.com. --forwarder=10.10.0.14 --forwarder=10.10.1.15 --forward-policy=first Zone name: forward.example.com. Zone forwarders: 10.10.0.14, 10.10.1.15 Forward pol…
- 列表:使用 dnsforwardzone-show 命令显示您刚才创建的 DNS 转发区域。 [user@server ~]$ ipa dnsforwardzone-show forward.example.com. Zone name: forward.example.com. Zone forwarders: 10.10.0.14, 10.10.1.15 Forward policy: first
- 命令/配置摘录:
[user@server ~]$ ipa dnsforwardzone-add forward.example.com. --forwarder=10.10.0.14 --forwarder=10.10.1.15 --forward-policy=first
Zone name: forward.example.com. Zone forwarders: 10.10.0.14, 10.10.1.15 Forward policy: first- 注意:重要 除非绝对需要,否则请不要使用转发区域。转发区域不是标准解决方案,使用它们可能会导致意外和有问题的行为。如果您必须使用 forward zone,限制使用它们覆盖全局转发配置。 在创建新 DNS 区域时,红帽建议您始终使用名称服务器(NS)记录和避免转发区域,始终使用标准 DNS 委派。在大多数情况下,使用全局转发器足够了,并且转发区不需要。
32.6. 使用 Ansible 在 IdM 中建立 DNS 全局转发器
- 要点:使用 Ansible 在身份管理(IdM)中配置初始全局 DNS 转发器,以启用外部域名的解析。
- 要点:在以下示例流程中,IdM 管理员创建了一个到互联网协议(IP)v4 地址为 8.8.6.6 和 IPv6 地址为 2001:4860:4860::8800 的 DNS 服务器,端口为 53 的 DNS 全局转发器。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cp set-configuration.yml establish-global-forwarder.yml32.7. 使用 Ansible 确保 DNS 全局转发器在 IdM 中被禁用
- 要点:使用 Ansible 禁用全局 DNS 转发器,将 forward 策略设置为 none,强制身份管理(IdM)使用递归解析。
- 要点:先决条件
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cat disable-global-forwarders.yml32.8. 使用 Ansible 确保 IdM 中存在 DNS 转发区域
- 要点:使用 Ansible 在身份管理(IdM)中创建 DNS 转发区域,将特定域的查询定向到指定的外部 DNS 服务器。
- 要点:在以下示例中,IdM 管理员确保将 example.com 的 DNS 转发区域配置为将查询转发到 8.8.8.8。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cp forwarders-absent.yml ensure-presence-forwardzone.yml32.9. 使用 Ansible 确保 DNS 转发区域 在 IdM 中有多个转发器
- 要点:使用 Ansible 为 DNS 转发区域配置多个转发器,以便在解析外部域的查询时提供冗余。
- 要点:在以下示例中,您可以确保 example.com 的 DNS 转发区转发到 8.8.8.8 和 4.4.4.4。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cp forwarders-absent.yml ensure-presence-multiple-forwarders.yml32.10. 使用 Ansible 确保 IdM 中禁用了 DNS 转发区
- 要点:使用 Ansible 禁用 DNS 转发区域,以停止对特定域的转发查询,而不删除区域配置。
- 要点:在以下示例中,您可以确保 example.com 的 DNS 转发区域被禁用。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cp forwarders-absent.yml ensure-disabled-forwardzone.yml32.11. 使用 Ansible 确保 IdM 中没有 DNS 转发区域
- 要点:当您不再需要转发特定域的查询时,使用 Ansible 从身份管理(IdM)中删除 DNS 转发区域。
- 要点:在以下示例中,IdM 管理员确保 example.com 缺少 DNS 转发区。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsconfig
$ cp forwarders-absent.yml ensure-absence-forwardzone.yml第 33 章 使用 Ansible 管理 IdM 中的 DNS 记录
- 要点:使用 Ansible 在身份管理(IdM)区域中添加、修改和删除 DNS 记录,以便在您的基础架构之间自动化 DNS 管理。
33.1. IdM 中的 DNS 记录
- 要点:了解 IdM 支持的 DNS 记录类型,包括用于主机解析和服务发现的 A、AAAA、SRV 和 PTR 记录。
- 要点:身份管理(IdM)支持许多不同的 DNS 记录类型。以下 4 个是最常用的:
- 列表:RFC 1035
- 列表:RFC 3596
- 列表:RFC 2782
- 列表:RFC 2317
- 列表:RFC 3596 - IPv6 反向区域
- 注意:注意 IPv4 地址的所有反向 DNS 查找都使用在 in-addr.arpa. 域中定义的反向条目。反向地址(人类可读形式)与常规 IP 地址正好相反,其中 in-addr.arpa. 域附加到该地址。例如,对于网络地址 192.0.2.0/24,反向区域为 2.0.192.in-addr.arpa。
- 注意:注意 也可以使用 .ip6.arpa. 域中的区域为 IPv6 地址配置反向区域。
33.2. Common ipa dnsrecord-* 选项
- 要点:查看用于在 IdM DNS 区域中管理 A、AAAA、SRV 和 PTR 记录的命令行选项。
- 要点:在 Bash 中,您可以通过列出大括号内的逗号分隔列表中的值来定义多个条目,如 --option={val1,val2,val3}。
- 表格样本(共 3 行):
- 选项 | 描述
- --ttl=number | 为记录设置生存时间。
- --structured | 解析原始 DNS 记录,并以结构化格式返回它们。
33.3. 确保使用 Ansible 在 IdM 中存在 A 和 AAAA DNS 记录
- 要点:创建 A 和 AAAA 记录,将主机名映射到 IPv4 和 IPv6 地址,为 IdM 域中的主机启用名称解析。
- 要点:以下示例确保 idm.example.com DNS 区域中存在 host1 的 A 和 AAAA 记录。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
$ cp ensure-A-and-AAAA-records-are-present.yml ensure-A-and-AAAA-records-are-present-copy.yml33.4. 确保使用 Ansible 在 IdM 中存在 A 和 PTR DNS 记录
- 要点:创建匹配的 A 和 PTR 记录,为单个 Ansible 任务中的主机启用正向和反向 DNS 查找。
- 要点:以下示例确保 idm.example.com 区域中存在 IP 地址为 192.168.122.45 的 host1 的 A 和 PTR 记录。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
$ cp ensure-dnsrecord-with-reverse-is-present.yml ensure-dnsrecord-with-reverse-is-present-copy.yml33.5. 确保使用 Ansible 在 IdM 中存在多个 DNS 记录
- 要点:在单个 DNS 记录中添加多个 IP 地址,用于具有多个网络接口的主机或负载平衡目的。
- 要点:按照以下流程,使用 Ansible playbook 确保多个值与特定 IdM DNS 记录相关联。在以下流程中使用的示例中,IdM 管理员确保 idm.example.com DNS 区域中存在 host1 的多个 A 记录。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord/ensure-presence-multiple-records.yml ensure-presence-multiple-records-copy.yml33.6. 确保使用 Ansible 在 IdM 中存在多个 CNAME 记录
- 要点:创建 CNAME 别名记录,为同一主机提供多个名称,当服务器托管多个服务时很有用。
- 要点:Canonical Name 记录(CNAME 记录)是在域名系统(DNS)中一种资源记录类型,用于将一个域名、别名映射到另一个名称,即规范名称。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
$ cp ensure-CNAME-record-is-present.yml ensure-CNAME-record-is-present-copy.yml33.7. 使用 Ansible 在 IdM 中存在 SRV 记录
- 要点:创建 SRV 记录以公告服务位置,使客户端可以通过查询主机名、端口和优先级的 DNS 来发现服务。
- 要点:DNS 服务 (SRV) 记录定义域中可用服务的主机名、端口号、传输协议、优先级和权重。在 Identity Management(IdM)中,您可以使用 SRV 记录来定位 IdM 服务器和副本。
- 列表:它将服务的优先级设置为 10。
- 列表:它将服务的权重设置为 50。
- 列表:它将服务要使用的端口设置为 88。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 命令/配置摘录:
$ cd /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/dnsrecord
$ cp ensure-SRV-record-is-present.yml ensure-SRV-record-is-present-copy.yml第 34 章 使用 Ansible 为 IdM 用户自动挂载 NFS 共享
- 要点:要确保 IdM 用户在登录到 IdM 客户端时可以访问 NFS 共享,请使用 Ansible 配置自动挂载映射和位置。
- 要点:automount 管理跨多个系统的目录。每当请求目录访问权限时,它会自动挂载目录。这会在身份管理(IdM)域中正常工作,以便您可以在域中的客户端上轻松共享目录。
34.1. IdM 中的 autofs 和自动挂载
- 要点:autofs 服务可根据需要自动化目录的挂载,方法是在目录被访问时,将 automount 守护进程定向到挂载目录。此外,在不活动一段时间后,autofs 将automount 定向到未卸载的自动挂载的目录。与静态挂载不同,按需挂载可节省系统资源。
- 要点:在使用 autofs 的系统上,automount 配置存储在几个不同的文件中。主要的 automount 配置文件是 /etc/auto.master,其中包含系统上 automount 的主映射以及相关的资源。此映射称为 自动挂载映射。
- 列表:根据需要挂载文件系统
- 命令/配置摘录:
dn: automountmapname=auto.master,cn=default,cn=automount,dc=idm,dc=example,dc=com objectClass: automountMap objectClass: top automountMapName: auto.master34.2. 在身份管理域中使用 Kerberos 设置 NFS 服务器
- 要点:如果使用 Red Hat Enterprise Linux Identity Management (IdM),您可以将 NFS 服务器加入到 IdM 域中。这可让您集中管理用户和组,并使用 Kerberos 进行身份验证、完整性保护和流量加密。
- 要点:先决条件
- 列表:NFS 服务器已在 Red Hat Enterprise Linux Identity Management (IdM)域中 注册。
- 列表:NFS 服务器正在运行并已配置。
- 列表:以 IdM 管理员身份获取 kerberos 票据: # kinit admin
- 列表:创建一个 nfs/<FQDN> 服务主体: # ipa service-add nfs/nfs_server.idm.example.com
- 列表:从 IdM 检索 nfs 服务主体,并将其存储在 /etc/krb5.keytab 文件中: # ipa-getkeytab -s idm_server.idm.example.com -p nfs/nfs_server.idm.example.com -k /etc/krb5.keytab
- 列表:可选:显示 /etc/krb5.keytab 文件中的主体: # klist -k /etc/krb5.keytab Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.…
- 命令/配置摘录:
# kinit admin
# ipa service-add nfs/nfs_server.idm.example.com34.3. 使用 Ansible 在 IdM 中配置自动挂载位置、映射和密钥
- 要点:作为身份管理(IdM)系统管理员,您可以在 IdM 中配置自动挂载位置和映射,以便指定位置中的 IdM 用户可以通过导航到其主机上的特定挂载点来访问 NFS 服务器导出的共享。导出的 NFS 服务器目录和挂载点都在映射中指定。在 LDAP 术语中,位置是此类映射条目的一个容器。
- 要点:以下流程描述了如何使用 Ansible 配置示例 raleigh 自动挂载位置,详情:
- 列表:nfs-server.idm.example.com 是网络文件系统(NFS)服务器和 IdM 客户端 的完全限定域名(FQDN)。
- 列表:将 nfs-server.idm.example.com:/exports/project 共享挂载到 IdM 客户端上的 /devel/project 挂载点的映射,作为读写目录。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/automount/automount-location-present.yml automount-location-map-and-key-present.yml34.4. 使用 Ansible 将 IdM 用户添加到拥有 NFS 共享的组中
- 要点:作为身份管理(IdM)系统管理员,您可以使用 Ansible 来创建可以访问 NFS 共享的用户组,并将 IdM 用户添加到此组中。
- 要点:本例描述了如何使用 Ansible playbook 来确保 idm_user 帐户属于 developers 组,以便 idm_user 可以访问 /exports/project NFS 共享。
- 列表:您有访问 nfs-server.idm.example.com NFS 服务器的 root 权限,该服务器是一个位于 raleigh 自动挂载位置的 IdM 客户端。
- 列表:在控制节点上: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
[...] vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: [...] - ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: developers user: - idm_user state: present34.5. 在 IdM 客户端上配置自动挂载
- 要点:作为身份管理(IdM)系统管理员,您可以在 IdM 客户端上配置自动挂载服务,以便在用户登录客户端时 IdM 用户可以自动访问为已添加客户端的位置配置的 NFS 共享。这个示例描述了如何配置 IdM 客户端,以使用 raleigh 位置中可用的 automount 服务。
- 要点:先决条件
- 列表:您有访问 IdM 客户端的 root 权限。
- 列表:以 IdM 管理员身份登录。
- 列表:自动挂载位置存在。示例位置为 raleigh。
- 列表:在 IdM 客户端上,输入 ipa-client-automount 命令并指定位置。使用 -U 选项以无人值守方式运行脚本。 如果客户端不在 IdM DNS 域中,请使用 the- domain 选项指定 IdM 部署的主 DNS 域,或 a-server 选项指定要连接的 IdM 服务器: # ipa-client-automount --domain idm.example.com --location raleigh -U 使用 the-domain 选项时,DNS 发现将尝试确定要使用的 IdM 服务器。 如果客户端已在 IdM DNS 域中,请运行不带 a- domain 选项的命令 : # ipa-client-au…
- 列表:如果客户端不在 IdM DNS 域中,请使用 the- domain 选项指定 IdM 部署的主 DNS 域,或 a-server 选项指定要连接的 IdM 服务器: # ipa-client-automount --domain idm.example.com --location raleigh -U 使用 the-domain 选项时,DNS 发现将尝试确定要使用的 IdM 服务器。
- 列表:如果客户端已在 IdM DNS 域中,请运行不带 a- domain 选项的命令 : # ipa-client-automount --location raleigh -U
- 命令/配置摘录:
# ipa-client-automount --domain idm.example.com --location raleigh -U
# ipa-client-automount --location raleigh -U34.6. 验证 IdM 用户能否访问 IdM 客户端上的 NFS 共享
- 要点:作为身份管理(IdM)系统管理员,您可以在登录到特定的 IdM 客户端时测试作为特定组一员的 IdM 用户是否可以访问 NFS 共享。
- 要点:在示例中,测试了以下场景:
- 列表:属于 developers 组的名为 idm_user 的 IdM 用户可以读写自动挂载在 idm-client.idm.example.com (一个位于 raleigh 自动挂载位置的 IdM 客户端)上的/devel/project 目录中的内容。
- 列表:您已在 IdM 主机 中配置了 Kerberos 的 NFS 服务器。
- 列表:您已 在 IdM 中配置了自动挂载位置、映射和挂载点,在其中配置了 IdM 用户如何访问 NFS 共享。
- 列表:您已 使用 Ansible 将 IdM 用户添加到拥有 NFS 共享的 developers 组中。
- 列表:您已 在 IdM 客户端 上配置了自动挂载。
- 列表:验证 IdM 用户能否可以访问 读-写 目录: 以 IdM 用户身份连接到 IdM 客户端: $ ssh idm_user@idm-client.idm.example.com Password: 获取 IdM 用户的票据授权票据(TGT): $ kinit idm_user 可选:查看 IdM 用户的组成员资格: $ ipa user-show idm_user User login: idm_user [...] Member of groups: developers, ipausers 进入到 /devel/project 目录: $ cd /devel/project 列出目录内容: $ ls rw_file 对目…
- 命令/配置摘录:
$ ssh idm_user@idm-client.idm.example.com Password:
$ kinit idm_user第 35 章 使用 Ansible 将 IdM 与 NIS 域和网络组集成
- 要点:使用 Ansible 管理 IdM 中的 NIS 网络组,以支持依赖 NIS 风格的用户和主机分组的传统应用程序。
35.1. NIS 及其优点
- 要点:您可以将网络信息服务(NIS)与身份管理(IdM)集成,以增强安全性并为旧 UNIX 环境集中身份验证。
- 要点:在 UNIX 环境中,网络信息服务(NIS)是集中管理身份和身份验证的通用方法。NIS 最初被命名为 Yellow Pages (YP),集中管理身份验证和身份信息,例如:
- 列表:用户和密码
- 列表:主机名和 IP 地址
- 列表:POSIX 组
- 列表:IdM 中的 NIS
- 列表:IdM 中的 NIS netgroups
- 列表:从 NIS 迁移到身份管理
35.2. IdM 中的 NIS
- 要点:了解身份管理(IdM)如何将 NIS 对象集成到其 LDAP 目录中,使旧的 NIS 客户端能够安全地访问身份数据。
- 要点:NIS 对象已集成并存储在目录服务器后端中,并符合 RFC 2307。IdM 在 LDAP 目录中创建 NIS 对象,客户端通过系统安全服务守护进程(SSSD)或使用加密的 LDAP 连接的 nss_ldap 来检索它们。
- 列表:RFC 2307
35.3. IdM 中的 NIS netgroups
- 要点:您可以在身份管理(IdM)中使用网络信息服务(NIS)网络组来管理嵌套组,并在部署间组织 host-user-domain triples。
- 要点:NIS 实体可以存储在 netgroups 中。与 UNIX 组相比, netgroups 为以下情况提供支持:
- 列表:嵌套组(作为其他组成员的组)。
- 列表:对主机进行分组。
- 列表:值。
- 列表:一个短划线(-),它指定了 "no valid value"。
- 列表:无值。空字段指定一个通配符。
- 列表:传统的 NIS 映射,并使用 NIS 插件将其通过 NIS 协议发送到客户端。
- 命令/配置摘录:
(host.example.com,,nisdomain.example.com) (-,user,nisdomain.example.com)35.4. 使用 Ansible 确保 netgroup 存在
- 要点:使用 Ansible 在身份管理(IdM)中创建网络组,为基于 NIS 的应用定义用户和组。
- 要点:以下示例描述了如何确保存在 TestNetgroup1 组。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup members are present freeipa.ansible_freeipa.ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/netgroup-present.yml35.5. 使用 Ansible 确保成员在 netgroup 中存在
- 要点:使用 Ansible 将用户、组、主机和嵌套的 netgroup 添加到身份管理(IdM)中的 netgroup 中,以定义成员资格。
- 要点:在以下示例中,您要确保 TestNetgroup1 组具有以下成员:
- 列表:user1 和 user2 IdM 用户
- 列表:group1 IdM 组
- 列表:admins netgroup
- 列表:是 IdM 客户端的 idmclient1 主机
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 命令/配置摘录:
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup members are present freeipa.ansible_freeipa.ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1 user: user1,user2 group: group1 host: idmclient1 netgroup: admins action: member
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/IdM-members-present-in-a-netgroup.yml35.6. 使用 Ansible 确保一个成员在 netgroup 中不存在
- 要点:使用 Ansible 从身份管理(IdM)中的 netgroup 中删除用户,以撤销其成员资格和关联的访问权限。
- 要点:在以下示例中,您要确保 TestNetgroup1 组在其成员中没有 user1 IdM 用户。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup user, "user1", is absent freeipa.ansible_freeipa.ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1 user: "user1" action: member state: absent
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/IdM-member-absent-from-a-netgroup.yml35.7. 使用 Ansible 确保 netgroup 不存在
- 要点:当您的域不再需要时,使用 Ansible 从身份管理(IdM)中删除 netgroup。
- 要点:在以下示例中,您可以确保 IdM 域中不存在 TestNetgroup1 组。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 列表:示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:目标节点(这是执行 freeipa.ansible_freeipa 模块的节点)作为 IdM 客户端、服务器或副本,是 IdM 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup my_netgroup1 is absent freeipa.ansible_freeipa.ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: my_netgroup1 state: absent
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/netgroup-absent.yml第 36 章 使用 Ansible 在 IdM 中配置 HBAC 和 sudo 规则
- 要点:在身份管理(IdM)中配置基于主机的访问控制(HBAC)和 sudo 规则,以限制哪些用户可以访问特定的主机并运行特权命令,在 IdM 环境中强制实施安全策略。
- 要点:具体来说,使用 HBAC 定义根据以下内容限制主机访问的策略:
- 列表:尝试登录的用户以及此用户的组
- 列表:用户尝试访问的主机以及该主机所属的主机组
- 列表:用于访问主机的服务
- 列表:jane 只能访问主机 client01.idm.example.com。
- 列表:john 只能访问主机 client02.idm.example.com。
- 列表:包括默认的 admin 用户的admins 组的成员以及常规 alice 用户可以访问任何 IdM 主机。
- 命令/配置摘录:
--- - name: Playbook to manage IPA HBAC and SUDO rules hosts: ipaserver become: false gather_facts: false vars_files: - /home/<user_name>/MyPlaybooks/secret.yml module_defaults: group/freeipa.ansible_freeipa.modules: ipaadmin_password: "{{ ipaadmin_password }}" tasks: - name: HBAC Rule for Jane - can log in to client01 freeipa.ansible_freeipa.ipahbacrule: # Creates the rule name: Jane_rule hbacsvc: - sshd - login host: # Host name - client01.idm.example.com user: - jane - name: HBAC Rule for John - can log in to client02 freeipa.ansible_freeipa.ipahbacrule: # Creates the rule name: john_rule hbacsvc: - sshd - login …
$ ansible-playbook --vault-password-file=password_file -i inventory add-hbac-and-sudo-rules-to-idm.yml第 37 章 使用 Ansible 将 IdM 用户的身份验证委派给外部身份提供者
- 要点:使用 Ansible 配置外部身份提供程序引用,使 IdM 用户在收到 Kerberos 票据时通过 OAuth 2 兼容提供程序进行身份验证。
- 要点:您可以使用 idp ansible-freeipa 模块将用户与支持 OAuth 2 设备授权流的外部身份提供者(IdP)相关联。如果存在 IdP 引用和关联的 IdP 用户 ID,您可以使用它们为具有 user ansible-freeipa 模块的 IdM 用户启用 IdP 身份验证。之后,在外部 IdP 执行身份验证和授权后,这些用户会得到带有 Kerberos 票据的 RHEL 身份管理(IdM)单点登录能力。
37.1. 将 IdM 连接到外部 IdP 的好处
- 要点:您可以将 Kerberos 票据颁发委托给外部身份提供程序(IdP),以便来自云服务等外部来源的用户能够访问身份管理(IdM)环境中的 RHEL 系统。
- 要点:您可以使用此功能扩展 IdM 的功能,并允许存储在外部身份提供者(IdP) 中的用户访问由 IdM 管理的 Linux 系统。
37.2. IdM 如何通过外部 IdP 融合登录
- 要点:SSSD 2.7.0 包含 sssd-idp 软件包,该软件包可实施 idp Kerberos pre-authentication 方法。这个验证方法遵循 OAuth 2.0 设备授权流,将授权决策委托给外部 IdP:
- 要点:用户在浏览器中打开网站链接,可以在另一个主机上、移动电话等:
- 列表:IdM 客户端用户启动 OAuth 2.0 设备授权流,例如,通过在命令行中使用 kinit 实用程序检索 Kerberos TGT。
- 列表:一个特殊的代码和网站链接从授权服务器发送到 IdM KDC 后端。
- 列表:IdM 客户端显示用户的链接和代码。在本例中,IdM 客户端会在命令行上输出链接和代码。
- 列表:用户在浏览器中打开网站链接,可以在另一个主机上、移动电话等: 用户输入特殊代码。 如有必要,用户登录到基于 OAuth 2.0 的 IdP。 系统将提示用户授权客户端访问信息。
- 列表:用户输入特殊代码。
- 列表:如有必要,用户登录到基于 OAuth 2.0 的 IdP。
37.3. 使用 Ansible 创建到外部身份提供者的引用
- 要点:使用 Ansible 在身份管理(IdM)中配置外部身份提供程序(IdP)参考,以启用 OAuth 2.0 身份验证委托。
- 要点:在以下示例中,您可以使用 idp ansible-freeipa 模块配置对 github 外部 IdP 的引用。
- 列表:您已将 IdM 作为 OAuth 应用程序注册到外部 IdP,并在设备上生成了 IdM 用户将用来向 IdM 进行身份验证的客户端 ID 和客户端 secret 。示例假定: my_github_account_name 是 github 用户,其帐户将被 IdM 用户用于向 IdM 进行身份验证。 客户端 ID 为 2efe1acffe9e8ab869f4。 客户端 secret 为 656a5228abc5f9545c85fa626aecbf69312d398c。
- 列表:my_github_account_name 是 github 用户,其帐户将被 IdM 用户用于向 IdM 进行身份验证。
- 列表:客户端 ID 为 2efe1acffe9e8ab869f4。
- 列表:客户端 secret 为 656a5228abc5f9545c85fa626aecbf69312d398c。
- 列表:您的 IdM 服务器使用 SSSD 2.7.0 或更高版本。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
--- - name: Configure external IdP hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure a reference to github external provider is available freeipa.ansible_freeipa.ipaidp: ipaadmin_password: "{{ ipaadmin_password }}" name: github_idp provider: github client_ID: 2efe1acffe9e8ab869f4 secret: 656a5228abc5f9545c85fa626aecbf69312d398c idp_user_id: my_github_account_name
$ ansible-playbook --vault-password-file=password_file -v -i inventory configure-external-idp-reference.yml37.4. 使用 Ansible ,以使 IdM 用户能够通过外部 IdP 进行身份验证
- 要点:使用 Ansible 将外部身份提供程序引用与身份管理(IdM)用户关联,从而使它们能够通过 OAuth 2.0 进行身份验证。
- 要点:在以下示例中,您可以使用 Ansible 将名为 github_idp 的外部 IdP 参考与名为 idm-user-with-external-idp 的 IdM 用户相关联。因此,用户可以使用 my_github_account_name github 身份作为 idm-user-with-external-idp 进行身份验证。
- 列表:您的 IdM 客户端和服务器使用 SSSD 2.7.0 或更高版本。
- 列表:您已在 IdM 中创建了到外部 IdP 的引用。请参阅 使用 Ansible 创建到外部身份提供者的引用。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您使用 Ansible 版本 2.15 或更高版本。
- 列表:您已安装了 ansible-freeipa 软件包。
- 列表:示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
--- - name: Ensure an IdM user uses an external IdP to authenticate to IdM hosts: ipaserver become: false gather_facts: false tasks: - name: Retrieve Github user ID ansible.builtin.uri: url: "https://api.github.com/users/my_github_account_name" method: GET headers: Accept: "application/vnd.github.v3+json" register: user_data - name: Ensure IdM user exists with an external IdP authentication freeipa.ansible_freeipa.ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: idm-user-with-external-idp first: Example last: User userauthtype: idp idp: github_idp idp_user_id: my_github_account_name
$ ansible-playbook --vault-password-file=password_file -v -i inventory enable-user-to-authenticate-via-external-idp.yml37.5. 以外部 IdP 用户身份检索 IdM 票据授予票据
- 要点:如果您已将身份管理(IdM)用户的身份验证委派给外部身份提供者(IdP),则 IdM 用户可以通过认证到外部 IdP 来请求 Kerberos 票据授予票据(TGT)。
- 要点:完成此流程,来:
- 列表:在本地检索和存储匿名 Kerberos 票据。
- 列表:使用kinit 和 -T 选项为 idm-user-with-external-idp 用户请求 TGT,以通过 Secure Tunneling (FAST)渠道启用灵活的身份验证,来在 Kerberos 客户端和 Kerberos 分发中心(KDC)之间提供安全连接。
- 列表:您已在 IdM 中创建了到外部 IdP 的引用。请参阅 使用 Ansible 创建到外部身份提供者的引用。
- 列表:您已与用户帐户关联了一个外部 IdP 参考。请参阅 使用 Ansible 使 IdM 用户能够通过外部 IdP 进行身份验证。
- 列表:您最初以其身份登录的用户对本地文件系统上的目录有写权限。
- 列表:使用 Anonymous PKINIT 获取 Kerberos 票据,并将其存储在名为 ./fast.ccache 的文件中。 $ kinit -n -c ./fast.ccache
- 命令/配置摘录:
$ kinit -n -c ./fast.ccache
$ klist -c fast.ccache Ticket cache: FILE:fast.ccache Default principal: WELLKNOWN/ANONYMOUS@WELLKNOWN:ANONYMOUS Valid starting Expires Service principal 03/03/2024 13:36:37 03/04/2024 13:14:28 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM37.6. 以外部 IdP 用户身份通过 SSH 登录到 IdM 客户端
- 要点:要通过使用 SSH 作为外部身份提供程序(IdP)用户登录到 IdM 客户端,请在命令行中开始登录过程。出现提示时,在与 IdP 关联的网站上进行身份验证,并在身份管理(IdM)客户端上完成该过程。
- 要点:先决条件
- 列表:您已在 IdM 中创建了到外部 IdP 的引用。请参阅 使用 Ansible 创建到外部身份提供者的引用。
- 列表:您已与用户帐户关联了一个外部 IdP 参考。请参阅 使用 Ansible 使 IdM 用户能够通过外部 IdP 进行身份验证。
- 列表:尝试通过 SSH 登录到 IdM 客户端。 [user@client ~]$ ssh idm-user-with-external-idp@client.idm.example.com (idm-user-with-external-idp@client.idm.example.com) Authenticate at https://oauth2.idp.com:8443/auth/realms/main/device?user_code=XYFL-ROYR and press ENTER.
- 列表:在浏览器中,以命令输出中提供的网站的用户身份进行身份验证。
- 列表:在命令行中,按 Enter 键来完成身份验证过程。
- 列表:显示您的 Kerberos ticket 信息,并确认对于带有外部 IdP 的预身份验证的行 config: pa_type 显示 152。 [idm-user-with-external-idp@client ~]$ klist -C Ticket cache: KCM:0:58420 Default principal: idm-user-with-external-idp@IDM.EXAMPLE.COM Valid starting Expires Service principal 05/09/22 07:48:23 05/10/22 07:03:07 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.…
- 命令/配置摘录:
[user@client ~]$ ssh idm-user-with-external-idp@client.idm.example.com (idm-user-with-external-idp@client.idm.example.com) Authenticate at https://oauth2.idp.com:8443/auth/realms/main/device?user_code=XYFL-ROYR and press ENTER.
[idm-user-with-external-idp@client ~]$ klist -C Ticket cache: KCM:0:58420 Default principal: idm-user-with-external-idp@IDM.EXAMPLE.COM Valid starting Expires Service principal 05/09/22 07:48:23 05/10/22 07:03:07 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: fast_avail(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = yes 08/17/2022 20:22:45 08/18/2022 20:22:43 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: pa_type(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = 15237.7. ipaidp Ansible 模块中的 provider 选项
- 要点:检查 ipaidp Ansible 模块支持的外部身份提供程序(IdP)及其配置模板。
- 要点:以下 IdP 支持 OAuth 2.0 设备授权流:
- 列表:Microsoft Identity Platform, Microsoft Entra ID
- 列表:Google
- 列表:GitHub
- 列表:Keycloak,包括 Red Hat Single Sign-On (SSO)
- 列表:Okta
- 列表:预填充的 IdP 模板
- 命令/配置摘录:
--- - name: Playbook to manage IPA idp hosts: ipaserver become: false tasks: - name: Ensure keycloak idp my-keycloak-idp is present using provider freeipa.ansible_freeipa.ipaidp: ipaadmin_password: "{{ ipaadmin_password }}" name: my-keycloak-idp provider: keycloak organization: main base_url: keycloak.domain.com:8443/auth client_id: my-keycloak-client-id
--- - name: Playbook to manage IPA idp hosts: ipaserver become: false tasks: - name: Ensure okta idp my-okta-idp is present using provider freeipa.ansible_freeipa.ipaidp: ipaadmin_password: "{{ ipaadmin_password }}" name: my-okta-idp provider: okta base_url: dev-12345.okta.com client_id: my-okta-client-id- 表格样本(共 8 行):
- 选项 | value
- auth_uri: URI | https://login.microsoftonline.com/${ipaidporg}/oauth2/v2.0/authorize
- dev_auth_uri: URI | https://login.microsoftonline.com/${ipaidporg}/oauth2/v2.0/devicecode
- token_uri: URI | https://login.microsoftonline.com/${ipaidporg}/oauth2/v2.0/token
第 38 章 在 IdM 中使用受限委托
- 要点:使用 Ansible 配置受限委托,以便一个服务代表您访问其他服务。您只为一个服务授予了有限权限,而不是提供了对所有凭证的完全访问权限。
38.1. 身份管理中的受限委托
- 要点:了解受限委托如何允许服务代表具有有限的授权的用户,而无需完整的凭证委托。
- 要点:用户到代理 (S4U2proxy) 扩展的服务为代表用户的另一服务获取服务票据。此功能称为受限委托。第二个服务通常是在用户的授权上下文下代表第一个服务执行某些工作的代理。使用受限委托无需用户委派其完整票据授予票 (TGT)。
- 列表:在运行 web 控制台服务的 RHEL 主机上以超级用户权限运行命令,而无需再次进行身份验证。
- 列表:使用 SSH 访问远程主机并访问主机上的服务,而无需再次进行身份验证。
- 列表:S4U2proxy
- 列表:服务受限委托
38.2. 使用 Ansible 为 web 控制台中的 SSH 登录配置智能卡验证
- 要点:登录到 web 控制台后,您可以使用 SSH 协议连接到远程机器。您可以使用 servicedelegation* Ansible 模块为受限委托功能配置 Web 控制台,以允许 SSH 连接而无需额外身份验证。
- 要点:在本例中,Web 控制台会话在 myhost.idm.example.com 上运行。您可以将它配置为代表经过身份验证的用户使用 SSH 访问 remote.idm.example.com。
- 列表:您已在 myhost.idm.example.com 上获得了一个 IdM admin 票据授予票据(TGT)。
- 列表:您有访问 remote.idm.example.com 的 root 权限。
- 列表:运行 Web 控制台的主机是 IdM 域的一员。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您已安装 ansible-freeipa 软件包。 示例假设您在 ~/MyPlaybooks/ 目录中创建了一个带有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 将 admin 密码存储在 ipaadmin_password 变量中。 如需更多信息,请参阅 /usr/share/doc/ansible-freeipa/ playbooks/servicedelegationtarget 和 /usr/share/doc/ansible -freeipa/playbooks/servicede…
- 列表:您已安装 ansible-freeipa 软件包。
- 列表:示例假设您在 ~/MyPlaybooks/ 目录中创建了一个带有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ ansible-vault create secret.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>38.3. 使用 Ansible 配置 Web 控制台,允许用户使用智能卡进行身份验证的用户运行 sudo,而无需再次进行身份验证
- 要点:使用 Ansible 在身份管理(IdM)中配置受限委托,以便智能卡验证的 Web 控制台用户可以在不重新验证的情况下运行 sudo。
- 要点:登录到 RHEL web 控制台上的用户帐户后,作为身份管理(IdM)系统管理员,您可能需要使用超级用户权限运行命令。您可以使用 受限委托 功能在系统上运行 sudo,而无需再次进行身份验证。
- 列表:您已通过使用智能卡向 web 控制台会话进行身份验证,而获得了一个 IdM admin 票据授予票(TGT)。
- 列表:Web 控制台服务已注册到 IdM 。
- 列表:myhost.idm.example.com 主机在 IdM 中存在。
- 列表:您已 对 IdM 服务器上的域管理员启用了 admin sudo 访问权限。
- 列表:Web 控制台在用户会话中创建了一个 S4U2Proxy Kerberos ticket。要验证是否是这种情况,请以 IdM 用户身份登录 Web 控制台,打开 Terminal 页面,并输入: $ klist Ticket cache: FILE:/run/user/1894000001/cockpit-session-3692.ccache Default principal: user@IDM.EXAMPLE.COM Valid starting Expires Service principal 07/30/21 09:19:06 07/31/21 09:19:06 HTTP/myhost.idm.example.com@…
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 命令/配置摘录:
$ klist Ticket cache: FILE:/run/user/1894000001/cockpit-session-3692.ccache Default principal: user@IDM.EXAMPLE.COM Valid starting Expires Service principal 07/30/21 09:19:06 07/31/21 09:19:06 HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM 07/30/21 09:19:06 07/31/21 09:19:06 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM for client HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
$ cd ~/MyPlaybooks/38.4. 其他资源
- 列表:在 web 控制台中管理远程系统
第 39 章 提供身份管理功能的系统角色
- 要点:探索 rhel-system-roles 软件包中的 RHEL 系统角色,为证书管理和 Active Directory 集成等任务补充 ansible-freeipa。
- 要点:您可以在附加了 Red Hat Enterprise Linux Server 订阅的系统中安装以下 rhel-system-roles :
- 列表:ad_integration 角色
- 列表:certificate 系统角色
- 注意:注意 ad_integration 角色适用于在 Red Hat Enterprise Linux 环境中使用没有身份管理(IdM)的直接 AD 集成的部署。对于 IdM 环境,请使用 ansible-freeipa 角色。
完整目录
- 使用 Ansible playbook 安装、配置和维护 IdM 环境
- 第 1 章 Ansible 术语
- 第 2 章 使用 Ansible playbook 来安装身份管理服务器
- 2.1. 先决条件
- 2.2. Ansible 及其安装 IdM 的优点
- 2.2.1. 使用 Ansible 安装 IdM 的优点
- 2.3. 安装 ansible-freeipa 软件包
- 2.4. 在文件系统中的 Ansible 角色位置
- 2.5. 为带有集成 DNS 和集成 CA 作为根 CA 的部署设置参数
- 2.6. 为带有外部 DNS 和集成 CA 作为根 CA 的部署设置参数
- 2.7. 使用 Ansible playbook 将集成 CA 的 IdM 服务器部署为 root CA
- 2.8. 为带有集成 DNS 和外部 CA 作为根 CA 的部署设置参数
- 2.9. 为带有外部 DNS 和外部 CA 作为根 CA 的部署设置参数
- 2.10. 使用 Ansible playbook 将外部 CA 部署 IdM 服务器作为 root CA
- 2.11. 使用 Ansible playbook 卸载 IdM 服务器或副本
- 2.12. 如果这会导致断开连接的拓扑,请使用 Ansible playbook 卸载 IdM 服务器
- 2.13. 其他资源
- 第 3 章 使用 Ansible playbook 安装身份管理副本
- 3.1. 先决条件
- 3.2. 指定用于安装 IdM 副本的基础、服务器和客户端变量
- 3.3. 使用 Ansible playbook 指定用于安装 IdM 副本的凭证
- 3.4. 使用 Ansible playbook 部署 IdM 副本
- 3.5. 使用 Ansible playbook 卸载 IdM 服务器或副本
- 第 4 章 使用 Ansible playbook 安装身份管理客户端
- 4.1. 先决条件
- 4.2. 为自动发现客户端安装模式设置清单文件的参数
- 4.3. 当在客户端安装过程中无法自动发现时设置清单文件的参数
- 4.4. 使用 Ansible playbook 进行 IdM 客户端注册的授权选项
- 4.5. 使用 Ansible playbook 部署 IdM 客户端
- 4.6. 在 Ansible 中使用一次性密码方法来安装 IdM 客户端
- 4.7. Ansible 安装后测试身份管理客户端
- 4.8. 使用 Ansible playbook 卸载 IdM 客户端
- 第 5 章 准备您的环境以使用 Ansible playbook 管理 IdM
- 5.1. 使用 Ansible playbook 准备控制节点和受管节点以管理 IdM
- 5.2. 为 ansible-freeipa playbook 提供所需凭证的不同方法
- 5.3. 使用 ansible-freeipa 中的清单插件创建 IdM 服务器的动态清单
- 5.4. RPM 和 RH AAH 集合之间的兼容性
- 第 6 章 使用 Ansible playbook 备份和恢复 IdM 服务器
- 6.1. 使用 Ansible 创建 IdM 服务器的备份
- 6.2. 使用 Ansible 在 Ansible 控制器上创建 IdM 服务器的备份
- 6.3. 使用 Ansible 将 IdM 服务器的备份复制到 Ansible 控制器
- 6.4. 使用 Ansible 将 IdM 服务器的备份从 Ansible 控制器复制到 IdM 服务器
- 6.5. 使用 Ansible 从 IdM 服务器中删除备份
- 6.6. 使用 Ansible 从服务器中存储的备份中恢复 IdM 服务器
- 6.7. 使用 Ansible 从 Ansible 控制器中存储的备份中恢复 IdM 服务器
- 第 7 章 使用 Ansible playbook 配置全局 IdM 设置
- 7.1. 使用 Ansible playbook 检索 IdM 配置
- 7.2. 使用 Ansible playbook 配置 IdM CA 续订服务器
- 7.3. 使用 Ansible playbook 为 IdM 用户配置默认 shell
- 7.4. 使用 Ansible 为 IdM 域配置 NetBIOS 名称
- 7.5. 使用 Ansible 确保 IdM 用户和组有 SID
- 第 8 章 使用 Ansible playbook 管理用户帐户
- 8.1. 使用 Ansible playbook 确保存在一个 IdM 用户
- 8.2. 使用 Ansible playbook 确保存在多个 IdM 用户
- 8.3. 使用 Ansible playbook 确保存在 JSON 文件中的多个 IdM 用户
- 8.4. 确保没有用户使用 Ansible playbook
- 第 9 章 使用 Ansible playbook 管理用户组
- 9.1. 使用 Ansible playbook 确保存在 IdM 组和组成员
- 9.2. 使用 Ansible 在一个任务中添加多个 IdM 组
- 9.3. 使用 Ansible 启用 AD 用户来管理 IdM
- 9.4. 使用 Ansible playbook 确保 IdM 用户组中存在成员管理器
- 9.5. 使用 Ansible playbook 确保 IdM 用户组中没有成员管理者
- 9.6. 其它资源
- 第 10 章 使用 Ansible 在 IdM 中自动化组成员资格
- 10.1. 使用 Ansible 确保 IdM 用户组的自动成员规则存在
- 10.2. 使用 Ansible 确保指定的条件在 IdM 用户组自动成员规则中存在
- 10.3. 使用 Ansible 确保条件在 IdM 用户组自动成员规则中不存在
- 10.4. 使用 Ansible 确保 IdM 用户组的自动成员规则不存在
- 10.5. 使用 Ansible 确保 IdM 主机组自动成员规则中存在条件
- 10.6. 其他资源
- 第 11 章 使用 Ansible playbook 管理 IdM 中的自助服务规则
- 11.1. 使用 Ansible 确保存在自助服务规则
- 11.2. 使用 Ansible 确保缺少自助服务规则
- 11.3. 使用 Ansible 确保自助服务规则具有特定属性
- 11.4. 使用 Ansible 确保自助服务规则没有特定属性
- 11.5. 其他资源
- 第 12 章 将权限委托到用户组,以使用 Ansible playbook 管理用户
- 12.1. 使用 Ansible 确保存在委托规则
- 12.2. 使用 Ansible 确保没有委托规则
- 12.3. 使用 Ansible 确保委托规则具有特定属性
- 12.4. 使用 Ansible 确保委托规则没有特定的属性
- 12.5. 其他资源
- 第 13 章 在 IdM 中使用 Ansible playbook 管理基于角色的访问控制
- 13.1. IdM 中的权限
- 13.2. 默认管理的权限
- 13.3. IdM 中的特权
- 13.4. IdM 中的角色
- 13.5. Identity Management 中的预定义角色
- 13.6. 使用 Ansible 确保存在带有特权的 IdM RBAC 角色
- 13.7. 使用 Ansible 确保缺少 IdM RBAC 角色
- 13.8. 使用 Ansible 确保为一组用户分配 IdM RBAC 角色
- 13.9. 使用 Ansible 确保没有将特定用户分配给 IdM RBAC 角色
- 13.10. 使用 Ansible 确保服务是 IdM RBAC 角色的成员
- 13.11. 使用 Ansible 确保主机是 IdM RBAC 角色的成员
- 13.12. 使用 Ansible 确保主机组是 IdM RBAC 角色的成员
- 13.13. 其他资源
- 第 14 章 使用 Ansible playbook 管理 RBAC 特权
- 14.1. 先决条件
- 14.2. 使用 Ansible 确保存在自定义 IdM RBAC 特权
- 14.3. 使用 Ansible 确保自定义 IdM RBAC 特权中存在成员权限
- 14.4. 使用 Ansible 确保 IdM RBAC 特权不包括权限
- 14.5. 使用 Ansible 重命名自定义 IdM RBAC 特权
- 14.6. 使用 Ansible 确保缺少 IdM RBAC 特权
- 14.7. 其他资源
- 第 15 章 使用 Ansible playbook 在 IdM 中管理 RBAC 权限
- 15.1. 先决条件
- 15.2. 使用 Ansible 确保存在 RBAC 权限
- 15.3. 使用 Ansible 确保存在带有属性的 RBAC 权限
- 15.4. 使用 Ansible 确保缺少 RBAC 权限
- 15.5. 使用 Ansible 确保属性是 IdM RBAC 权限的成员
- 15.6. 使用 Ansible 确保属性不是 IdM RBAC 权限的成员
- 15.7. 使用 Ansible 重命名 IdM RBAC 权限
- 15.8. 其他资源
- 第 16 章 使用 Ansible 管理 IdM 中的复制拓扑
- 16.1. 使用 Ansible 确保 IdM 中存在复制协议
- 16.2. 使用 Ansible 确保多个 IdM 副本之间存在复制协议
- 16.3. 使用 Ansible 检查两个副本之间是否存在复制协议
- 16.4. 使用 Ansible 验证 IdM 中是否存在拓扑后缀
- 16.5. 使用 Ansible 重新初始化 IdM 副本
- 16.6. 使用 Ansible 确保 IdM 中没有复制协议
- 16.7. 其他资源
- 第 17 章 使用 Ansible 管理 IdM 服务器
- 17.1. 使用 Ansible 检查 IdM 服务器是否存在
- 17.2. 使用 Ansible 确保 IdM 拓扑中没有 IdM 服务器
- 17.3. 确保尽管拥有最后一个 IdM 服务器角色,也不存在 IdM 服务器
- 17.4. 确保 IdM 服务器不存在,但不一定与其他 IdM 服务器断开连接
- 17.5. 使用 Ansible playbook 确保现有的 IdM 服务器被隐藏
- 17.6. 使用 Ansible playbook 确保现有的 IdM 服务器可见
- 17.7. 确保现有的 IdM 服务器被分配了 IdM DNS 位置
- 17.8. 确保现有的 IdM 服务器没有分配 IdM DNS 位置
- 第 18 章 使用 Ansible playbook 管理主机
- 18.1. 使用 Ansible playbook 确保存在带有 FQDN 的 IdM 主机条目
- 18.2. 使用 Ansible playbook 确保存在含有 DNS 信息的 IdM 主机条目
- 18.3. 使用 Ansible playbook 确保存在带有随机密码的多个 IdM 主机条目
- 18.4. 使用 Ansible playbook 确保存在具有多个 IP 地址的 IdM 主机条目
- 18.5. 使用 Ansible playbook 确保没有 IdM 主机条目
- 18.6. 其他资源
- 第 19 章 使用 Ansible playbook 管理主机组
- 19.1. IdM 中的主机组
- 19.2. 使用 Ansible playbook 确保存在 IdM 主机组
- 19.3. 确保使用 Ansible playbook 在 IdM 主机组中存在主机
- 19.4. 使用 Ansible playbook 嵌套 IdM 主机组
- 19.5. 使用 Ansible playbook 确保 IdM 主机组中存在成员管理器
- 19.6. 使用 Ansible playbook 确保 IdM 主机组中没有主机
- 19.7. 使用 Ansible playbook 确保 IdM 主机组没有嵌套的主机组
- 19.8. 使用 Ansible playbook 确保没有 IdM 主机组
- 19.9. 使用 Ansible playbook 确保 IdM 主机组中没有成员管理器
- 第 20 章 使用 Ansible playbook 定义 IdM 密码策略
- 20.1. IdM 中的密码策略
- 20.2. IdM 中的密码策略优先级
- 20.3. 使用 Ansible playbook 在 IdM 中存在密码策略
- 20.4. 使用 Ansible playbook 将额外的密码策略选项应用到 IdM 组
- 第 21 章 使用 Ansible 在 IdM 中配置系统帐户以更改用户密码,而无需重置
- 21.1. 身份管理中的系统帐户
- 21.2. 使用 ipa_pwd_extop 插件和 SysAcctManagersDNs 列表在 IdM 中进行密码同步
- 21.3. 使用 Ansible 在 IdM 中配置系统帐户以更改用户密码
- 21.4. 其他资源
- 第 22 章 使用 Ansible playbook 管理 sudo 访问权限
- 22.1. 使用 Ansible playbook 确保 IdM 客户端上的 IdM 用户具有 sudo 访问权限
- 22.2. 在单个 Ansible 任务中管理多个 IdM sudo 规则
- 22.3. 其他资源
- 第 23 章 确保使用 Ansible playbook 的基于主机的访问控制规则在 IdM 中存在
- 23.1. IdM 中基于主机的访问控制规则
- 23.2. 使用 Ansible playbook 确保在 IdM 中存在 HBAC 规则
- 第 24 章 使用 Ansible 管理 IdM 证书
- 24.1. 使用 Ansible 为 IdM 主机、服务和用户请求 SSL 证书
- 24.2. 使用 Ansible 为 IdM 主机、服务和用户撤销 SSL 证书
- 24.3. 使用 Ansible 为 IdM 用户、主机和服务恢复 SSL 证书
- 24.4. 使用 Ansible 为 IdM 用户、主机和服务检索 SSL 证书
- 24.5. 其他资源
- 第 25 章 IdM 中的 vault
- 25.1. vaults 及其优势
- 25.2. Vault 所有者、成员和管理员
- 25.3. 标准、对称和非对称密码库
- 25.4. 用户、服务和共享密码库
- 25.5. Vault 容器
- 25.6. 基本 IdM vault 命令
- 25.7. 在 IdM 中安装密钥恢复授权
- 第 26 章 使用 Ansible 管理 IdM 用户库:存储和检索 secret
- 26.1. 先决条件
- 26.2. 使用 Ansible 在 IdM 中存在标准用户库
- 26.3. 使用 Ansible 将 secret 归档到 IdM 中的标准用户库中
- 26.4. 使用 Ansible 从 IdM 中的标准用户库检索 secret
- 第 27 章 使用 Ansible 管理 IdM 服务库:存储和检索 secret
- 27.1. 先决条件
- 27.2. 使用 Ansible 在 IdM 中存在非对称服务库
- 27.3. 使用 Ansible 将成员服务添加到非对称库
- 27.4. 使用 Ansible 将 IdM 服务 secret 存储在非对称库中
- 27.5. 使用 Ansible 为 IdM 服务检索服务 secret
- 27.6. 在使用 Ansible 泄露时更改 IdM 服务 vault secret
- 27.7. 其他资源
- 第 28 章 使用 Ansible 在 IdM 中确保存在或不存在服务
- 28.1. 使用 Ansible playbook 在 IdM 中存在 HTTP 服务
- 28.2. 使用一个 Ansible 任务确保在 IdM 客户端上的 IdM 中存在多个服务
- 28.3. 使用 Ansible playbook,确保在 IdM 中存在于非IdM 客户端中的 HTTP 服务
- 28.4. 使用 Ansible playbook 确保在没有 DNS 的 IdM 客户端上存在 HTTP 服务
- 28.5. 使用 Ansible playbook 确保 IdM 服务条目中存在外部签名的证书
- 28.6. 使用 Ansible playbook 来允许 IdM 用户、组、主机或主机组创建服务的 keytab
- 28.7. 使用 Ansible playbook 来允许 IdM 用户、组、主机或主机组检索服务的 keytab
- 28.8. 使用 Ansible playbook 确保存在服务的 Kerberos 主体别名
- 28.9. 使用 Ansible playbook 确保 IdM 中缺少 HTTP 服务
- 第 29 章 使用 Ansible playbook 在 IdM 中管理全局 DNS 配置
- 29.1. 先决条件
- 29.2. IdM 如何确保 NetworkManager 不会删除 /etc/resolv.conf 中的全局转发器
- 29.3. 使用 Ansible 确保 IdM 中存在 DNS 全局转发器
- 29.4. 使用 Ansible 确保 IdM 中没有 DNS 全局转发器
- 29.5. ipadnsconfig ansible-freeipa 模块中的 action: member 选项
- 29.6. IdM 中的 DNS 转发策略
- 29.7. 使用 Ansible playbook 确保 IdM DNS 全局配置中设置了 forward first 策略
- 29.8. 使用 Ansible playbook 确保 IdM DNS 中禁用了全局转发器
- 29.9. 使用 Ansible playbook 确保 IdM DNS 中禁用了正向和反向查找区域的同步
- 第 30 章 使用 Ansible playbook 管理 IdM DNS 区域
- 30.1. 先决条件
- 30.2. 支持的 DNS 区类型
- 30.3. 使用 Ansible 时主 IdM DNS 区域的配置属性
- 30.4. 使用 Ansible 在 IdM DNS 中创建主区域
- 30.5. 使用 Ansible playbook 确保 IdM 中存在一个带有多个变量的主 DNS 区域
- 30.6. 在给定 IP 地址时,使用 Ansible playbook 确保存在用于反向 DNS 查找的区域
- 30.7. 其他资源
- 第 31 章 使用 Ansible 管理 IdM 中的 DNS 位置
- 31.1. 基于 DNS 的服务发现
- 31.2. DNS 位置部署的注意事项
- 31.3. DNS 生存时间(TTL)
- 31.4. 使用 Ansible 确保存在 IdM 位置
- 31.5. 使用 Ansible 确保缺少 IdM 位置
- 31.6. 其他资源
- 第 32 章 在 IdM 中管理 DNS 转发
- 32.1. IdM DNS 服务器的两个角色
- 32.2. 在 IdM Web UI 中添加全局转发器
- 32.3. 在 CLI 中添加全局转发器
- 32.4. 在 IdM Web UI 中添加 DNS 转发区域
- 32.5. 在 CLI 中添加 DNS 转发区域
- 32.6. 使用 Ansible 在 IdM 中建立 DNS 全局转发器
- 32.7. 使用 Ansible 确保 DNS 全局转发器在 IdM 中被禁用
- 32.8. 使用 Ansible 确保 IdM 中存在 DNS 转发区域
- 32.9. 使用 Ansible 确保 DNS 转发区域 在 IdM 中有多个转发器
- 32.10. 使用 Ansible 确保 IdM 中禁用了 DNS 转发区
- 32.11. 使用 Ansible 确保 IdM 中没有 DNS 转发区域
- 第 33 章 使用 Ansible 管理 IdM 中的 DNS 记录
- 33.1. IdM 中的 DNS 记录
- 33.2. Common ipa dnsrecord-* 选项
- 33.3. 确保使用 Ansible 在 IdM 中存在 A 和 AAAA DNS 记录
- 33.4. 确保使用 Ansible 在 IdM 中存在 A 和 PTR DNS 记录
- 33.5. 确保使用 Ansible 在 IdM 中存在多个 DNS 记录
- 33.6. 确保使用 Ansible 在 IdM 中存在多个 CNAME 记录
- 33.7. 使用 Ansible 在 IdM 中存在 SRV 记录
- 第 34 章 使用 Ansible 为 IdM 用户自动挂载 NFS 共享
- 34.1. IdM 中的 autofs 和自动挂载
- 34.2. 在身份管理域中使用 Kerberos 设置 NFS 服务器
- 34.3. 使用 Ansible 在 IdM 中配置自动挂载位置、映射和密钥
- 34.4. 使用 Ansible 将 IdM 用户添加到拥有 NFS 共享的组中
- 34.5. 在 IdM 客户端上配置自动挂载
- 34.6. 验证 IdM 用户能否访问 IdM 客户端上的 NFS 共享
- 第 35 章 使用 Ansible 将 IdM 与 NIS 域和网络组集成
- 35.1. NIS 及其优点
- 35.2. IdM 中的 NIS
- 35.3. IdM 中的 NIS netgroups
- 35.4. 使用 Ansible 确保 netgroup 存在
- 35.5. 使用 Ansible 确保成员在 netgroup 中存在
- 35.6. 使用 Ansible 确保一个成员在 netgroup 中不存在
- 35.7. 使用 Ansible 确保 netgroup 不存在
- 第 36 章 使用 Ansible 在 IdM 中配置 HBAC 和 sudo 规则
- 第 37 章 使用 Ansible 将 IdM 用户的身份验证委派给外部身份提供者
- 37.1. 将 IdM 连接到外部 IdP 的好处
- 37.2. IdM 如何通过外部 IdP 融合登录
- 37.3. 使用 Ansible 创建到外部身份提供者的引用
- 37.4. 使用 Ansible ,以使 IdM 用户能够通过外部 IdP 进行身份验证
- 37.5. 以外部 IdP 用户身份检索 IdM 票据授予票据
- 37.6. 以外部 IdP 用户身份通过 SSH 登录到 IdM 客户端
- 37.7. ipaidp Ansible 模块中的 provider 选项
- 第 38 章 在 IdM 中使用受限委托
- 38.1. 身份管理中的受限委托
- 38.2. 使用 Ansible 为 web 控制台中的 SSH 登录配置智能卡验证
- 38.3. 使用 Ansible 配置 Web 控制台,允许用户使用智能卡进行身份验证的用户运行 sudo,而无需再次进行身份验证
- 38.4. 其他资源
- 第 39 章 提供身份管理功能的系统角色
