管理 IdM 用户、组、主机和访问控制规则
大约 341 分钟
管理 IdM 用户、组、主机和访问控制规则
来源:官方文档 原始多页入口:管理 IdM 用户、组、主机和访问控制规则 内容规模:约 327,219 字符,401 个章节标题,713 个命令/代码块,156 条提示框
阅读提要
- 副标题:配置用户和主机,在组中管理它们,并使用基于主机和基于角色的访问控制规则控制访问
- 摘要:红帽身份管理(IdM)的主要功能是管理用户、组、主机和访问控制规则,如基于主机和基于角色的访问控制(RBAC)。您可以使用命令行、IdM Web UI 和 Ansible Playbook 配置它们。 管理任务包括配置 Kerberos 策略和安全性、自动化组成员资格和委托权限。
- 主要章节:配置用户和主机,在组中管理它们,并使用基于主机和基于角色的访问控制规则控制访问;对红帽文档提供反馈;第 1 章 使用命令行管理用户帐户;第 2 章 使用 IdM Web UI 管理用户帐户;第 3 章 使用 Ansible playbook 管理用户帐户;第 4 章 修改 IdM 中的用户和组属性;第 5 章 在 IdM 中管理用户密码;第 6 章 定义 IdM 密码策略;第 7 章 管理过期密码通知;第 8 章 为 IdM 客户端上的 IdM 用户授予 sudo 访问权限;第 9 章 使用 ldapmodify 在外部管理 IdM 用户;第 10 章 使用 ldapsearch 命令搜索 IdM 条目
- 推荐阅读顺序:先看“阅读提要”和目录,再按章节查看“关键点/命令/注意”;需要原文细节时点击来源链接。
章节笔记
概览
- 该章节主要为下一级主题的入口。
配置用户和主机,在组中管理它们,并使用基于主机和基于角色的访问控制规则控制访问
- 要点:摘要
对红帽文档提供反馈
- 要点:我们感谢您对我们文档的反馈。让我们了解如何改进它。
- 要点:通过 Jira 提交反馈(需要帐户)
- 列表:登录到 Jira 网站。
- 列表:在顶部导航栏中点 Create
- 列表:在 Summary 字段中输入描述性标题。
- 列表:在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 列表:点对话框底部的 Create。
第 1 章 使用命令行管理用户帐户
- 要点:IdM (身份管理)的用户生命周期中有几个阶段,包括如下:
- 列表:创建用户帐户
- 列表:激活 stage 用户帐户
- 列表:保留用户帐户
- 列表:删除 active、stage 或 preserved 用户帐户
- 列表:恢复 preserved 用户帐户
1.1. 用户生命周期
- 要点:身份管理(IdM)支持三个用户帐户状态:
- 要点:您可以从 IdM 数据库永久删除用户条目。
- 列表:Stage(预发布) 用户不允许进行身份验证。这是初始状态。活动用户所需的一些用户帐户属性无法在这里设置,例如组成员资格。
- 列表:Active(活跃)用户被允许进行身份验证。所有必需的用户帐户属性都需要在这个阶段设置。
- 列表:Preserved(保留)用户是以前活跃的用户,但现在被视为不活跃且无法通过 IdM 进行身份验证。保留用户保留他们作为活跃用户的大多数帐户属性,但它们不属于任何用户组。
- 注意:重要 删除的用户帐户无法恢复。当您删除用户帐户时,与帐户相关的所有信息都将永久丢失。
- 注意:警告 不要删除 admin 用户。由于 admin 是 IdM 所需的预定义用户,因此此操作会导致某些命令出现问题。如果要定义和使用另外的 admin 用户,请先至少为一个其他用户授予 admin 权限,然后再使用 ipa user-disable admin 命令来禁用预定义的 admin 用户。
1.2. 使用命令行添加用户
- 要点:您可以将用户添加为:
- 要点:以下流程描述了使用 ipa user-add 命令将活跃用户添加到 IdM 服务器中。
- 列表:Active - 可以被他们的用户主动使用的用户账户。
- 列表:stage - 无法使用这些帐户。如果要准备新用户帐户,请创建 stage 用户。当用户准备好使用其帐户时,您可以激活他们。
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:获得 Kerberos ticket。详情请参阅链接:使用 kinit 手动登录到 IdM。
- 列表:打开终端并连接到 IdM 服务器。
- 列表:添加用户登录、用户名、姓氏以及可选,您也可以添加其电子邮件地址。 $ ipa user-add user_login --first=first_name --last=last_name --email=email_address IdM 支持可通过以下正则表达式描述的用户名: [a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]? 注意 支持以末尾的美元符号($)结尾的用户名,以启用 Samba 3.x 机器支持。 如果您添加了包含大写字符的用户名,IdM 会在保存名称时自动将其转换为小写。因此,IdM 总是需要在登录时以小写形式输入用户名。此外,不能添加仅在字母大小写上不同的用户…
- 命令/配置摘录:
$ ipa user-add user_login --first=first_name --last=last_name --email=email_address
[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?- 注意:警告 IdM 自动为新用户帐户分配一个唯一的用户 ID (UID)。您可以通过使用 ipa user-add 命令和 --uid=INT 选项来手动分配 UID ,但服务器不会验证 UID 号是否是唯一的。因此,多个用户条目可能有相同的 UID 号。如果您使用 --gidnumber=INT 选项手动将 GID 分配给用户帐户,则用户私有组群 ID (GID)可能会出现类似的问题。要检查是否有多个用户条目具有相同的 ID ,请输入 ipa user-find --uid=<uid> 或 ipa user-find --gidnumber=<gidnumber>。 红帽建议您不要有具有相同 UID 或 GID 的多个条目。如果您有具有重复 ID 的对象,则安全标识符(SID)不会被正确生成。SID 对于 IdM 和活动目录之间的信任以及使 Kerberos 身份验证正常工作至关重要。
- 注意:注意 支持以末尾的美元符号($)结尾的用户名,以启用 Samba 3.x 机器支持。
1.3. 使用命令行激活用户
- 要点:要通过将用户帐户从 stage 移到 active 来激活它,,请使用 ipa stageuser-activate 命令。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:获得 Kerberos ticket。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:打开终端并连接到 IdM 服务器。
- 列表:使用以下命令激活用户帐户: $ ipa stageuser-activate user_login ------------------------- Stage user user_login activated ------------------------- ...
- 列表:列出所有 IdM 用户帐户: $ ipa user-find
- 命令/配置摘录:
$ ipa stageuser-activate user_login ------------------------- Stage user user_login activated ------------------------- ...
$ ipa user-find1.4. 使用命令行保留用户
- 要点:如果要删除用户帐户,您可以保留该帐户,保留这个选项以便以后恢复。要保留用户帐户,请使用 ipa user-del 或 ipa stageuser-del 命令的 --preserve 选项。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:获得 Kerberos ticket。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:打开终端并连接到 IdM 服务器。
- 列表:使用以下命令保留用户帐户: $ ipa user-del --preserve user_login -------------------- Deleted user "user_login" -------------------- 注意 尽管输出说用户帐户已删除,但实际上是被保留了。
- 命令/配置摘录:
$ ipa user-del --preserve user_login -------------------- Deleted user "user_login" --------------------- 注意:注意 尽管输出说用户帐户已删除,但实际上是被保留了。
1.5. 使用命令行删除用户
- 要点:IdM(身份管理)可让您永久删除用户。您可以删除:
- 要点:删除多个用户时,请使用 --continue 选项强制命令继续,而不论出现什么错误。命令完成后,会将成功和失败的操作摘要输出到 stdout 标准输出流。
- 列表:活动用户,使用以下命令:ipa user-del
- 列表:Stage 用户,使用以下命令:ipa stageuser-del
- 列表:Preserved 用户,使用以下命令:ipa user-del
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:获得 Kerberos ticket。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:打开终端并连接到 IdM 服务器。
- 命令/配置摘录:
$ *ipa user-del --continue user1 user2 user3*
$ ipa user-del user_login -------------------- Deleted user "user_login" --------------------1.6. 使用命令行恢复用户
- 要点:您可以将 preserved 用户恢复成:
- 要点:恢复用户帐户不会恢复帐户之前的所有属性。例如,用户的密码不会被恢复,必须再次设置。
- 列表:Active 用户:ipa user-undel
- 列表:Stage 用户:ipa user-stage
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:获得 Kerberos ticket。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:打开终端并连接到 IdM 服务器。
- 列表:使用以下命令激活用户帐户: $ ipa user-undel user_login ------------------------------ Undeleted user account "user_login" ------------------------------ 或者,您可以将用户帐户恢复为暂存的用户帐户: $ ipa user-stage user_login ------------------------------ Staged user account "user_login" ------------------------------
- 命令/配置摘录:
$ ipa user-undel user_login ------------------------------ Undeleted user account "user_login" ------------------------------
$ ipa user-stage user_login ------------------------------ Staged user account "user_login" ------------------------------1.7. 其他资源
- 列表:IdM 命令行工具简介
第 2 章 使用 IdM Web UI 管理用户帐户
- 要点:身份管理(IdM) 提供了几个阶段,可帮助您管理各种用户生命周期情况:
- 要点:在员工在公司开始职业生涯之前 创建 stage 用户帐户,并提前在员工出现在办公室并想要激活客户的那天前做好准备。
2.1. 用户生命周期
- 要点:身份管理(IdM)支持三个用户帐户状态: Stage、Active、Preserved。详情请参阅 用户生命周期 部分。
2.2. 在 Web UI 中添加用户
- 要点:通常,您需要在新员工开始工作前创建新的用户帐户。这样的 stage 帐户无法访问,您需要之后将其激活。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:登录到 IdM Web UI。 详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:进到 Users → Stage Users 选项卡。 另外,您可以在 Users → Active users 中添加用户帐户,但是您无法将用户组添加到帐户中。
- 列表:单击 + Add 图标。
- 列表:可选:在 User login 字段中,添加一个登录名称。 如果您将其留空,IdM 服务器将以以下形式创建登录名称:名字的第一个字母和姓氏。整个登录名最多可有 32 个字符。
- 列表:输入新用户的 名字和姓氏。
- 注意:警告 IdM 自动为新用户帐户分配一个唯一的用户 ID (UID)。您可以手动分配 UID,甚至修改现有的 UID。但是,服务器不会验证新的 UID 号是否是唯一的。因此,多个用户条目可能被分配了相同的 UID 号。如果您手动为用户帐户分配 GID,则用户专用组 ID (GID)可能会出现类似的问题。您可以在 IdM CLI 上使用 ipa user-find --uid=<uid> 或 ipa user-find --gidnumber=<gidnumber> 命令检查您是否有具有相同 ID 的多个用户条目。 您不应该有多个具有相同 UID 或 GID 的条目。如果您有具有重复 ID 的对象,则安全标识符(SID)不会被正确生成。SID 对于 IdM 和活动目录之间的信任以及使 Kerberos 身份验证正常工作至关重要。
2.3. 在 IdM Web UI 中 stage 用户
- 要点:在用户可以登录到 IdM 和添加到 IdM 组中之前,必须按照以下步骤激活 stage 用户帐户。
- 要点:先决条件
- 列表:管理 IdM Web UI 或用户管理员角色的管理员特权。
- 列表:IdM 中至少有一个 stage 用户帐户。
- 列表:登录到 IdM Web UI。 详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:进到 Users → Stage users 选项卡。
- 列表:点击您要激活的用户帐户的复选框。
- 列表:单击 Activate 按钮。
2.4. 在 Web UI 中禁用用户帐户
- 要点:您可以禁用活动的用户帐户。禁用用户帐户会停用该帐户,因此用户帐户无法进行身份验证,并使用 IdM 服务,如 Kerberos 或执行任何任务。
- 要点:禁用的用户帐户仍然在 IdM 中存在,所有相关信息保持不变。与保留的用户帐户不同,禁用的用户帐户保持活动状态,并且可以是用户组的成员。
- 列表:管理 IdM Web UI 或用户管理员角色的管理员特权。
- 列表:登录到 IdM Web UI。 详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:进到 Users → Active users 选项卡。
- 列表:点击您要禁用的用户帐户的复选框。
- 列表:点 Disable 按钮。
- 列表:单击 Confirmation 对话框中的 OK 按钮。 如果帐户被成功禁用,您可以在 Active users 表中的 Status 列中验证这一点。
- 注意:注意 禁用用户帐户后,任何现有的连接都会保持有效,直到用户的 Kerberos TGT 和其他票据过期为止。票据过期后,用户将无法续订。
2.5. 在 Web UI 中启用用户帐户
- 要点:通过 IdM,您可以启用禁用的活动用户帐户。启用用户帐户可激活禁用的帐户。
- 要点:先决条件
- 列表:管理 IdM Web UI 或用户管理员角色的管理员特权。
- 列表:登录到 IdM Web UI。
- 列表:进到 Users → Active users 选项卡。
- 列表:点击您要启用的用户帐户的复选框。
- 列表:单击 Enable 按钮。
- 列表:单击 Confirmation 对话框中的 OK 按钮。 如果更改成功,您可以在 Active Users 表中的 Status 列中验证这一点。
2.6. 在 IdM Web UI 中保留活动的用户
- 要点:保留用户帐户可让您从 Active users 选项卡中删除帐户,而将这些帐户保留在 IdM 中。
- 要点:如果员工离开了公司,请保留用户帐户。如果您要禁用用户帐户数周或数月(例如,产假),请禁用该帐户。详情请参阅 在 Web UI 中禁用用户帐户。保留的帐户不是活动的,用户无法使用它们访问内部网络,但该帐户及所有数据都保留在数据库中。
- 列表:管理 IdM(身份管理)Web UI 或用户管理员角色的管理员特权。
- 列表:登录到 IdM Web UI。 详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:进到 Users → Active users 选项卡。
- 列表:点击您要保留的用户帐户的复选框。
- 列表:点击 Delete 按钮。
- 列表:在 Remove users 对话框中,单击 preserve。
2.7. 在 IdM Web UI 中恢复用户
- 要点:IdM (身份管理)可让您将保留的用户帐户恢复到活动状态。您可以将保留的用户恢复成活跃用户或 stage 用户。
- 要点:先决条件
- 列表:管理 IdM Web UI 或用户管理员角色的管理员特权。
- 列表:登录到 IdM Web UI。 详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:进到 Users → Preserved users 选项卡。
- 列表:点击您要恢复的用户帐户的复选框。
- 列表:点 Restore 按钮。
- 列表:在 Confirmation 对话框中,单击 OK 按钮。 IdM Web UI 显示一条绿色确认信息,并将用户帐户移到 Active users 选项卡中。
2.8. 在 IdM Web UI 中删除用户
- 要点:删除用户是一种不可逆的操作,导致用户帐户被从 IdM 数据库中永久删除,包括组成员资格和密码。任何对用户的外部配置,如系统帐户和主目录,都不会被删除,但无法通过 IdM 来访问。
- 要点:您可以删除:
- 列表:Active 用户 - IdM Web UI 为您提供了选项: 临时保留用户。详情请查看 在 IdM Web UI 中保留活动用户。 永久删除用户。
- 列表:临时保留用户。详情请查看 在 IdM Web UI 中保留活动用户。
- 列表:永久删除用户。
- 列表:Stage 用户 - 您可以永久删除 stage 用户。
- 列表:Preserved 用户 - 您可以永久删除 preserved 用户。
- 列表:Stage users 选项卡
第 3 章 使用 Ansible playbook 管理用户帐户
- 要点:您可以使用 Ansible playbook 管理 IdM 中的用户。在介绍了用户生命周期后,本章将介绍如何将 Ansible playbook 用于以下操作:
- 要点:如需更多信息,您可以在 /usr/share/ansible/collections/ansible_collections/ansible_freeipa/freeipa/ansible_freeipa/ 目录和 / usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/ playbooks/user 目录中看到相关的 README-user.md 文件。
- 列表:确保存在直接列在 YML 文件中的单个用户。
- 列表:确保存在直接列在YML 文件中的多个用户。
- 列表:确保存在从 YML 文件引用的 JSON 文件中列出的多个用户。
- 列表:确保没有直接在 YML 文件中列出的用户。
3.1. 用户生命周期
- 要点:身份管理(IdM)支持三个用户帐户状态: Stage、Active、Preserved。详情请参阅 管理 IdM 用户、组、主机和访问控制规则 文档中的用户生命周期 部分。
3.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_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 不会生成新的密码。
3.3. 使用 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 重新设置密码。
3.4. 使用 Ansible playbook 确保存在 JSON 文件中的多个 IdM 用户
- 要点:以下流程描述了如何使用 Ansible playbook 确保在 IdM 中存在多个用户。用户存储在 JSON 文件中。
- 要点:先决条件
- 列表:在控制节点上: 您在使用 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" } ] }3.5. 确保没有用户使用 Ansible playbook
- 要点:以下流程描述了如何使用 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: 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第 4 章 修改 IdM 中的用户和组属性
- 要点:在身份管理(IdM)中,信息存储为 LDAP 属性。当您在 IdM 中创建用户条目时,该条目会自动分配特定的 LDAP 对象类。这些对象类定义用户条目可以使用哪些属性。有关默认用户对象类以及如何组织它们的更多信息,请参见 下表。
- 要点:作为管理员,您可以修改用户对象类列表以及属性的格式。例如,您可以指定用户名中允许多少个字符。
- 表格样本(共 5 行):
- 对象类 | 描述
- ipaobject, ipasshuser | IdM 对象类
- person, organizationalperson, inetorgperson, inetuser, posixAccount | 人员对象类
- krbprincipalaux, krbticketpolicyaux | Kerberos 对象类
4.1. 默认 IdM 用户属性
- 要点:用户条目包含属性。特定属性的值会根据默认值自动设置,除非您自己设置了特定值。对于其他属性,您必须手动设置值。某些属性(如 名字 )需要一个值,而其他属性(如 Street 地址 )不需要。作为管理员,您可以配置默认属性生成或使用的值。如需更多信息,请参阅下面的 默认 IdM 用户属性 表。
- 要点:您还可以添加 Default IdM 用户对象类 中可用的任何属性,即使该属性没有 Web UI 或命令行参数。
- 表格样本(共 34 行):
- Web UI 字段 | 命令行选项 | 必需、可选或默认
- 用户登录 | username | 必填
- 名 | --first | 必填
- 姓 | --last | 必填
4.2. 更改默认用户和组模式的注意事项
- 要点:创建用户和组帐户时,会应用一组预定义的 LDAP 对象类。虽然 标准的特定于 IdM 的 LDAP 对象类 和属性 涵盖了大多数部署场景,但您可以为用户和组条目创建自定义对象类。
- 要点:当您修改对象类时,IdM 提供了以下验证:
- 列表:所有对象类及其指定属性都必须对 LDAP 服务器知道。
- 列表:为条目配置的所有默认属性都必须被配置的对象类支持。
- 注意:注意 修改默认对象类列表后,新的用户和组条目包含自定义对象类,但任何旧条目都不会被修改。
4.3. 在 IdM Web UI 中修改用户对象类
- 要点:此流程描述了如何使用 IdM Web UI 修改将来身份管理(IdM)用户条目的对象类。因此,这些条目的属性与当前用户条目不同。
- 要点:先决条件
- 列表:您以 IdM 管理员身份登录。
- 列表:打开 IPA Server 选项卡。
- 列表:选择 Configuration 子选项卡。
- 列表:滚动到 User Options 区域。
- 列表:保留 默认 IdM 用户对象类表中列出的所有对象类。 重要 如果没有包含 IdM 所需的对象类,则后续尝试添加用户条目会失败,并显示对象类违反情况。
- 列表:在用户区域的底部,单击 Add for a new 字段。
- 注意:重要 如果没有包含 IdM 所需的对象类,则后续尝试添加用户条目会失败,并显示对象类违反情况。
4.4. 在 IdM CLI 中修改用户对象类
- 要点:此流程描述了如何使用身份管理(IdM) CLI 为将来的 IdM 用户条目修改用户对象类。因此,这些条目的属性与当前用户条目不同。
- 要点:先决条件
- 列表:您已启用了 大括号扩展 功能: # set -o braceexpand
- 列表:您以 IdM 管理员身份登录。
- 列表:使用 ipa config-mod 命令修改当前的模式。例如,要将 top 和 mailRecipient 对象类添加到未来的用户条目中: [bjensen@server ~]$ ipa config-mod --userobjectclasses={person,organizationalperson,inetorgperson,inetuser,posixaccount,krbprincipalaux,krbticketpolicyaux,ipaobject,ipasshuser,mepOriginEntry,top,mailRecipient} 命令添加 IdM 原生的所有十个用户对象类,以及两个新类 top 和 mail…
- 命令/配置摘录:
# set -o braceexpand
[bjensen@server ~]$ ipa config-mod --userobjectclasses={person,organizationalperson,inetorgperson,inetuser,posixaccount,krbprincipalaux,krbticketpolicyaux,ipaobject,ipasshuser,mepOriginEntry,top,mailRecipient}- 注意:重要 通过 config-mod 命令传递的信息会覆盖之前的值。如果没有包含 IdM 所需的用户对象类,则后续尝试添加用户条目会失败,并显示对象类违反情况。
4.5. 在 IdM Web UI 中修改组对象类
- 要点:身份管理(IdM)具有以下默认组对象类:
- 要点:此流程描述了如何使用 IdM Web UI 为将来的身份管理(IdM)用户组条目添加额外的组对象类。因此,这些条目的属性与组条目 do 的当前属性不同。
- 列表:top
- 列表:groupOfNames
- 列表:nestedgroup
- 列表:ipausergroup
- 列表:ipaobject
- 列表:您以 IdM 管理员身份登录。
- 注意:重要 如果没有包含 IdM 所需的组对象类,则后续尝试添加组条目将失败,因为对象类违反。
4.6. 在 IdM CLI 中修改组对象类
- 要点:身份管理(IdM)具有以下默认组对象类:
- 要点:此流程描述了如何使用 IdM Web UI 为将来的身份管理(IdM)用户组条目添加额外的组对象类。因此,这些条目的属性与组条目 do 的当前属性不同。
- 列表:top
- 列表:groupOfNames
- 列表:nestedgroup
- 列表:ipausergroup
- 列表:ipaobject
- 列表:您已启用了 大括号扩展 功能: # set -o braceexpand
- 命令/配置摘录:
# set -o braceexpand
[bjensen@server ~]$ ipa config-mod --groupobjectclasses={top,groupofnames,nestedgroup,ipausergroup,ipaobject,ipasshuser,employeegroup}- 注意:重要 如果没有包含 IdM 所需的组对象类,则后续尝试添加组条目将失败,因为对象类违反。
- 注意:注意 您可以重复使用上面示例中的空格,而不是大括号中用逗号分开的列表,您可以重复使用-- groupobjectclasses 参数。
4.7. IdM 中的默认用户和组群属性
- 要点:身份管理(IdM)在创建新条目时使用模板。
- 要点:用户的模板比组模板更具体。IdM 为 IdM 用户帐户使用多个核心属性的默认值。这些默认值可以定义用户帐户属性的实际值,如主目录位置,或者可以定义属性值的格式,如用户名长度。模板还定义分配给用户的对象类。
- 表格样本(共 15 行):
- Web UI 字段 | 命令行选项 | 描述
- 最大用户名长度 | --maxusername | 设置用户名的最大字符数。默认:32。
- 主目录的根目录 | --homeDirectory | 设置用户主目录的默认目录。默认: /home。
- 默认 shell | --defaultshell | 为用户设置默认 shell。默认: /bin/sh。
4.8. 在 IdM Web UI 中查看和修改用户和组群配置
- 要点:您可以在 Identity Management (IdM) Web UI 中查看和修改默认用户和组属性的配置。
- 要点:先决条件
- 列表:您已以 IdM admin 身份登录。
- 列表:打开 IPA Server 选项卡。
- 列表:选择 Configuration 子选项卡。
- 列表:User Options 部分有多个字段,您可以查看和编辑。
- 列表:例如,要将将来 IdM 用户的默认 shell 从 /bin/sh 更改为 /bin/bash,找到 Default shell 字段,并将 /bin/sh 替换为 /bin/bash。
- 列表:在 Group Options 部分中,您只能查看并编辑 Group 搜索字段字段。
4.9. 在 IdM CLI 中查看和修改用户和组群配置
- 要点:您可以在 Identity Management (IdM) CLI 中查看和修改当前或默认用户和组属性的配置。
- 要点:先决条件
- 列表:您有 IdM admin 凭证。
- 列表:ipa config-show 命令显示最常见的属性设置。将-- all 选项用于 完整的列表: [bjensen@server ~]$ ipa config-show --all dn: cn=ipaConfig,cn=etc,dc=example,dc=com Maximum username length: 32 Home directory base: /home Default shell: /bin/sh Default users group: ipausers Default e-mail domain: example.com Search time limit: 2 Search size limit: 100…
- 列表:使用 ipa config-mod 命令修改属性。例如,要将将来的 IdM 用户的默认 shell 从 /bin/sh 更改为 /bin/bash,请输入: [bjensen@server ~]$ ipa config-mod --defaultshell "/bin/bash" 有关更多 ipa config-mod 选项,请参阅 Default user parameters 表。 新配置将应用到将来的 IdM 用户和组帐户。当前帐户保持不变。
- 命令/配置摘录:
[bjensen@server ~]$ ipa config-show --all dn: cn=ipaConfig,cn=etc,dc=example,dc=com Maximum username length: 32 Home directory base: /home Default shell: /bin/sh Default users group: ipausers Default e-mail domain: example.com Search time limit: 2 Search size limit: 100 User search fields: uid,givenname,sn,telephonenumber,ou,title Group search fields: cn,description Enable migration mode: FALSE Certificate Subject base: O=EXAMPLE.COM Default group objectclasses: top, groupofnames, nestedgroup, ipausergroup, ipaobject Default user objectclasses: top, person, organizationalperson, inetorgperson, inetuser, posixaccount, krbprincipalaux, krbtick…
[bjensen@server ~]$ ipa config-mod --defaultshell "/bin/bash"4.10. 其他资源
- 列表:在 DS 13 中管理目录服务器属性和值
第 5 章 在 IdM 中管理用户密码
- 该章节主要为下一级主题的入口。
5.1. 谁可以更改 IdM 用户密码以及如何去做
- 要点:没有权限更改其他用户密码的普通用户只能更改他们自己的个人密码。新密码必须满足适用于用户所属的组的 IdM 密码策略。有关配置密码策略的详情,请参阅 定义 IdM 密码策略。
- 要点:具有密码更改权限的管理员和用户可为新用户设置初始密码,并为现有用户重置密码。这些密码:
- 列表:不必满足 IdM 密码策略。
- 列表:在第一次成功登录后过期。当发生这种情况时,IdM 会提示用户立即更改过期的密码。要禁用此行为,请参阅 在 IdM 中启用密码重置,而不会在下次登录时提示用户更改密码。
5.2. 在 IdM Web UI 中更改用户密码
- 要点:作为身份管理(IdM)用户,您可以在 IdM Web UI 中更改用户密码。
- 要点:先决条件
- 列表:您的密码尚未过期。
- 列表:登录到 IdM Web UI。
- 列表:在右上角,点登录到 IdM Web UI 的用户的名称。
- 列表:选择 "更改密码 "。
- 列表:输入当前密码。
- 列表:在 New Password 字段中输入新密码。
- 注意:注意 或者,您可以直接进入 https:// <server.idm.example.com>/ipa/ui/reset_password.html,并在其中更改您的密码。
5.3. 在 IdM Web UI 中重置另一个用户的密码
- 要点:作为身份管理(IdM)的管理员用户,您可以在 IdM Web UI 中更改其他用户的密码。
- 要点:先决条件
- 列表:您以管理员用户身份登录到 IdM Web UI。
- 列表:选择 Identity>Users。
- 列表:单击要编辑的用户的名称。
- 列表:单击 Actions,再选择 Reset password。
- 列表:在 New Password 字段中输入新密码。
- 列表:通过在 Verify Password 字段中输入新密码。
5.4. 重置目录管理器用户密码
- 要点:如果您丢失了身份管理(IdM)目录管理器密码,您可以重置它。
- 要点:先决条件
- 列表:您有 IdM 服务器的 root 访问权限。
- 列表:使用 pwdhash 命令生成新的密码哈希。例如: # pwdhash -D /etc/dirsrv/slapd-IDM-EXAMPLE-COM password {PBKDF2_SHA256}AAAgABU0bKhyjY53NcxY33ueoPjOUWtl4iyYN5uW... 通过指定目录服务器配置的路径,您可以自动使用 nsslapd-rootpwstoragescheme 属性中设置的密码存储模式来加密新密码。
- 列表:在拓扑中的每个 IdM 服务器上执行以下步骤: 停止服务器上安装的所有 IdM 服务: # ipactl stop 编辑 /etc/dirsrv/IDM-EXAMPLE-COM/dse.ldif 文件,并将 nsslapd-rootpw 属性设为 pwdhash 命令所生成的值: nsslapd-rootpw: {PBKDF2_SHA256}AAAgABU0bKhyjY53NcxY33ueoPjOUWtl4iyYN5uW... 启动服务器上安装的所有 IdM 服务: # ipactl start
- 列表:停止服务器上安装的所有 IdM 服务: # ipactl stop
- 列表:编辑 /etc/dirsrv/IDM-EXAMPLE-COM/dse.ldif 文件,并将 nsslapd-rootpw 属性设为 pwdhash 命令所生成的值: nsslapd-rootpw: {PBKDF2_SHA256}AAAgABU0bKhyjY53NcxY33ueoPjOUWtl4iyYN5uW...
- 列表:启动服务器上安装的所有 IdM 服务:
- 命令/配置摘录:
# pwdhash -D /etc/dirsrv/slapd-IDM-EXAMPLE-COM password {PBKDF2_SHA256}AAAgABU0bKhyjY53NcxY33ueoPjOUWtl4iyYN5uW...
# ipactl stop5.5. 在 IdM CLI 中更改您的用户密码或重置另一个用户的密码
- 要点:您可以使用身份管理(IdM)命令行界面(CLI)更改用户密码。如果您是管理用户,您可以使用 CLI 重置另一个用户的密码。
- 要点:先决条件
- 列表:您已获得了 IdM 用户的票据授予票(TGT)。
- 列表:如果要重置另一个用户的密码,您必须获得 IdM 中管理用户的 TGT。
- 列表:输入 ipa user-mod 命令,以及 user 和 the- password 选项的名称。命令将提示您输入新密码。 $ ipa user-mod idm_user --password Password: Enter Password again to verify: -------------------- Modified user "idm_user" -------------------- ... 请注意,您也可以使用 ipa passwd idm_user 命令而不是 ipa user-mod。
- 命令/配置摘录:
$ ipa user-mod idm_user --password Password: Enter Password again to verify: -------------------- Modified user "idm_user" -------------------- ...5.6. 用于更改用户密码的其他命令
- 要点:您还可以使用以下命令更改 IdM 用户的密码:
- 表格样本(共 5 行):
- 命令 | 描述 | 限制:
- passwd | 用户可以使用 PAM 服务工具和 pam_sss 模块更改自己的密码,以与 SSSD 交互 | 该系统必须在 IdM 中注册,且必须配置 SSSD。
- kpasswd | 用户可以直接通过 Kerberos 协议更改自己的密码 | 用户必须具有有效的 Kerberos 票据(TGT);不需要系统注册。
- ipa passwd | 管理员或用户可以通过 IdM API 更改密码 | 需要一个活跃的 Kerberos 票据并安装 ipa-client 软件包。
5.7. 在 IdM 中启用密码重置,而不会在下一次登录时提示用户更改密码
- 要点:默认情况下,当管理员重置了另一个用户的密码后,密码会在第一次成功登录后过期。
- 要点:作为 IdM 目录管理者,您可以为单个的 IdM 管理员指定以下权限:
- 列表:它们可以执行密码更改操作,而无需用户在第一次登录时更改其密码。
- 列表:它们可以绕过密码策略,从而不会应用强度或历史记录强制。
- 列表:您知道目录管理者密码。
- 列表:输入 ldapmodify 命令来修改 LDAP 条目。指定 IdM 服务器的名称和 389 端口,然后按回车: $ ldapmodify -x -D "cn=Directory Manager" -W -h server.idm.example.com -p 389 Enter LDAP Password: <password>
- 列表:输入 Directory Manager 密码。
- 列表:输入 ipa_pwd_extop 密码同步条目的可区别的名称,然后按回车 dn: cn=ipa_pwd_extop,cn=plugins,cn=config
- 命令/配置摘录:
$ ldapmodify -x -D "cn=Directory Manager" -W -h server.idm.example.com -p 389 Enter LDAP Password: <password>
dn: cn=ipa_pwd_extop,cn=plugins,cn=config- 注意:警告 绕过密码策略可能会构成安全威胁。当您选择要授予这些额外特权的用户时要谨慎。
5.8. 检查 IdM 用户帐户是否已被锁住
- 要点:作为身份管理(IdM)管理员,您可以检查 IdM 用户帐户是否已被锁住。为此,您必须将用户的最大允许失败的登录次数与用户实际失败的登录次数进行比较。
- 要点:先决条件
- 列表:您已在 IdM 中获得了管理用户的票据授予票(TGT)。
- 列表:显示用户帐户的状态,来查看失败的登录次数: $ ipa user-status example_user ----------------------- Account disabled: False ----------------------- Server: idm.example.com Failed logins: 8 Last successful authentication: N/A Last failed authentication: 20220229080317Z Time now: 2022-02-29T08:04:46Z ---------------------------- Number o…
- 列表:显示特定用户允许的登录尝试次数: $ ipa pwpolicy-show --user example_user Group: global_policy Max lifetime (days): 90 Min lifetime (hours): 1 History size: 0 Character classes: 0 Min length: 8 Max failures: 6 Failure reset interval: 60 Lockout duration: 600 Grace login limit: -1
- 列表:将 ipa user-status 命令的输出中显示的失败登录数量与 ipa pwpolicy-show 命令的输出中显示的 Max failures number 进行比较。如果失败的登录次数等于最大允许登录尝试次数,则用户帐户被锁住。
- 列表:在 IdM 中密码失败后解锁用户帐户
- 命令/配置摘录:
$ ipa user-status example_user ----------------------- Account disabled: False ----------------------- Server: idm.example.com Failed logins: 8 Last successful authentication: N/A Last failed authentication: 20220229080317Z Time now: 2022-02-29T08:04:46Z ---------------------------- Number of entries returned 1 ----------------------------
$ ipa pwpolicy-show --user example_user Group: global_policy Max lifetime (days): 90 Min lifetime (hours): 1 History size: 0 Character classes: 0 Min length: 8 Max failures: 6 Failure reset interval: 60 Lockout duration: 600 Grace login limit: -15.9. 在 IdM 中密码失败后解锁用户帐户
- 要点:如果用户尝试使用不正确的密码进行一定次数的登录,则身份管理(IdM)会锁住用户帐户,从而阻止用户登录。出于安全考虑,IdM 不会显示用户帐户已被锁住的任何警告信息。相反,CLI 提示可能会一直要求用户输入密码。
- 要点:IdM 在过了指定的时间后会自动解锁用户帐户。另外,您可以按照以下流程手动解锁用户帐户。
- 列表:您已获得 IdM 管理用户的票据授予票。
- 列表:要解锁用户帐户,请使用 ipa user-unlock 命令。 $ ipa user-unlock idm_user ----------------------- Unlocked account "idm_user" ----------------------- 之后,用户可以再次登录。
- 列表:检查 IdM 用户帐户是否已被锁住
- 命令/配置摘录:
$ ipa user-unlock idm_user ----------------------- Unlocked account "idm_user" -----------------------5.10. 为 IdM 中的用户启用最后一次成功 Kerberos 验证的跟踪
- 要点:出于性能方面的考虑,在 Red Hat Enterprise Linux 8 中运行的身份管理(IdM)不会存储用户最后一次成功的 Kerberos 验证的时间戳。因此,某些命令(如 ipa user-status )不会显示时间戳。
- 要点:先决条件
- 列表:您已在 IdM 中获得了管理用户的票据授予票(TGT)。
- 列表:您在执行该流程的 IdM 服务器上有 root 访问权限。
- 列表:显示当前启用的密码插件功能: # ipa config-show | grep "Password plugin features" Password plugin features: pass:quotes[AllowNThash], pass:quotes[KDC:Disable Last Success] 输出显示 KDC:Disable Last Success 插件已启用。插件隐藏了最后一次成功的 Kerberos 身份验证,以防在 ipa user-status 输出中可见。
- 列表:将每个功能的- ipaconfigstring=功能 参数添加到当前启用的 ipa config-mod 命令中,但 KDC:Disable Last Success 除外: # ipa config-mod --ipaconfigstring='AllowNThash' 这个命令只启用 AllowNThash 插件。要启用多个功能,请为每个功能单独指定 --ipaconfigstring=feature 参数。
- 列表:重启 IdM: # ipactl restart
- 命令/配置摘录:
# ipa config-show | grep "Password plugin features" Password plugin features: pass:quotes[AllowNThash], pass:quotes[KDC:Disable Last Success]
# ipa config-mod --ipaconfigstring='AllowNThash'第 6 章 定义 IdM 密码策略
- 要点:本章论述了身份管理(IdM)密码策略以及如何在 IdM 中添加新密码策略。
6.1. 什么是密码策略
- 要点:密码策略是密码必须满足的一组规则。例如,password 策略可以定义最小密码长度和最大密码生命周期。受此策略影响的所有用户都必须设置足够长的密码,并经常更改密码以满足指定条件。这样,密码策略有助于降低某人发现和滥用用户密码的风险。
6.2. IdM 中的密码策略
- 要点:密码是 Identity Management (IdM) 用户对 IdM Kerberos 域进行身份验证的最常用方式。密码策略定义了这些 IdM 用户密码必须满足的要求。
- 要点:密码策略属性列出了您可以在 IdM 中定义密码策略的属性。
- 注意:注意 IdM 密码策略在底层 LDAP 目录中设置,但 Kerberos 密钥分发中心 (KDC) 强制执行密码策略。
- 注意:重要 如果您一组不同的硬件可能不能使用国际字符和符号,则字符类要求应为英语字母和常用符号。有关密码中的字符类策略的更多信息,请参阅红帽知识库解决方案在 密码中哪些字符是有效的?
- 表格样本(共 9 行):
- 属性 | 介绍 | 示例
- Max lifetime | 密码在必须重置密码之前有效的最长时间(以天为单位)。默认值为 90 天。 请注意,如果属性被设为 0,则密码永不过期。 | Max lifetime = 180 用户密码仅 180 天有效。之后,IdM 会提示用户更改它们。
- Min lifetime | 两个密码更改操作之间必须经过的最短时间(以小时为单位)。 | Min Life = 1 用户更改密码后,他们必须至少等待 1 小时后再重新更改密码。
- History size | 保存的之前密码的数量。用户无法重复使用其密码历史记录中的密码,但可以重复利用未存储的旧密码。 | History size = 0 在这种情况下,密码历史记录为空,用户可以重复使用他们之前的任何密码。
6.3. IdM 中的密码策略优先级
- 要点:密码策略帮助降低某人发现并滥用用户密码的风险。默认密码策略是 全局密码策略。您还可以创建其他组密码策略。全局策略规则适用于所有没有组密码策略的用户。组密码策略适用于相应用户组的所有成员。
- 要点:请注意,对于任何用户,一次只能有一个密码策略有效。如果用户分配了多个密码策略,则根据以下规则,按照优先级来优先使用:
- 列表:每个组密码策略都设置了优先级。值越低,策略的优先级越高。最低支持的值是 0。
- 列表:如果多个密码策略适用于用户,则具有最低优先级值的策略优先。其他策略中定义的所有规则都会被忽略。
- 列表:优先级值最低的密码策略适用于所有密码策略属性,即使属性没有在策略中定义。
- 注意:注意 ipa pwpolicy-show --user=user_name 命令显示哪个策略当前对特定用户有效。
6.4. 使用 WebUI 或 CLI 在 IdM 中添加新密码策略
- 要点:密码策略帮助降低某人发现并滥用用户密码的风险。默认密码策略是 全局密码策略。您还可以创建其他组密码策略。
6.4.1. 在 IdM WebUI 中添加新密码策略
- 要点:密码策略帮助降低某人发现并滥用用户密码的风险。默认密码策略是 全局密码策略。您还可以创建其他组密码策略。
- 要点:先决条件
- 列表:应用策略的用户组。
- 列表:分配给策略的优先级
- 列表:登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:选择 Policy>Password Policies。
- 列表:点击 Add。
- 列表:定义用户组和优先级。
6.4.2. 在 IdM CLI 中添加新密码策略
- 要点:密码策略帮助降低某人发现并滥用用户密码的风险。默认密码策略是 全局密码策略。您还可以创建其他组密码策略。
- 要点:先决条件
- 列表:应用策略的用户组。
- 列表:分配给策略的优先级
- 列表:打开终端并连接到 IdM 服务器。
- 列表:使用 ipa pwpolicy-add 命令。指定用户组和优先级: $ ipa pwpolicy-add Group: group_name Priority: priority_level
- 列表:可选。使用 ipa pwpolicy-find 命令来验证策略是否已成功添加: $ ipa pwpolicy-find 要配置新密码策略的属性,请参阅 IdM 中的 密码策略。
- 列表:IdM 中的密码策略优先级
- 命令/配置摘录:
$ ipa pwpolicy-add Group: group_name Priority: priority_level
$ ipa pwpolicy-find6.5. IdM 中的附加密码策略选项
- 要点:作为身份管理 (IdM) 管理员,您可以通过启用基于 libpwquality 功能集的额外密码策略选项来增强默认密码要求。额外的密码策略选项包括:
- 要点:您不能将额外的密码策略选项应用到现有密码。如果您应用了任何附加选项,IdM 会自动将 --minlength 选项(密码中的最少字符数)设置为 6 个字符。
- 列表:将额外密码策略应用到 IdM 组
- 注意:注意 在使用 RHEL 7、RHEL 8、RHEL 9 和 RHEL 10 服务器的混合环境中,您只能在在 RHEL 8.4 及更新版本上运行的服务器中强制实施额外的密码策略设置。如果用户登录到 IdM 客户端,并且 IdM 客户端与运行在 RHEL 8.3 或更早版本上的 IdM 服务器进行通信,则系统管理员设置的新密码策略需求不会被应用。为确保行为的一致,请将所有服务器升级或更新至 RHEL 8.4 或更新的版本。
6.6. 将其他密码策略选项应用到 IdM 组
- 要点:按照以下流程,在身份管理(IdM)中应用额外的密码策略选项。这个示例描述了如何通过确保新密码不包含用户相应的用户名以及密码不包含两个以上相同的字符来增强 managers 组的密码策略。
- 要点:先决条件
- 列表:您以 IdM 管理员身份登录。
- 列表:managers 组存在于 IdM 中。
- 列表:IdM 中存在 managers 密码策略。
- 列表:将用户名检查应用到 managers 组中用户建议的所有新密码: $ ipa pwpolicy-mod --usercheck=True managers 注意 如果没有指定密码策略的名称,则会修改默认的 global_policy。
- 列表:在 manager 密码策略中,将相同连续字符的最大数量设置为 2: $ ipa pwpolicy-mod --maxrepeat=2 managers 现在不接受包含连续两个以上相同字符的密码。例如,eR873mUi111YJQ 组合是不可接受的,因为它包含三个连续的 1。
- 列表:添加名为 test_user 的测试用户: $ ipa user-add test_user First name: test Last name: user ---------------------------- Added user "test_user" ----------------------------
- 命令/配置摘录:
$ ipa pwpolicy-mod --usercheck=True managers
$ ipa pwpolicy-mod --maxrepeat=2 managers- 注意:注意 如果没有指定密码策略的名称,则会修改默认的 global_policy。
- 注意:注意 Kerberos 没有精细的错误密码策略报告,在某些情况下,没有提供拒绝密码的明确原因。
6.7. 其他资源
- 列表:使用 Ansible playbook 定义 IdM 密码策略
第 7 章 管理过期密码通知
- 要点:您可以使用 ipa-client-epn 软件包提供的过期密码通知(EPN)工具来构建一个身份管理(IdM)用户列表,这些用户的密码在配置的时间内即将过期。要安装、配置和使用 EPN 工具,请参阅相关章节。
7.1. 什么是过期的密码通知工具
- 要点:过期密码通知(EPN)工具是一个独立的工具,可用于构建一个身份管理(IdM)用户列表,这些用户的密码在配置的时间内即将过期。
- 要点:IdM 管理员可以使用 EPN 进行以下操作:
- 列表:以 JSON 格式显示受影响的用户的列表,该列表是在dry-run 模式下运行时创建的。
- 列表:计算在给定日期或日期范围内发送多少封电子邮件.
- 列表:向用户发送密码过期电子邮件通知.
- 列表:将 ipa-epn.timer 配置为每天运行 EPN 工具,并向密码在定义的未来日期范围内即将过期的用户发送电子邮件。
- 列表:自定义要发送给用户的电子邮件通知。
- 注意:注意 如果用户帐户被禁用,则不会发送电子邮件通知(如果密码即将过期)。
7.2. 安装过期的密码通知工具
- 要点:按照以下流程安装过期密码通知(EPN)工具。
- 要点:先决条件
- 列表:在身份管理(IdM)副本或配置为智能主机的本地 Postfix SMTP 服务器的 IdM 客户端上安装 EPN 工具。
- 列表:安装 EPN 工具: # dnf install ipa-client-epn
- 命令/配置摘录:
# dnf install ipa-client-epn7.3. 运行 EPN 工具,向密码即将过期的用户发送电子邮件
- 要点:您可以使用过期密码通知(EPN)工具向密码即将过期的身份管理(IdM)用户发送电子邮件。您可以选择以下任一方法:
- 要点:先决条件
- 列表:更新 epn.conf 配置文件 并启用 ipa-epn.timer 工具。
- 列表:更新 epn.conf 配置文件,并直接在命令行中运行 EPN 工具。
- 列表:ipa-client-epn 软件包已安装。请参阅 安装过期密码通知工具。
- 列表:如果需要,自定义 ipa-epn 电子邮件模板。请参阅 修改过期密码通知电子邮件模板。
- 列表:打开 epn.conf 配置文件。 # vi /etc/ipa/epn.conf
- 列表:根据需要更新 notify_ttls 选项。默认是通知用户其密码将在 28、14、7、3 和 1 天后过期。 notify_ttls = 28, 14, 7, 3, 1 注意 您还必须 激活 ipa-epn.timer 工具,以确保发送电子邮件。
- 命令/配置摘录:
# vi /etc/ipa/epn.conf
notify_ttls = 28, 14, 7, 3, 1- 注意:注意 EPN 工具是无状态的。如果 EPN 工具未能向密码即将在给定日期过期的任何用户发送邮件,则 EPN 工具不会保存这些用户的列表。
- 注意:注意 您还必须 激活 ipa-epn.timer 工具,以确保发送电子邮件。
7.4. 启用 ipa-epn.timer ,向密码即将过期的所有用户发送电子邮件
- 要点:按照以下流程,使用 ipa-epn.timer 运行过期密码通知(EPN)工具,来向密码即将过期的用户发送电子邮件。ipa-epn.timer 解析 epn.conf 文件,并向在该文件中配置的定义的未来日期范围内密码即将过期的用户发送电子邮件。
- 要点:先决条件
- 列表:ipa-client-epn 软件包已安装。请参阅 安装过期密码通知工具
- 列表:如果需要,自定义 ipa-epn 电子邮件模板。请参阅 修改过期密码通知电子邮件模板
- 列表:启动 ipa-epn.timer: # systemctl start ipa-epn.timer 启动计时器后,默认情况下 EPN 工具会在每天早晨 1 点运行。
- 命令/配置摘录:
# systemctl start ipa-epn.timer7.5. 修改过期密码通知电子邮件模板
- 要点:按照以下流程自定义过期密码通知(EPN)电子邮件消息模板。
- 要点:先决条件
- 列表:ipa-client-epn 软件包已安装。
- 列表:打开 EPN 消息模板: # vi /etc/ipa/epn/expire_msg.template
- 列表:根据需要更新模板文本。 Hi {{ fullname }}, Your password will expire on {{ expiration }}. Please change it as soon as possible. 您可以在模板中使用以下变量: 用户 ID:uid 全名:fullname 名字:first 姓氏:last 密码过期日期:过期
- 列表:用户 ID:uid
- 列表:全名:fullname
- 列表:名字:first
- 命令/配置摘录:
# vi /etc/ipa/epn/expire_msg.template
Hi {{ fullname }}, Your password will expire on {{ expiration }}. Please change it as soon as possible.第 8 章 为 IdM 客户端上的 IdM 用户授予 sudo 访问权限
- 要点:了解有关授予 sudo 访问身份管理中用户的更多信息。
8.1. IdM 客户端上的 sudo 访问权限
- 要点:系统管理员可以授予 sudo 访问权限,以允许非 root 用户执行通常为 root 用户保留的管理命令。因此,当用户需要执行通常为 root 用户保留的管理命令时,他们会在此命令前面使用 sudo。输入密码后,将像 root 用户一样执行 命令。要将 sudo 命令作为另一个用户或组(如数据库服务帐户)执行,您可以为 sudo 规则配置 RunAs 别名。
- 要点:如果 Red Hat Enterprise Linux (RHEL) 8 主机注册为 Identity Management (IdM) 客户端,您可以指定 sudo 规则来定义哪些 IdM 用户可以在主机上执行哪些命令:
- 列表:本地的 /etc/sudoers 文件中
- 列表:集中在 IdM 中
- 列表:管理 sudo 访问
8.2. 使用 CLI 向 IdM 客户端上的 IdM 用户授予 sudo 访问权限
- 要点:在 Identity Management (IdM) 中,您可以将特定命令的 sudo 访问权限授予特定 IdM 主机上的 IdM 用户帐户。首先,添加 sudo 命令,然后为一个或多个命令创建 sudo 规则。
- 要点:例如,完成这个过程以创建 idm_user_reboot sudo 规则,为 idm_user 帐户授予在 idmclient 机器上运行 /usr/sbin/reboot 命令的权限。
- 列表:以 IdM 管理员身份登录。
- 列表:您已在 IdM 中创建 了 idm_user 的用户帐户,并通过为用户创建密码来解锁帐户。有关使用 CLI 添加新 IdM 用户的详情,请参阅使用命令行添加用户。
- 列表:idmclient 主机上没有本地的 idm_user。idm_user 用户未列在本地 /etc/passwd 文件中。
- 列表:获取 Kerberos 票据作为 IdM admin。 [root@idmclient ~]# kinit admin
- 列表:在 sudo 命令的 IdM 数据库中添加 /usr/sbin/reboot 命令: [root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot ------------------------------------- Added Sudo Command "/usr/sbin/reboot" ------------------------------------- Sudo Command: /usr/sbin/reboot
- 列表:创建名为 idm_user_reboot 的 sudo 规则: [root@idmclient ~]# ipa sudorule-add idm_user_reboot --------------------------------- Added Sudo Rule "idm_user_reboot" --------------------------------- Rule name: idm_user_reboot Enabled: TRUE
- 命令/配置摘录:
[root@idmclient ~]# kinit admin
[root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot ------------------------------------- Added Sudo Command "/usr/sbin/reboot" ------------------------------------- Sudo Command: /usr/sbin/reboot- 注意:注意 将更改从服务器传播到客户端可能需要几分钟时间。
8.3. 使用 CLI 在 IdM 客户端上授予 sudo 访问 AD 用户的权限
- 要点:身份管理(IdM)系统管理员可以使用 IdM 用户组来设置访问权限、基于主机的访问控制、sudo 规则,以及对 IdM 用户的其他控制。IdM 用户组授予并限制对 IdM 域资源的访问权限。
- 要点:您可以将活动目录(AD) 用户 和 AD 组 添加到 IdM 用户组中。要做到这一点:
- 列表:将 AD 用户或组添加到 非 POSIX 外部 IdM 组。
- 列表:将非 POSIX 外部 IdM 组添加到 IdM POSIX 组中。
- 列表:已获得了 IdM admin Kerberos票据授予票据(TGT)。
- 列表:IdM 域和 ad-domain.com AD 域间的跨林信任已存在。
- 列表:idmclient 主机上没有本地 administrator 账户:administrator 用户没有列在本地 /etc/passwd 文件中。
- 列表:使用 administrator@ad-domain 成员创建包含 ad_users_external 组的 ad_users 组: 可选:在 AD 域中创建或选择一个对应组,用来管理 IdM 域中的 AD 用户。您可以使用多个 AD 组,并将其添加到 IdM 端的不同组中。 创建 ad_users_external 组,并通过添加- external 选项来指示它包含 IdM 域外部的成员: [root@ipaserver ~]# ipa group-add --desc='AD users external map' ad_users_external --external --------------------------…
- 命令/配置摘录:
[root@ipaserver ~]# ipa group-add --desc='AD users external map' ad_users_external --external ------------------------------- Added group "ad_users_external" ------------------------------- Group name: ad_users_external Description: AD users external map
[root@ipaserver ~]# ipa group-add --desc='AD users' ad_users ---------------------- Added group "ad_users" ---------------------- Group name: ad_users Description: AD users GID: 129600004- 注意:注意 也可以将 AD 用户组作为成员添加到 IdM 外部组中。通过将用户和组管理放在一个 AD 域中,可以更轻松地为 Windows 用户定义策略。
- 注意:重要 不要 对 IdM 中的 SUDO 规则使用 AD 用户的 ID 覆盖。AD 用户的 ID 覆盖只代表 AD 用户的 POSIX 属性,而不是 AD 用户本身。 您可以将 ID 覆盖添加为组成员。但是,您只能使用此功能管理 IdM API 中的 IdM 资源。将 ID 覆盖添加为组群成员没有扩展到 POSIX 环境,因此您无法将其用于 sudo 或基于主机的访问控制(HBAC)规则中的成员。
8.4. 使用 IdM Web UI 向 IdM 客户端上的 IdM 用户授予 sudo 访问权限
- 要点:在 Identity Management (IdM) 中,您可以将特定命令的 sudo 访问权限授予特定 IdM 主机上的 IdM 用户帐户。首先,添加 sudo 命令,然后为一个或多个命令创建 sudo 规则。
- 要点:完成此步骤以创建 idm_user_reboot sudo 规则,为 idm_user 帐户授予在 idmclient 计算机上运行 /usr/sbin/reboot 命令的权限。
- 列表:以 IdM 管理员身份登录。
- 列表:您已在 IdM 中创建 了 idm_user 的用户帐户,并通过为用户创建密码来解锁帐户。有关使用命令行添加新 IdM 用户的详情,请参阅 使用命令行添加用户。
- 列表:idmclient 主机上没有本地的 idm_user。idm_user 用户未列在本地 /etc/passwd 文件中。
- 列表:在 sudo 命令的 IdM 数据库中添加 /usr/sbin/reboot 命令: 导航到 Policy → Sudo → Sudo Commands。 单击右上角的 Add,以打开 Add sudo 命令对话框。 输入您希望用户能够使用 sudo 执行的命令:/usr/sbin/reboot。 点击 Add。
- 列表:导航到 Policy → Sudo → Sudo Commands。
- 列表:单击右上角的 Add,以打开 Add sudo 命令对话框。
- 命令/配置摘录:
$ sudo /usr/sbin/reboot [sudo] password for idm_user:- 注意:注意 将更改从服务器传播到客户端可能需要几分钟时间。
8.5. 在 CLI 上创建 sudo 规则,以作为 IdM 客户端上的服务帐户运行命令
- 要点:在 IdM 中,您可以使用 RunAs alias 配置 sudo 规则,以便以另一个用户或组身份运行 sudo 命令。例如,您可能有一个托管数据库应用的 IdM 客户端,您需要以与该应用对应的本地服务帐户运行命令。
- 要点:使用此示例在命令行上创建名为 run_third-party-app_report 的 sudo 规则,以允许 idm_user 帐户以 idmclient 主机上 thirdpartyapp 服务帐户的身份运行/opt/third-party-app/bin/report 命令。
- 列表:以 IdM 管理员身份登录。
- 列表:您已在 IdM 中创建 了 idm_user 的用户帐户,并通过为用户创建密码来解锁帐户。有关使用 CLI 添加新 IdM 用户的详情,请参阅使用命令行添加用户。
- 列表:idmclient 主机上没有本地的 idm_user。idm_user 用户未列在本地 /etc/passwd 文件中。
- 列表:您有一个名为 third-party-app 的自定义应用程序安装在 idmclient 主机上。
- 列表:third-party-app 应用程序的report 命令安装在 /opt/third-party-app/bin/report 目录中。
- 列表:您已创建了一个名为 thirdpartyapp 的本地服务帐户,来为 third-party-app 应用程序执行命令。
- 命令/配置摘录:
[root@idmclient ~]# kinit admin
[root@idmclient ~]# ipa sudocmd-add /opt/third-party-app/bin/report ---------------------------------------------------- Added Sudo Command "/opt/third-party-app/bin/report" ---------------------------------------------------- Sudo Command: /opt/third-party-app/bin/report- 注意:注意 将更改从服务器传播到客户端可能需要几分钟时间。
8.6. 在 IdM Web UI 中创建一个 sudo 规则,该规则在 IdM 客户端上以服务帐户的身份运行命令
- 要点:在 IdM 中,您可以使用 RunAs alias 配置 sudo 规则,以便以另一个用户或组身份运行 sudo 命令。例如,您可能有一个托管数据库应用的 IdM 客户端,您需要以与该应用对应的本地服务帐户运行命令。
- 要点:使用此示例在 IdM Web UI 中创建一个名为 run_third-party-app_report 的 sudo 规则,以允许 idm_user 帐户以 idmclient 主机上 thirdpartyapp 服务账号的身份运行 /opt/third-party-app/bin/report 命令。
- 列表:以 IdM 管理员身份登录。
- 列表:您已在 IdM 中创建 了 idm_user 的用户帐户,并通过为用户创建密码来解锁帐户。有关使用 CLI 添加新 IdM 用户的详情,请参阅使用命令行添加用户。
- 列表:idmclient 主机上没有本地的 idm_user。idm_user 用户未列在本地 /etc/passwd 文件中。
- 列表:您有一个名为 third-party-app 的自定义应用程序安装在 idmclient 主机上。
- 列表:third-party-app 应用程序的report 命令安装在 /opt/third-party-app/bin/report 目录中。
- 列表:您已创建了一个名为 thirdpartyapp 的本地服务帐户,来为 third-party-app 应用程序执行命令。
- 命令/配置摘录:
[idm_user@idmclient ~]$ sudo -l Matching Defaults entries for idm_user@idm.example.com on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User idm_user@idm.example.com may run the following commands on id…
[idm_user@idmclient ~]$ sudo -u thirdpartyapp /opt/third-party-app/bin/report [sudo] password for idm_user@idm.example.com: Executing report... Report successful.- 注意:注意 将更改从服务器传播到客户端可能需要几分钟时间。
8.7. 在 IdM 客户端上为 sudo 启用 GSSAPI 身份验证
- 要点:通过 pam_sss_gss.so PAM 模块,在 IdM 客户端上为 sudo 和 sudo -i 命令启用 Generic Security Service Application Program Interface (GSSAPI) (GSSAPI)身份验证。使用这个配置,IdM 用户可以使用它们的 Kerberos 票据对 sudo 命令进行身份验证。
- 要点:先决条件
- 列表:您已为应用于 IdM 主机的 IdM 用户创建了 sudo 规则。在本例中,您已创建了 idm_user_reboot sudo 规则,为 idm_user 帐户授予在 idmclient 主机上运行 /usr/sbin/reboot 命令的权限。
- 列表:您需要 root 权限来修改 /etc/sssd/sssd.conf 文件和 /etc/pam.d/ 目录中的 PAM 文件。
- 列表:打开 /etc/sssd/sssd.conf 配置文件:
- 列表:在 [domain/<domain_name> ] 部分中添加以下条目。 [domain/<domain_name>] pam_gssapi_services = sudo, sudo-i
- 列表:保存并关闭 /etc/sssd/sssd.conf 文件。
- 列表:重启 SSSD 服务以载入配置更改。 [root@idmclient ~]# systemctl restart sssd
- 命令/配置摘录:
[domain/<domain_name>] pam_gssapi_services = sudo, sudo-i
[root@idmclient ~]# systemctl restart sssd8.8. 在 IdM 客户端上为 sudo 启用 GSSAPI 身份验证,并强制实施 Kerberos 身份验证指标
- 要点:您可以通过 pam_sss_gss.so PAM 模块在身份管理(IdM)客户端上启用通用安全服务应用程序接口(GSSAPI)身份验证,如 sudo 和 sudo -i。另外,您只能启用使用智能卡登录的用户,以便使用 Kerberos 票据向这些服务进行身份验证。
- 要点:先决条件
- 列表:您已为应用于 IdM 主机的 IdM 用户创建了 sudo 规则。在本例中,您已创建了 idm_user_reboot sudo 规则,为 idm_user 帐户授予在 idmclient 主机上运行 /usr/sbin/reboot 命令的权限。
- 列表:您已为 idmclient 主机配置了智能卡身份验证。
- 列表:您需要 root 权限来修改 /etc/sssd/sssd.conf 文件和 /etc/pam.d/ 目录中的 PAM 文件。
- 列表:打开 /etc/sssd/sssd.conf 配置文件:
- 列表:将以下条目添加到 [domain/<domain_name>] 部分中。 [domain/<domain_name>] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:pkinit, sudo-i:pkinit
- 列表:保存并关闭 /etc/sssd/sssd.conf 文件。
- 命令/配置摘录:
[domain/<domain_name>] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:pkinit, sudo-i:pkinit
[root@idmclient ~]# systemctl restart sssd- 注意:注意 您可以将此流程作为模板,使用 SSSD 为其他 PAM 感知的服务配置 GSSAPI 身份验证,并进一步限制只对那些在其 Kerberos 票据上附加了特定身份验证指标的用户进行访问。 但是,使用身份验证指标限制访问目前有两个限制: 只有基于 MIT Kerberos 的部署才支持身份验证指标。这些部署包括 Fedora 中的 RHEL IdM、D FreeIPA 和 Samba AD DC。 身份验证指标在域边界上从 Kerberos 票据中删除。 因此,如果您想通过使用 pam_gssapi_indicators_map = sudo:pkinit 来限制 sudo 访问,则您只能对存储在 IdM LDAP 中的用户应用此限制。向其他存储的用户(如 Active Directory 中存储的用户发出的票据)无法满足 pam_gssapi_indicators_map = sudo:pkinit 条件。
8.9. SSSD 选项控制对 PAM 服务的 GSSAPI 身份验证
- 要点:您可以对 /etc/sssd/sssd.conf 配置文件使用以下选项来调整 SSSD 服务中的 GSSAPI 配置。
- 要点:这个选项只适用于身份管理(IdM)域。使用这个选项列出授予 PAM 访问服务所需的 Kerberos 身份验证指标。配对的格式必须是 <PAM_service>: <required_authentication_indicator>。
- 列表:OTP 用于双因素身份验证
- 列表:radius 用于 RADIUS 身份验证
- 列表:pkinit 用于 PKINIT、智能卡或证书身份验证
- 列表:hardened 用于强化的密码
8.9.1. SSSD GSSAPI 配置示例
- 要点:以下选项为 sudo 和 sudo-i 服务启用 Kerberos 身份验证,要求 sudo 用户使用一次性密码进行身份验证,用户名必须与 Kerberos 主体匹配。由于这些设置位于 [pam] 部分中,因此适用于所有域:
- 要点:您还可以在单独的 [domain] 部分中设置这些选项,来覆盖 [pam] 部分中的任何全局值。以下选项对每个域应用不同的 GSSAPI 设置:
- 列表:为 sudo 和 sudo -i 服务启用 GSSAPI 身份验证。
- 列表:sudo 命令需要证书或智能卡身份验证器。
- 列表:sudo -i 命令需要一次性密码身份验证器.
- 列表:强制匹配用户名和 Kerberos 主体.
- 列表:仅为 sudo 服务启用 GSSAPI 身份验证。
- 列表:不强制匹配用户名和主体。
- 命令/配置摘录:
[pam] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:otp pam_gssapi_check_upn = true
[domain/idm.example.com] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:pkinit, sudo-i:otp pam_gssapi_check_upn = true ... [domain/ad.example.com] pam_gssapi_services = sudo pam_gssapi_check_upn = false ...8.10. sudo 的 GSSAPI 身份验证故障排除
- 要点:如果您无法使用 IdM 的 Kerberos 票据对 sudo 服务进行身份验证,请使用以下场景对您的配置进行故障排除。
- 要点:先决条件
- 列表:您已为 sudo 服务启用了 GSSAPI 身份验证。请参阅 在 IdM 客户端上为 sudo 启用 GSSAPI 身份验证。
- 列表:您需要 root 权限来修改 /etc/sssd/sssd.conf 文件和 /etc/pam.d/ 目录中的 PAM 文件。
- 列表:如果您看到以下错误,Kerberos 服务可能无法为基于主机名的服务票据解析正确的域: Server not found in Kerberos database 在这种情况下,将主机名直接添加到 /etc/krb5.conf Kerberos 配置文件中的 [domain_realm] 部分: [idm-user@idm-client ~]$ cat /etc/krb5.conf ... [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM server.example.com = EXAMPLE.COM
- 列表:如果看到以下错误,则您没有任何 Kerberos 凭证: No Kerberos credentials available 在这种情况下,使用 kinit 工具检索 Kerberos 凭证,或者通过 SSSD 进行身份验证: [idm-user@idm-client ~]$ kinit idm-user@IDM.EXAMPLE.COM Password for idm-user@idm.example.com:
- 列表:如果您在 /var/log/sssd/sssd_pam.log 日志文件中看到以下错误之一,则 Kerberos 凭证与当前登录的用户的用户名不匹配: User with UPN [<UPN>] was not found. UPN [<UPN>] does not match target user [<username>]. 在这种情况下,验证您使用 SSSD 进行身份验证,或考虑禁用 /etc/sssd/sssd.conf 文件中的 pam_gssapi_check_upn 选项: [idm-user@idm-client ~]$ cat /etc/sssd/sssd.conf ... pam_gssapi_check_up…
- 列表:若要进行额外的故障排除,您可以对 pam_sss_gss.so PAM 模块启用调试输出。 在 PAM 文件(如 /etc/pam.d/sudo 和 /etc/pam.d/sudo-i )中所有 pam_sss_gss.so 条目的末尾添加 debug 选项: [root@idm-client ~]# cat /etc/pam.d/sudo #%PAM-1.0 auth sufficient pam_sss_gss.so debug auth include system-auth account include system-auth password include system-auth session include sy…
- 命令/配置摘录:
Server not found in Kerberos database
[idm-user@idm-client ~]$ cat /etc/krb5.conf ... [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM server.example.com = EXAMPLE.COM8.11. 其他资源
- 列表:使用 Ansible playbook 确保 IdM 客户端上的 IdM 用户具有 sudo 访问权限
- 列表:在单个 Ansible 任务中管理多个 IdM sudo 规则
第 9 章 使用 ldapmodify 在外部管理 IdM 用户
- 要点:作为 IdM 管理员,您可以使用 ipa 命令管理您的目录内容。另外,您可以使用 ldapmodify 命令来实现类似的目标。您可以以交互方式使用这个命令,并直接在命令行中提供所有数据。您还可以在 LDAP 数据交换格式(LDIF)的文件中向 ldapmodify 命令提供数据。
9.1. 在外部管理 IdM 用户帐户的模板
- 要点:以下模板可用于 IdM 中的各种用户管理操作。模板显示您必须使用 ldapmodify 修改哪些属性才能实现以下目标:
- 要点:模板的格式为 LDAP 数据交换格式(LDIF)。LDIF 是一种标准的纯文本数据交换格式,用来表示 LDAP 目录内容和更新请求。
- 列表:添加新的 stage 用户
- 列表:修改用户属性
- 列表:启用用户
- 列表:禁用用户
- 列表:保留用户
- 列表:修改用户属性:
- 命令/配置摘录:
dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: inetorgperson uid: user_login sn: surname givenName: first_name cn: full_name
dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: person objectClass: inetorgperson objectClass: organizationalperson objectClass: posixaccount uid: user_login uidNumber: UID_number gidNumber: GID_number sn: surname givenName: first_name cn: full_name homeDirectory: /home/user_login- 注意:注意 在修改用户之前,使用用户的登录名进行搜索来获取用户的可区别名称(DN)。在以下示例中,user_allowed_to_modify_user_entries 用户是允许修改用户和组信息的用户,如 activator 或 IdM 管理员。示例中的密码是这个用户的密码: # ldapsearch -LLL -x -D "uid=user_allowed_to_modify_user_entries,cn=users,cn=accounts,dc=idm,dc=example,dc=com" -w "Secret123" -H ldap://server.idm.example.com -b "cn=users,cn=accounts,dc=idm,dc=example,dc=com" uid=test_user dn: uid=test_user,cn=users,cn=accounts,dc=idm,dc=example,dc=com memberOf: cn=ipausers,cn=groups,cn=accounts,dc=idm,dc=example,dc=com
9.2. 在外部管理 IdM 组帐户的模板
- 要点:以下模板可用于 IdM 中的各种用户组管理操作。模板显示您必须使用 ldapmodify 修改哪些属性来实现以下目标:
- 要点:模板的格式为 LDAP 数据交换格式(LDIF)。LDIF 是一种标准的纯文本数据交换格式,用来表示 LDAP 目录内容和更新请求。
- 列表:创建新组
- 列表:删除现有组
- 列表:将成员添加到组中
- 列表:从组中删除成员
- 列表:删除现有组 :
- 列表:将成员添加到组中 : dn: group_distinguished_name changetype: modify add: member member: uid=user_login,cn=users,cn=accounts,dc=idm,dc=example,dc=com 不要向组中添加 stage 或 preserved 的用户。即使更新操作成功完成,也不会作为组的成员更新用户。只有活动的用户才能属于组。
- 命令/配置摘录:
dn: cn=group_name,cn=groups,cn=accounts,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: ipaobject objectClass: ipausergroup objectClass: groupofnames objectClass: nestedgroup objectClass: posixgroup uid: group_name cn: group_name gidNumber: GID_number
dn: group_distinguished_name changetype: delete- 注意:注意 在修改组之前,使用组的名称进行搜索来获取组的可区别名称(DN)。 # ldapsearch -YGSSAPI -H ldap://<server.idm.example.com> -b "<cn=groups,cn=accounts,dc=idm,dc=example,dc=com>" "cn=<group_name>" dn: cn=group_name,cn=groups,cn=accounts,dc=idm,dc=example,dc=com ipaNTSecurityIdentifier: S-1-5-21-1650388524-2605035987-2578146103-11017 cn: testgroup objectClass: top objectClass: groupofnames objectClass: nestedgroup objectClass: ipausergroup objectClass: ipaobject objectClass: posixgroup objectClass: ipantgroupattrs ipaUniqueID:…
9.3. 以互动方式使用 ldapmodify 命令
- 要点:您可以在交互模式中修改轻量级目录访问协议 (LDAP) 条目。
- 要点:流程
- 列表:在命令行中,在 ldapmodify 命令后输入 LDAP 数据交换格式(LDIF)语句。 例如,要更改 < testuser> 的电话号码: # ldapmodify -Y GSSAPI -H ldap://<server.example.com> dn: uid=testuser,cn=users,cn=accounts,dc=example,dc=com changetype: modify replace: telephoneNumber telephonenumber: 88888888 请注意,您需要使用 -Y 选项获取 Kerberos ticket。
- 列表:按 Ctlr+D 退出交互模式。
- 列表:或者,在 ldapmodify 命令后提供 LDIF 文件: ldapmodify 命令从 LDIF 文件中读取修改数据 # ldapmodify -Y GSSAPI -H ldap://<server.example.com> -f ~/example.ldif
- 命令/配置摘录:
# ldapmodify -Y GSSAPI -H ldap://<server.example.com> dn: uid=testuser,cn=users,cn=accounts,dc=example,dc=com changetype: modify replace: telephoneNumber telephonenumber: 88888888
# ldapmodify -Y GSSAPI -H ldap://<server.example.com> -f ~/example.ldif9.4. 使用 ldapmodify 保留 IdM 用户
- 要点:您可以使用 ldapmodify 来保留 IdM 用户;即,如何在员工离开公司后停用用户帐户。
- 要点:先决条件
- 列表:您可以作为具有角色的 IdM 用户进行身份验证,来保留用户。
- 列表:以具有角色的 IdM 用户身份登录,来保留用户: $ kinit admin
- 列表:输入 ldapmodify 命令,并指定通用安全服务API(GSSAPI)作为用于身份验证的简单身份验证和安全层(SASL)机制: # ldapmodify -Y GSSAPI SASL/GSSAPI authentication started SASL username: admin@IDM.EXAMPLE.COM SASL SSF: 256 SASL data security layer installed.
- 列表:输入您要保留的用户的 dn: dn: uid=user1,cn=users,cn=accounts,dc=idm,dc=example,dc=com
- 列表:输入 modrdn 作为您要执行的更改的类型: changetype: modrdn
- 列表:为用户指定 newrdn : newrdn: uid=user1
- 命令/配置摘录:
$ kinit admin
# ldapmodify -Y GSSAPI SASL/GSSAPI authentication started SASL username: admin@IDM.EXAMPLE.COM SASL SSF: 256 SASL data security layer installed.第 10 章 使用 ldapsearch 命令搜索 IdM 条目
- 要点:您可以使用 ipa find 命令通过 Identity Management 条目进行搜索。有关 ipa 命令的更多信息,请参阅访问身份管理服务 文档中的 IPA 命令结构 部分。
- 要点:本节介绍了通过 Identity Management 条目使用 ldapsearch 命令行命令的替代搜索选项的基础知识。
10.1. 使用 ldapsearch 命令
- 要点:ldapsearch 命令具有以下格式:
- 要点:例如,要为用户名 user01 搜索基本 LDAP 树的所有条目:
- 列表:要配置身份验证方法,请指定 -x 选项以使用简单绑定或 -Y 选项来设置简单验证和安全层 (SASL) 机制。请注意,如果您使用 -Y GSSAPI 选项,则需要获取 Kerberos ticket。
- 列表:选项是 ldapsearch 命令选项,下表中描述。
- 列表:search_filter 是一个 LDAP 搜索过滤器。
- 列表:list_of_attributes 是搜索结果返回的属性列表。
- 列表:-x 选项告知 ldapsearch 命令通过简单绑定进行身份验证。请注意,如果您没有使用 -D 选项提供可辨识名称 (DN),则身份验证是匿名的。
- 列表:-H 选项将您连接到 ldap://ldap.example.com。
- 命令/配置摘录:
# ldapsearch [-x | -Y mechanism] [options] [search_filter] [list_of_attributes]
# ldapsearch -x -H ldap://ldap.example.com -s sub "(uid=user01)"- 表格样本(共 10 行):
- 选项 | 描述
- -b | 搜索的起点。如果您的搜索参数包含星号 (*) 或其他字符,命令行可以解释为代码,则必须以单引号或双引号括起该值。例如,-b cn=user,ou=Product Development,dc=example,dc=com。
- -D | 要进行身份验证的可辨识名称 (DN)。
- -H | 连接到服务器的 LDAP URL。-H 选项替换了 -h 和 -p 选项。
10.2. 使用 ldapsearch 过滤器
- 要点:ldapsearch 过滤器允许您缩小搜索结果范围。
- 要点:例如,您希望搜索结果包含将通用名称设置为 example 的所有条目:
- 命令/配置摘录:
"(cn=example)"- 表格样本(共 7 行):
- 搜索类型 | 操作符 | 描述
- 相等 | = | 返回与值完全匹配的条目。例如: cn=example。
- 子字符串 | =string* string | 返回所有带有子字符串匹配的条目。例如,cn=exal。星号 () 表示零 (0) 或多个字符。
- 大于或等于 | >= | 返回所有带有大于或等于值的属性的条目。例如,uidNumber >= 5000。
10.3. 其他资源
- 列表:在 RHDS 中搜索条目和调优搜索
第 11 章 为用户的外部调配配置 IdM
- 要点:作为系统管理员,您可以配置身份管理(IdM),来通过管理身份的外部解决方案支持用户的调配。
- 要点:外部调配系统的管理员不必使用 ipa 工具,而是使用 ldapmodify 工具来访问 IdM LDAP。管理员可以 使用 ldapmodify 或 使用 LDIF 文件 从 CLI 来添加单个 stage 用户。
11.1. 为 stage 用户帐户的自动激活准备 IdM 帐户
- 要点:此流程演示了如何配置供外部调配系统使用的两个 IdM 用户帐户。通过使用合适的密码策略将帐户添加到组中,您可以使外部调配系统来管理 IdM 中的用户调配。在以下部分中,外部系统用来添加 stage 用户的用户帐户命名为 provisionator。用来自动激活 stage 用户的用户帐户命名为 activator。
- 要点:先决条件
- 列表:您在其上执行该步骤的主机已注册到 IdM 中。
- 列表:以 IdM 管理员身份登录: $ kinit admin
- 列表:创建名为 provisionator 的用户,其具有用于添加 stage 用户的特权。 添加 provisionator 用户帐户: $ ipa user-add provisionator --first=provisioning --last=account --password 为 provisionator 用户授予所需的特权。 创建一个自定义角色 System Provisioning ,来管理添加 stage 用户: $ ipa role-add --desc "Responsible for provisioning stage users" "System Provisioning" 将 Stage User Pr…
- 列表:添加 provisionator 用户帐户: $ ipa user-add provisionator --first=provisioning --last=account --password
- 列表:为 provisionator 用户授予所需的特权。 创建一个自定义角色 System Provisioning ,来管理添加 stage 用户: $ ipa role-add --desc "Responsible for provisioning stage users" "System Provisioning" 将 Stage User Provisioning 特权添加到该角色。这个特权提供了添加 stage 用户的能力: $ ipa role-add-privilege "System Provisioning" --privileges="Stage User Provisioning" 将 provisionato…
- 列表:创建一个自定义角色 System Provisioning ,来管理添加 stage 用户: $ ipa role-add --desc "Responsible for provisioning stage users" "System Provisioning"
- 命令/配置摘录:
$ kinit admin
$ ipa user-add provisionator --first=provisioning --last=account --password11.2. 配置 IdM stage用户帐户的自动激活
- 要点:您可以创建一个脚本来激活 stage 用户。系统在指定的时间间隔自动运行脚本。这样可确保新用户帐户被自动激活,并在创建后很快可用。
- 要点:这对于仅在一个 IdM 服务器上启用激活过程足够了。
- 列表:provisionator 和 activator 帐户在 IdM 中存在。详情请参阅 为 stage 用户帐户的自动激活准备 IdM 帐户。
- 列表:在运行该流程的 IdM 服务器上您需要有 root 权限。
- 列表:以 IdM 管理员身份登录。
- 列表:您信任外部调配系统。
- 列表:为激活帐户生成 keytab 文件: # ipa-getkeytab -s server.idm.example.com -p "activator" -k /etc/krb5.ipa-activation.keytab 如果您要在多个 IdM 服务器上启用激活过程,请仅在一个服务器上生成 keytab 文件。然后,将 keytab 文件复制到其他服务器上。
- 列表:创建一个包含以下内容的 /usr/local/sbin/ipa-activate-all 脚本来激活所有用户: #!/bin/bash kinit -k -i activator ipa stageuser-find --all --raw | grep " uid:" | cut -d ":" -f 2 | while read uid; do ipa stageuser-activate ${uid}; done
- 命令/配置摘录:
# ipa-getkeytab -s server.idm.example.com -p "activator" -k /etc/krb5.ipa-activation.keytab
#!/bin/bash kinit -k -i activator ipa stageuser-find --all --raw | grep " uid:" | cut -d ":" -f 2 | while read uid; do ipa stageuser-activate ${uid}; done- 注意:重要 假设外部调配系统的所有者已经验证了用户,并且在脚本将它们添加到 IdM 之前,它们不需要在 IdM 端进行额外的验证。
11.3. 添加 LDIF 文件中定义的 IdM stage 用户
- 要点:按照以下流程访问 IdM LDAP ,并使用 LDIF 文件添加 stage 用户。虽然下例中演示了添加一个单独的用户,但可以以批量模式在一个文件中添加多个用户。
- 要点:先决条件
- 列表:IdM 管理员已为其创建了 provisionator 帐户及密码。详情请参阅 为 stage 用户帐户的自动激活准备 IdM 帐户。
- 列表:作为外部管理员,您知道 provisionator 帐户的密码。
- 列表:您可以从 LDAP 服务器通过 SSH 连接到 IdM 服务器。
- 列表:您可以提供 IdM stage 用户必须有的最小的属性集来允许正确处理用户生命周期,即: 可区分的名称 (dn) 通用名称 (cn) 姓氏 (sn) uid
- 列表:可区分的名称 (dn)
- 列表:通用名称 (cn)
- 命令/配置摘录:
dn: uid=stageidmuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: inetorgperson uid: stageidmuser sn: surname givenName: first_name cn: full_name
$ scp add-stageidmuser.ldif provisionator@server.idm.example.com:/provisionator/ Password: add-stageidmuser.ldif 100% 364 217.6KB/s 00:0011.4. 使用 ldapmodify 直接从 CLI 添加 IdM stage 用户
- 要点:按照以下流程访问身份管理(IdM) LDAP,并使用 ldapmodify 工具添加 stage 用户。
- 要点:先决条件
- 列表:IdM 管理员已为其创建了 provisionator 帐户和密码。详情请参阅 为 stage 用户帐户的自动激活准备 IdM 帐户。
- 列表:作为外部管理员,您知道 provisionator 帐户的密码。
- 列表:您可以从 LDAP 服务器通过 SSH 连接到 IdM 服务器。
- 列表:您可以提供 IdM stage 用户必须有的最小的属性集来允许正确处理用户生命周期,即: 可区分的名称 (dn) 通用名称 (cn) 姓氏 (sn) uid
- 列表:可区分的名称 (dn)
- 列表:通用名称 (cn)
- 命令/配置摘录:
$ ssh provisionator@server.idm.example.com Password:
$ kinit provisionator11.5. 其他资源
- 列表:使用 ldapmodify 在外部管理 IdM 用户
第 12 章 为用户、主机和服务管理 Kerberos 主体别名
- 要点:当您创建新用户、主机或服务时,会自动添加以下格式的 Kerberos 主体:
- 要点:管理员可以让用户、主机或服务使用别名对 Kerberos 应用进行身份验证。这在以下情况下很有用:
- 列表:user_name@REALM
- 列表:host/host_name@REALM
- 列表:service_name/host_name@REALM
- 列表:用户名已更改,用户希望使用之前的用户名和新用户名登录。
- 列表:即使 IdM Kerberos 域与电子邮件域不同,用户也需要使用电子邮件地址登录。
12.1. 添加一个 Kerberos 主体别名
- 要点:您可以在身份管理(IdM)环境中将别名名称与现有 Kerberos 主体关联。这增强了安全性,并简化了 IdM 域中的身份验证过程。
- 要点:流程
- 列表:要将别名名称 useralias 添加到帐户 user 中,请输入: # ipa user-add-principal <user> <useralias> -------------------------------- Added new aliases to user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM, useralias@IDM.EXAMPLE.COM 要为主机或服务添加一个别名,请分别使用 ipa host-add-principal 或 ipa service-…
- 命令/配置摘录:
# ipa user-add-principal <user> <useralias> -------------------------------- Added new aliases to user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM, useralias@IDM.EXAMPLE.COM
# kinit -C <useralias> Password for <user>@IDM.EXAMPLE.COM:12.2. 删除一个 Kerberos 主体别名
- 要点:您可以在其身份管理(IdM)环境中删除与 Kerberos 主体关联的别名名称。
- 要点:流程
- 列表:要从帐户 user 中删除别名 useralias,请输入: # ipa user-remove-principal <user> <useralias> -------------------------------- Removed aliases from user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM 要从主机或服务中删除一个别名,请分别使用 ipa host-remove-principal 或 ipa service-remove-principal 命令。 请注意…
- 命令/配置摘录:
# ipa user-remove-principal <user> <useralias> -------------------------------- Removed aliases from user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM
# ipa user-show <user> User login: user ... Principal name: user@IDM.EXAMPLE.COM ... # ipa user-remove-principal user user ipa: ERROR: invalid 'krbprincipalname': at least one value equal to the canonical principal name must be present12.3. 添加一个 Kerberos 企业主体别名
- 要点:您可以在身份管理(IdM)环境中将企业级别名名称与现有 Kerberos 企业主体关联。企业主体别名可以使用任何域后缀,但用户主体名称(UPN)后缀、NetBIOS 名称或可信活动目录林域的域名除外。
- 要点:流程
- 列表:将企业主体别名 user@example.com 添加到 user 帐户中: # ipa user-add-principal <user> <user\@example.com> -------------------------------- Added new aliases to user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM, user@example.com@IDM.EXAMPLE.COM 要向主机或服务添加一个企业别名,请分别使用 ipa host-add-p…
- 命令/配置摘录:
# ipa user-add-principal <user> <user\\@example.com> -------------------------------- Added new aliases to user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM, user\@example.com@IDM.EXAMPLE.COM
ipa: ERROR: The realm for the principal does not match the realm for this IPA server.- 注意:注意 在添加或删除企业级别名时,请使用两个反斜杠(\)转义 @ 符号。否则,shell 将 @ 符号解释为 Kerberos 域名称的一部分,并导致以下错误: ipa: ERROR: The realm for the principal does not match the realm for this IPA server.
12.4. 删除 Kerberos 企业主体别名
- 要点:您可以在其身份管理(IdM)环境中删除与 Kerberos 企业主体关联的企业别名名称。
- 要点:流程
- 列表:要从帐户 user 中删除企业主体别名 user@example.com,请输入: # ipa user-remove-principal <user> <user\@example.com> -------------------------------- Removed aliases from user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM 要从主机或服务中删除一个别名,请分别使用 ipa host-remove-principal 或 ipa service-remo…
- 命令/配置摘录:
# ipa user-remove-principal <user> <user\\@example.com> -------------------------------- Removed aliases from user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM
ipa: ERROR: The realm for the principal does not match the realm for this IPA server- 注意:注意 在添加或删除企业级别名时,请使用两个反斜杠(\)转义 @ 符号。否则,shell 将 @ 符号解释为 Kerberos 域名称的一部分,并导致以下错误: ipa: ERROR: The realm for the principal does not match the realm for this IPA server
第 13 章 使用 PAC 信息增强 Kerberos 安全性
- 要点:从 RHEL 8.5 开始,您默认使用带有 Privilege Attribute Certificate(PAC)信息的身份管理(IdM)。您还可以在 RHEL 8.5 之前安装的 IdM 部署中启用安全标识符(SID)。
13.1. IdM 中使用特权属性证书 (PAC)
- 要点:为提高安全性,身份管理(IdM)默认发出带有 Privilege Attribute 证书(PAC)信息的 Kerberos 票据。PAC 包含有关 Kerberos 主体的丰富信息,包括其安全标识符 (SID)、组成员资格和主目录信息。
- 要点:默认情况下,Microsoft Active Directory (AD)使用的 SID 是从不重复使用的全局唯一标识符。SID 表达多个命名空间:每个域都有一个 SID,它是每个对象的 SID 中的前缀。
13.2. 在 IdM 中启用安全标识符 (SID)
- 要点:如果您在 RHEL 8.5 之前安装了 IdM,且您还没有配置 AD 域的信任,您可能没有为 IdM 对象生成安全标识符(SID)。这是因为之前,生成 SID 的唯一方法是运行 ipa-adtrust-install 命令将 Trust Controller 角色添加到 IdM 服务器。
- 要点:从 RHEL 8.6 开始,IdM 中的 Kerberos 要求您的 IdM 对象具有 SID,这对基于 Privilege Access 证书 (PAC) 信息的安全性是必需的。
- 列表:在 RHEL 8.5 之前已安装了 IdM。
- 列表:还没有运行 ipa-sidgen 任务,它是使用 Active Directory 域配置信任的一部分。
- 列表:您可以作为 IdM admin 帐户进行身份验证。
- 列表:启用 SID 使用并触发 SIDgen 任务,以便为现有的用户和组生成 SID。此任务可能是资源密集型: [root@server ~]# ipa config-mod --enable-sid --add-sids
- 列表:验证 IdM admin 用户帐户条目是否具有 ipantsecurityidentifier 属性,其具有以 -500 结尾的 SID,为域管理员保留 SID: [root@server ~]# ipa user-show admin --all | grep ipantsecurityidentifier ipantsecurityidentifier: S-1-5-21-2633809701-976279387-419745629-500
- 列表:IdM 中使用特权属性证书 (PAC)
- 命令/配置摘录:
[root@server ~]# ipa config-mod --enable-sid --add-sids
[root@server ~]# ipa user-show admin --all | grep ipantsecurityidentifier ipantsecurityidentifier: S-1-5-21-2633809701-976279387-419745629-500第 14 章 管理 Kerberos 票据策略
- 要点:身份管理(IdM)中的 Kerberos 票据策略对 Kerberos 票据访问、持续时间和续订设置了限制。您可以为运行在 IdM 服务器上的密钥分发中心(KDC)配置 Kerberos 票据策略。
14.1. IdM KDC 的角色
- 要点:身份管理的身份验证机制使用由密钥分发中心(KDC)建立的 Kerberos 基础设施。KDC 是可信赖的权威,其存储凭证信息,并确保来自 IdM 网络内实体的数据的真实性。
- 要点:每个 IdM 用户、服务和主机都充当 Kerberos 客户端,由唯一的 Kerberos 主体 识别:
- 列表:对于用户:identifier@REALM,如 admin@EXAMPLE.COM
- 列表:对于服务:service/fully-qualified-hostname@REALM,如 http/server.example.com@EXAMPLE.COM
- 列表:对于主机: host/fully-qualified-hostname@REALM,如 host/client.example.com@EXAMPLE.COM
- 列表:Kerberos 客户端通过作为 Kerberos 主体进行身份验证来向 KDC 识别自己。例如,IdM 用户执行 kinit username ,并提供其密码。
- 列表:KDC 会检查数据库中的主体,验证客户端,并评估 Kerberos 票据策略 来确定是否授予请求。
- 列表:KDC 根据适当的票据策略,签发一个具有生命周期和 验证指标 的客户端票据授予票(TGT)。
14.2. IdM Kerberos 票据策略类型
- 要点:IdM Kerberos 票据策略实现以下票据策略类型:
- 要点:要保护具有不同安全级别的 Kerberos 服务,您可以定义连接策略来强制执行规则,客户端基于这些规则来检索票据授予票(TGT)。
- 列表:要为每个身份验证指标配置不同的全局票据生命周期值,请参阅 根据身份验证指标配置全局票据策略。
- 列表:要为应用任何身份验证方法的单个用户定义票据生命周期值,请参阅 为用户配置默认的票据策略。
- 列表:要为每个只应用到单独用户的身份验证指标定义单个票据生命周期值,请参阅 为用户配置单独的身份验证指标票据策略。
14.3. Kerberos 认证指示符
- 要点:Kerberos 密钥分发中心(KDC)根据客户端使用哪个预身份验证机制来证明其身份,来将 身份验证指标 附加到票据授予票(TGT):
- 要点:然后 KDC 将来自 TGT 的身份验证指标附加到来自它的任何服务票据请求。KDC 强制执行基于验证指标的策略,如服务访问控制、最长票据生命周期和最长续订期限。
- 列表:为 IdM 服务强制执行身份验证指标
- 列表:在 IdM 客户端上为 sudo 启用 GSSAPI 身份验证,并强制实施 Kerberos 身份验证指标
14.4. 为 IdM 服务强制执行身份验证指标
- 要点:身份验证(IdM)支持的验证机制在身份验证强度方面存在差异。例如,使用一次性密码(OTP)与标准密码(OTP)的结合来获取初始 Kerberos 票据授予票(TGT)被视为比仅使用标准密码进行身份验证更加安全。
- 要点:通过将身份验证指示符与特定的 IdM 服务相关联,作为 IdM 管理员,您可以配置服务,以便只有使用这些特定预身份验证机制的用户才能获得他们可以访问该服务的初始 Kerberos 票据授予票(TGT)。
- 列表:只有使用更强大的身份验证方法获取其初始 TGT(如一次性密码(OTP))的用户才能访问对安全性至关重要的服务,比如 VPN。
- 列表:使用更简单的身份验证方法获取其初始 TGT(如密码)的用户只能访问非关键服务,如本地登录。
14.4.1. 创建 IdM 服务条目及其 Kerberos keytab
- 要点:为运行在 IdM 主机上的服务添加 IdM 服务 条目会创建相应的 Kerberos 主体,并允许服务请求 SSL 证书、Kerberos keytab 或两者。
- 要点:以下流程描述了创建 IdM 服务条目,并为加密与该服务的通信生成关联的 Kerberos keytab。
- 列表:您的服务可以存储 Kerberos 主体、SSL 证书,或两者。
- 列表:使用 ipa service-add 命令添加 IdM 服务,来创建与其关联的 Kerberos 主体。例如,要为运行在主机 client.example.com 上的 testservice 应用程序创建 IdM 服务条目: [root@client ~]# ipa service-add testservice/client.example.com ------------------------------------------------------------- Modified service "testservice/client.example.com@EXAMPLE.COM" -----------------…
- 列表:为客户端上的服务生成并存储 Kerberos keytab。 [root@client ~]# ipa-getkeytab -k /etc/testservice.keytab -p testservice/client.example.com Keytab successfully retrieved and stored in: /etc/testservice.keytab
- 列表:使用 ipa service-show 命令显示 IdM 服务的信息。 [root@server ~]# ipa service-show testservice/client.example.com Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Keytab: True Managed by: client.example.com
- 列表:使用 klist 命令显示服务的 Kerberos keytab 的内容。 [root@server etc]# klist -ekt /etc/testservice.keytab Keytab name: FILE:/etc/testservice.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (aes256-cts-hm…
- 命令/配置摘录:
[root@client ~]# ipa service-add testservice/client.example.com ------------------------------------------------------------- Modified service "testservice/client.example.com@EXAMPLE.COM" ------------------------------------------------------------- Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Managed by: client.example.com
[root@client ~]# ipa-getkeytab -k /etc/testservice.keytab -p testservice/client.example.com Keytab successfully retrieved and stored in: /etc/testservice.keytab14.4.2. 使用 IdM CLI 将身份验证指示符与 IdM 服务相关联
- 要点:作为身份管理(IdM)管理员,您可以配置主机或服务,来要求客户端应用程序提供的服务票据包含特定的验证指标。例如,您可以确保在获取 Kerberos 票据授予票据(TGT)时,只有使用带有密码的有效的 IdM 双因素身份验证令牌的用户才能访问该主机或服务。
- 要点:按照以下流程将服务配置为需要来自传入服务票据请求的特定的 Kerberos 身份验证指标。
- 列表:您已为运行在 IdM 主机上的服务创建了 IdM 服务条目。请参阅 创建 IdM 服务条目及其 Kerberos keytab。
- 列表:您已在 IdM 中获得了管理用户的票据授予票据。
- 列表:使用 ipa service-mod 命令为服务指定一个或多个所需的身份验证指标,用 --auth-ind 参数标识。 例如,要求用户通过智能卡或 OTP 身份验证来检索主机 client.example.com 上 testservice 主体的服务票据: [root@server ~]# ipa service-mod testservice/client.example.com@EXAMPLE.COM --auth-ind otp --auth-ind pkinit ------------------------------------------------------------- Modified service "…
- 列表:要从服务中删除所有验证指标,请提供一个空的指标列表: [root@server ~]# ipa service-mod testservice/client.example.com@EXAMPLE.COM --auth-ind '' ------------------------------------------------------ Modified service "testservice/client.example.com@EXAMPLE.COM" ------------------------------------------------------ Principal name: testservice/c…
- 列表:使用 ipa service-show 命令显示关于 IdM 服务的信息,包括其所需的身份验证指标。 [root@server ~]# ipa service-show testservice/client.example.com Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Authentication Indicators: otp, pkinit Keytab: True Managed by: client.example.…
- 列表:为 IdM 服务检索 Kerberos 服务票据
- 命令/配置摘录:
host/server.example.com@EXAMPLE.COM HTTP/server.example.com@EXAMPLE.COM ldap/server.example.com@EXAMPLE.COM DNS/server.example.com@EXAMPLE.COM cifs/server.example.com@EXAMPLE.COM
[root@server ~]# ipa service-mod testservice/client.example.com@EXAMPLE.COM --auth-ind otp --auth-ind pkinit ------------------------------------------------------------- Modified service "testservice/client.example.com@EXAMPLE.COM" ------------------------------------------------------------- Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Authentication Indicators: otp, pkinit Managed by: client.example.com- 注意:警告 不要 将身份验证指标分配给内部 IdM 服务。以下 IdM 服务无法执行 PKINIT 和多因素身份验证方法所需的交互式身份验证步骤: host/server.example.com@EXAMPLE.COM HTTP/server.example.com@EXAMPLE.COM ldap/server.example.com@EXAMPLE.COM DNS/server.example.com@EXAMPLE.COM cifs/server.example.com@EXAMPLE.COM
14.4.3. 使用 IdM Web UI 将验证指标与 IdM 服务关联
- 要点:作为身份管理(IdM)管理员,您可以配置主机或服务,以便客户端应用程序所提供的服务票据包含特定的身份验证指标。例如,您可以确保在获取 Kerberos 票据授予票据(TGT)时,只有使用带有密码的有效的 IdM 双因素身份验证令牌的用户才能访问该主机或服务。
- 要点:按照以下流程,使用 IdM Web UI 配置主机或服务,来要求来自传入票据请求的特定的 Kerberos 身份验证指标。
- 列表:您以管理用户的身份已登录到 IdM Web UI。
- 列表:选择 Identity → Hosts 或 Identity → Services。
- 列表:单击所需的主机或服务的名称。
- 列表:在 Authentication indicators 下,选择所需的验证方法。 例如,选择 OTP 来确保在获取 Kerberos TGT 时,只有使用带有密码的有效的 IdM 双因素身份验证令牌的用户才能访问主机或服务。 如果您选择 OTP 和 RADIUS,那么在获取 Kerberos TGT 时使用带有密码的有效的 IdM 双因素身份验证令牌的用户,以及 使用 RADIUS 服务器获取 Kerberos TGT 的用户,都将被允许访问。
- 列表:例如,选择 OTP 来确保在获取 Kerberos TGT 时,只有使用带有密码的有效的 IdM 双因素身份验证令牌的用户才能访问主机或服务。
- 列表:如果您选择 OTP 和 RADIUS,那么在获取 Kerberos TGT 时使用带有密码的有效的 IdM 双因素身份验证令牌的用户,以及 使用 RADIUS 服务器获取 Kerberos TGT 的用户,都将被允许访问。
14.4.4. 为 IdM 服务检索 Kerberos 服务票据
- 要点:以下流程描述了为 IdM 服务检索 Kerberos 服务票据。您可以使用此流程来测试 Kerberos 票据策略,比如强制票据授予票据(TGT)中存在某些 Kerberos 验证指标。
- 要点:先决条件
- 列表:如果您正在使用的服务不是内部 IdM 服务,您已为其创建了相应的 IdM 服务 条目。请参阅 创建 IdM 服务条目及其 Kerberos keytab。
- 列表:您有一个 Kerberos 票据授予票据(TGT)。
- 列表:使用带-S 选项的 kvno 命令来检索服务票据,并指定 IdM 服务的名称和管理它的主机的完全限定域名。 [root@server ~]# kvno -S testservice client.example.com testservice/client.example.com@EXAMPLE.COM: kvno = 1 注意 如果您需要访问 IdM 服务以及当前的票据授予票据(TGT)没有所需的与之关联的 Kerberos 身份验证指标,请使用 kdestroy 命令清除当前的 Kerberos 凭证缓存,并检索新的 TGT: [root@server ~]# kdestroy 例如,如果您最初通过使用密码的身份验证来获取了 …
- 列表:使用 klist 命令来验证服务票据是否在默认的 Kerberos 凭据缓存中。 [root@server etc]# klist_ Ticket cache: KCM:1000 Default principal: admin@EXAMPLE.COM Valid starting Expires Service principal 04/01/2020 12:52:42 04/02/2020 12:52:39 krbtgt/EXAMPLE.COM@EXAMPLE.COM 04/01/2020 12:54:07 04/02/2020 12:52:39 testservice/client.example.com@EXAMPLE.C…
- 命令/配置摘录:
[root@server ~]# kvno -S testservice client.example.com testservice/client.example.com@EXAMPLE.COM: kvno = 1
[root@server ~]# kdestroy- 注意:注意 如果您需要访问 IdM 服务以及当前的票据授予票据(TGT)没有所需的与之关联的 Kerberos 身份验证指标,请使用 kdestroy 命令清除当前的 Kerberos 凭证缓存,并检索新的 TGT: [root@server ~]# kdestroy 例如,如果您最初通过使用密码的身份验证来获取了 TGT,并且您需要访问具有与之相关联的 pkinit身份验证指标的 IdM 服务,请销毁当前的凭证缓存,并使用智能卡重新进行身份验证。请参阅 Kerberos 身份验证指标。
14.4.5. 其他资源
- 列表:Kerberos 认证指示符
14.5. 配置全局票据生命周期策略
- 要点:全局票据策略适用于所有服务票据,也适用于没有定义任何按用户的票据策略的用户。
- 要点:以下流程描述了使用 ipa krbtpolicy-mod 命令调整全局 Kerberos 票据策略的最大票据生命周期和最大票据续订期限。
- 列表:--maxlife 最长票据生命周期(以秒为单位)
- 列表:--maxrenew 最长续订期限(以秒为单位)
- 列表:修改全局票据策略: [root@server ~]# ipa krbtpolicy-mod --maxlife=$((86060)) --maxrenew=$((246060)) Max life: 28800 Max renew: 86400 在本例中,最长生命周期设置为 8 小时(8 * 60 分钟 * 60 秒),最长续订期限设置为一天(24 * 60 分钟 * 60 秒)。
- 列表:可选:将全局 Kerberos 票据策略重置为默认安装值: [root@server ~]# ipa krbtpolicy-reset Max life: 86400 Max renew: 604800
- 列表:显示全局票据策略: [root@server ~]# ipa krbtpolicy-show Max life: 28800 Max renew: 86640
- 列表:为用户配置默认的票据策略
- 命令/配置摘录:
[root@server ~]# ipa krbtpolicy-mod --maxlife=$((8*60*60)) --maxrenew=$((24*60*60)) Max life: 28800 Max renew: 86400
[root@server ~]# ipa krbtpolicy-reset Max life: 86400 Max renew: 60480014.6. 根据身份验证指标配置全局票据策略
- 要点:按照以下流程,为每个身份验证指标调整全局最长票据生命周期和最长可续订期限。这些设置适用于没有定义按用户的票据策略的用户。
- 要点:使用 ipa krbtpolicy-mod 命令来指定 Kerberos 票据的全局最长生命周期或最大可用期限,具体取决于它们所附加的 身份验证指标。
- 列表:例如,将全局双因素票据生命周期和续订期限值设置为一周,将全局智能卡票据生命周期和续订期限值设置为两周: [root@server ~]# ipa krbtpolicy-mod --otp-maxlife=604800 --otp-maxrenew=604800 --pkinit-maxlife=172800 --pkinit-maxrenew=172800
- 列表:显示全局票据策略: [root@server ~]# ipa krbtpolicy-show Max life: 86400 OTP max life: 604800 PKINIT max life: 172800 Max renew: 604800 OTP max renew: 604800 PKINIT max renew: 172800 请注意,OTP 和 PKINIT 值与全局默认的 Max life 和 Max renew 值不同。
- 列表:krbtpolicy-mod 命令的身份验证指标选项
- 列表:为用户配置默认的票据策略
- 列表:为用户配置单独的身份验证指标票据策略
- 命令/配置摘录:
[root@server ~]# ipa krbtpolicy-mod --otp-maxlife=604800 --otp-maxrenew=604800 --pkinit-maxlife=172800 --pkinit-maxrenew=172800
[root@server ~]# ipa krbtpolicy-show Max life: 86400 OTP max life: 604800 PKINIT max life: 172800 Max renew: 604800 OTP max renew: 604800 PKINIT max renew: 17280014.7. 为用户配置默认的票据策略
- 要点:您可以定义一个仅适用于单个用户的 Kerberos 票据策略。这些按用户的设置会覆盖所有验证指标的全局票据策略。
- 要点:使用 ipa krbtpolicy-mod username 命令,并至少指定以下参数之一:
- 列表:--maxlife 最长票据生命周期(以秒为单位)
- 列表:--maxrenew 最长续订期限(以秒为单位)
- 列表:例如,将 IdM admin 用户的最长票据生命周期设置为两天,将最长续订期限设置为 2 周: [root@server ~]# ipa krbtpolicy-mod admin --maxlife=172800 --maxrenew=1209600 Max life: 172800 Max renew: 1209600
- 列表:可选:为用户重置票据策略: [root@server ~]# ipa krbtpolicy-reset admin
- 列表:显示应用到用户的有效 Kerberos 票据策略: [root@server ~]# ipa krbtpolicy-show admin Max life: 172800 Max renew: 1209600
- 列表:配置全局票据生命周期策略
- 命令/配置摘录:
[root@server ~]# ipa krbtpolicy-mod admin --maxlife=172800 --maxrenew=1209600 Max life: 172800 Max renew: 1209600
[root@server ~]# ipa krbtpolicy-reset admin14.8. 为用户配置单独的身份验证指标票据策略
- 要点:作为管理员,您可以为每个身份验证指标不同的用户定义 Kerberos 票据策略。例如,您可以将策略配置为允许 IdM admin 用户续订两天的票据(如果是通过 OTP 身份验证获取的票据);或者续订一周的票据(是通过智能卡身份验证获取的票据)。
- 要点:这些按身份验证的指标设置将覆盖 用户的 默认票据策略、全局的 默认票据策略,以及任何 全局的 身份验证指标票据策略。
- 列表:例如,要允许 IdM admin 用户续订两天的 Kerberos 票据(如果是使用一次性密码身份验证获取的),请设置 --otp-maxrenew 选项: [root@server ~]# ipa krbtpolicy-mod admin --otp-maxrenew=$((22460*60)) OTP max renew: 172800
- 列表:可选:为用户重置票据策略: [root@server ~]# ipa krbtpolicy-reset username
- 列表:显示应用到用户的有效 Kerberos 票据策略: [root@server ~]# ipa krbtpolicy-show admin Max life: 28800 Max renew: 86640
- 列表:krbtpolicy-mod 命令的身份验证指标选项
- 列表:为用户配置默认的票据策略
- 列表:配置全局票据生命周期策略
- 命令/配置摘录:
[root@server ~]# ipa krbtpolicy-mod admin --otp-maxrenew=$((2*24*60*60)) OTP max renew: 172800
[root@server ~]# ipa krbtpolicy-reset username14.9. krbtpolicy-mod 命令的身份验证指标选项
- 要点:使用以下参数为身份验证指标指定值:
- 表格样本(共 5 行):
- 身份验证指标 | 最长生命周期的参数 | 最长续订期限的参数
- otp | --otp-maxlife | --otp-maxrenew
- radius | --radius-maxlife | --radius-maxrenew
- pkinit | --pkinit-maxlife | --pkinit-maxrenew
第 15 章 IdM 中的 Kerberos PKINIT 身份验证
- 要点:Kerberos (PKINIT)中初始身份验证的公钥加密是 Kerberos 的预身份验证机制。身份管理(IdM)服务器包括用于 Kerberos PKINIT 身份验证的机制。
15.1. 默认 PKINIT 配置
- 要点:IdM 服务器上的默认 PKINIT 配置取决于证书颁发机构(CA)配置。
- 表格样本(共 4 行):
- CA 配置 | PKINIT 配置
- 没有 CA,不提供外部 PKINIT 证书 | 本地 PKINIT:IdM 仅将 PKINIT 用于服务器上的内部用途。
- 没有 CA,为 IdM 提供外部 PKINIT 证书 | IdM 使用外部 Kerberos 密钥分发中心(KDC)证书和 CA 证书来配置 PKINIT。
- 有集成的 CA | IdM 使用 IdM CA 签名的证书配置 PKINIT。
15.2. 显示当前的 PKINIT 配置
- 要点:IdM 提供了您可用来查询域中 PKINIT 配置的多个命令。
- 要点:流程
- 列表:要确定域中的 PKINIT 状态,请使用 ipa pkinit-status 命令: $ ipa pkinit-status Server name: server1.example.com PKINIT status: enabled [...output truncated...] Server name: server2.example.com PKINIT status: disabled [...output truncated...] 命令将 PKINIT 配置状态显示为 enabled 或 disabled: enabled: PKINIT 是使用集成的 IdM CA 签名的证书或外部 PKINIT 证书…
- 列表:enabled: PKINIT 是使用集成的 IdM CA 签名的证书或外部 PKINIT 证书配置的。
- 列表:disabled :IdM 仅将 PKINIT 用于 IdM 服务器上的内部用途。
- 列表:要列出具有支持 IdM 客户端的 PKINIT 的活跃的 Kerberos 密钥分发中心(KDC)的 IdM 服务器,请在任何服务器上使用 ipa config-show 命令: $ ipa config-show Maximum username length: 32 Home directory base: /home Default shell: /bin/sh Default users group: ipausers [...output truncated...] IPA masters capable of PKINIT: server1.example.com [...output truncated…
- 命令/配置摘录:
$ ipa pkinit-status Server name: server1.example.com PKINIT status: enabled [...output truncated...] Server name: server2.example.com PKINIT status: disabled [...output truncated...]
$ ipa config-show Maximum username length: 32 Home directory base: /home Default shell: /bin/sh Default users group: ipausers [...output truncated...] IPA masters capable of PKINIT: server1.example.com [...output truncated...]15.3. 在 IdM 中配置 PKINIT
- 要点:如果您的 IdM 服务器在 PKINIT 被禁用的情况下运行,请使用以下步骤启用它。例如,如果您使用 ipa-server-install 或 ipa-replica-install 工具传递了 --no-pkinit 选项,则服务器在 PKINIT 禁用的情况下运行。
- 要点:先决条件
- 列表:确保安装了证书颁发机构(CA)的所有 IdM 服务器都在同一域级别上运行。
- 列表:检查服务器上是否启用了 PKINIT: # kinit admin Password for admin@IDM.EXAMPLE.COM: # ipa pkinit-status --server=server.idm.example.com 1 server matched ---------------- Server name: server.idm.example.com PKINIT status:enabled ---------------------------- Number of entries returned 1 ---------------------------- 如果 PKINIT 被禁用了,您将看…
- 列表:如果您正在运行没有 CA 的 IdM: 在 IdM 服务器上,安装签名了 Kerberos 密钥分发中心(KDC)证书的 CA 证书: # ipa-cacert-manage install -t CT,C,C ca.pem 要更新所有 IPA 主机,请在所有副本和客户端上重复 ipa-certupdate 命令: # ipa-certupdate 使用 ipa-cacert-manage list 命令检查 CA 证书是否已添加。例如: # ipa-cacert-manage list CN=CA,O=Example Organization The ipa-cacert-manage command was successfu…
- 列表:在 IdM 服务器上,安装签名了 Kerberos 密钥分发中心(KDC)证书的 CA 证书: # ipa-cacert-manage install -t CT,C,C ca.pem
- 列表:要更新所有 IPA 主机,请在所有副本和客户端上重复 ipa-certupdate 命令: # ipa-certupdate
- 列表:使用 ipa-cacert-manage list 命令检查 CA 证书是否已添加。例如: # ipa-cacert-manage list CN=CA,O=Example Organization The ipa-cacert-manage command was successful
- 命令/配置摘录:
# kinit admin Password for admin@IDM.EXAMPLE.COM: # ipa pkinit-status --server=server.idm.example.com 1 server matched ---------------- Server name: server.idm.example.com PKINIT status:enabled ---------------------------- Number of entries returned 1 ----------------------------
# ipa pkinit-status --server server.idm.example.com ----------------- 0 servers matched ----------------- ---------------------------- Number of entries returned 0 ----------------------------15.4. 其他资源
- 列表:PKINIT 配置
第 16 章 维护 IdM Kerberos keytab 文件
- 要点:了解更多有关 Kerberos keytab 文件是什么,以及身份管理(IdM)如何使用它们来允许服务使用 Kerberos 安全地进行身份验证。
- 要点:您可以使用这些信息来了解您应该保护这些敏感文件的原因,并对 IdM 服务之间的通信问题进行故障排除。
16.1. Identity Management 如何使用 Kerberos keytab 文件
- 要点:Kerberos keytab 是包含 Kerberos 主体及其对应加密密钥的文件。主机、服务、用户和脚本可以使用 keytab 安全地对 Kerberos 密钥分发中心 (KDC) 进行身份验证,而无需人工交互。
- 要点:IdM 服务器上的每个 IdM 服务都有存储在 Kerberos 数据库中的唯一 Kerberos 主体。例如,如果 IdM 服务器 east.idm.example.com 和 west.idm.example.com 提供 DNS 服务,IdM 会创建 2 个唯一 DNS Kerberos 主体来识别这些服务,它遵循命名规则 <service>/host.domain.com@REALM.COM:
- 列表:DNS/east.idm.example.com@IDM.EXAMPLE.COM
- 列表:DNS/west.idm.example.com@IDM.EXAMPLE.COM
- 列表:验证 Kerberos keytab 文件是否与 IdM 数据库同步
- 列表:IdM Kerberos keytab 文件内容列表
- 命令/配置摘录:
[root@idmserver ~]# klist -ekt /etc/krb5.keytab Keytab name: FILE:/etc/krb5.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (aes256-cts-hmac-sha1-96) 2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (aes128-cts-hmac-sha1-96) 2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (camellia128-cts-cmac) 2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (camellia256-cts-cmac)16.2. 验证 Kerberos keytab 文件是否与 IdM 数据库同步
- 要点:当您更改 Kerberos 密码时,IdM 会自动生成一个新的对应的 Kerberos 密钥,并递增其密钥版本号 (KVNO)。如果没有使用新密钥和 KVNO 更新 Kerberos keytab,则任何依赖于该 keytab 来检索有效密钥的服务可能无法对 Kerberos 密钥分发中心 (KDC) 进行身份验证。
- 要点:如果您的其中一个 IdM 服务无法与另一个服务通信,请使用以下步骤验证您的 Kerberos keytab 文件是否与 IdM 数据库中存储的密钥同步。如果它们没有同步,请使用更新的密钥和 KVNO 检索 Kerberos keytab。这个示例比较并检索 IdM 服务器的更新 DNS 主体。
- 列表:您必须作为 IdM admin 帐户进行身份验证来检索 keytab 文件
- 列表:您必须以 root 帐户身份验证来修改其他用户拥有的 keytab 文件
- 列表:显示您要验证的 keytab 中的主体的 KVNO。在以下示例中,/etc/named.keytab 文件具有 KVNO 为 2 的 DNS/server1.idm.example.com@EXAMPLE.COM 主体的密钥。 [root@server1 ~]# klist -ekt /etc/named.keytab Keytab name: FILE:/etc/named.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 2 11/26/2021 13:…
- 列表:显示 IdM 数据库中存储的主体的 KVNO。在本例中,IdM 数据库中密钥的 KVNO 与 keytab 中的 KVNO 不匹配。 [root@server1 ~]# kvno DNS/server1.idm.example.com@EXAMPLE.COM DNS/server1.idm.example.com@EXAMPLE.COM: kvno = 3
- 列表:作为 IdM admin 帐户进行身份验证。 [root@server1 ~]# kinit admin Password for admin@IDM.EXAMPLE.COM:
- 列表:为主体检索更新的 Kerberos 密钥,并将其存储在其 keytab 中。以 root 用户身份执行此步骤,以便您可以修改 /etc/named.keytab 文件,该文件归 named 用户所有。 [root@server1 ~]# ipa-getkeytab -s server1.idm.example.com -p DNS/server1.idm.example.com -k /etc/named.keytab
- 命令/配置摘录:
[root@server1 ~]# klist -ekt /etc/named.keytab Keytab name: FILE:/etc/named.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96) 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96) 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia128-cts-cmac) 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia256-cts-cmac)
[root@server1 ~]# kvno DNS/server1.idm.example.com@EXAMPLE.COM DNS/server1.idm.example.com@EXAMPLE.COM: kvno = 316.3. IdM Kerberos keytab 文件内容列表
- 要点:下表显示了 IdM Kerberos keytab 文件的位置、内容和目的。
- 要点:其他资源
- 列表:Identity Management 如何使用 Kerberos keytab 文件
- 列表:验证 Kerberos keytab 文件是否与 IdM 数据库同步
- 表格样本(共 9 行):
- keytab 位置 | 内容 | 目的
- /etc/krb5.keytab | host 主体 | 在登录时验证用户凭证,供 NFS 使用(如果没有 nfs 主体)
- /etc/dirsrv/ds.keytab | ldap 主体 | 向 IdM 数据库验证用户,在 IdM 副本之间安全地复制数据库内容
- /var/lib/ipa/gssproxy/http.keytab | HTTP 主体 | 对 Apache 服务器进行身份验证
16.4. 查看 IdM 主密钥的加密类型
- 要点:作为身份管理(IdM)管理员,您可以查看 IdM 主密钥的加密类型,这是 IdM Kerberos 分发中心(KDC)用来存储所有其他主体的密钥。了解加密类型可帮助您确定部署与 FIPS 标准的兼容性。
- 要点:从 RHEL 8.7 开始,加密类型是 aes256-cts-hmac-sha384-192。这个加密类型与旨在遵守 FIPS 140-3 的默认 RHEL 9 FIPS 加密策略兼容。
- 列表:您有访问 IdM 部署中任何 RHEL 8 副本的 root 权限。
- 列表:在副本中,查看命令行中的加密类型: # kadmin.local getprinc K/M | grep -E '^Key:' Key: vno 1, aes256-cts-hmac-sha1-96 输出中的 aes256-cts-hmac-sha1-96 密钥表示 IdM 部署已安装在运行 RHEL 8.6 或更早版本的服务器上。输出中存在一个 aes256-cts-hmac-sha384-192 密钥,表示 IdM 部署已安装在运行 RHEL 8.7 或更高版本的服务器上。
- 命令/配置摘录:
# kadmin.local getprinc K/M | grep -E '^Key:' Key: vno 1, aes256-cts-hmac-sha1-96第 17 章 在 IdM 环境中启用 passkey 身份验证
- 要点:Fast IDentity Online 2 (FIDO2)标准是基于公钥加密的,并添加了带有 PIN 或 biometrics 的无密码流选项。IdM 环境中的 passkey 身份验证使用 libfido2 库支持的 FIDO2 兼容设备。
- 要点:passkey 验证方法提供一个额外的安全层,通过包括需要 PIN 或指纹的无密码和多因素身份验证(MFA)来遵守法规标准。它使用特殊硬件和软件的组合,如在身份管理 (IdM)环境中启用的 passkey 设备和 passkey ,来在环境中增强安全性,在此环境中,数据保护扮演关键角色。
17.1. 先决条件
- 要点:安装 fido2-tools 软件包:
- 要点:为 passkey 设备设置 PIN:
- 列表:您有一个 passkey 设备。
- 列表:安装 fido2-tools 软件包: # dnf install fido2-tools
- 列表:为 passkey 设备设置 PIN: 将 passkey 设备连接到 USB 端口。 列出连接的 passkey 设备: # fido2-token -L 按照命令提示,为您的 passkey 设备设置 PIN。 # fido2-token -C passkey_device
- 列表:将 passkey 设备连接到 USB 端口。
- 列表:列出连接的 passkey 设备: # fido2-token -L
- 列表:按照命令提示,为您的 passkey 设备设置 PIN。 # fido2-token -C passkey_device
- 命令/配置摘录:
# dnf install fido2-tools
# fido2-token -L17.2. 注册 passkey 设备
- 要点:作为用户,您可以使用 passkey 设备配置身份验证。passkey 设备与任何 FIDO2 规范设备兼容,如 YubiKey 5 NFC。要配置此验证方法,请按照以下说明操作。
- 要点:先决条件
- 列表:passkey 设备的 PIN 已设置。
- 列表:为 IdM 用户启用了 Passkey 身份验证: # ipa user-add user01 --first=user --last=01 --user-auth-type=passkey 将 ipa user-mod 与 same -user-auth-type=passkey 参数用于现有 IdM 用户。
- 列表:访问用户要进行身份验证的物理机器。
- 列表:在 USB 端口中插入 passkey 设备。
- 列表:为 IdM 用户注册 passkey: # ipa user-add-passkey user01 --register 按照应用程序提示操作: 输入 passkey 设备的 PIN。 触摸设备以验证您的身份。如果您使用生物识别设备,请确保使用与注册设备时相同的手指。 提示 对于用户来说,一个很好的实践是将多个 passkey 设备配置为一个备份,允许从多个位置或设备进行身份验证。要确保 Kerberos 票据在身份验证过程中发布,请不要为用户配置超过 12 个 passkey 设备。
- 列表:输入 passkey 设备的 PIN。
- 命令/配置摘录:
# ipa user-add user01 --first=user --last=01 --user-auth-type=passkey
# ipa user-add-passkey user01 --register- 注意:提示 对于用户来说,一个很好的实践是将多个 passkey 设备配置为一个备份,允许从多个位置或设备进行身份验证。要确保 Kerberos 票据在身份验证过程中发布,请不要为用户配置超过 12 个 passkey 设备。
- 注意:注意 如果您为 passkey 设备输入 PIN 错误地 3 次,请断开物理令牌并将其重新连接到 USB 端口并执行成功身份验证。如果您没有完成电源周期,则即使正确输入 PIN,您将无法进行身份验证。
17.3. 身份验证策略
- 要点:使用身份验证策略配置可用的在线和本地身份验证方法。
- 要点:使用 /etc/sssd/sssd.conf 文件中的 local_auth_policy 选项来配置可用的在线和离线身份验证方法。默认情况下,只使用服务服务器端支持的方法来执行身份验证。您可以使用以下值调优策略:
- 列表:match 值启用离线和在线状态的匹配。例如,IdM 服务器支持在线 passkey 身份验证,match 为 passkey 方法启用离线和在线身份验证。
- 列表:only 值仅提供离线方法,忽略在线方法。
- 列表:enable 和 disable 值为离线身份验证明确定义方法。例如,enable:passkey 只为离线身份验证启用 passkey 。
- 命令/配置摘录:
[domain/shadowutils] id_provider = proxy proxy_lib_name = files auth_provider = none local_auth_policy = only17.4. 以 passkey 用户身份检索 IdM 票据授予票据
- 要点:要以 passkey 用户身份检索 Kerberos 票据授予票据(TGT),请请求一个匿名 Kerberos 票据,并通过 Secure Tunneling (FAST)通道启用灵活的身份验证,以便在 Kerberos 客户端和 Kerberos 分发中心(KDC)之间提供一个安全连接。
- 要点:先决条件
- 列表:您已注册了 passkey 设备,并配置了身份验证策略。
- 列表:运行以下命令来初始化凭证缓存: [root@client ~]# kinit -n @IDM.EXAMPLE.COM -c FILE:armor.ccache 请注意,这个命令会创建 armor.ccache 文件,每当您请求新的 Kerberos 票据时,您需要指向该文件。
- 列表:运行以下命令来请求一个 Kerberos 票据: [root@client ~]# kinit -T FILE:armor.ccache <username>@IDM.EXAMPLE.COM Enter your PIN: 注意 如果您为 passkey 设备输入 PIN 错误地 3 次,请断开物理令牌并将其重新连接到 USB 端口并执行成功身份验证。如果您没有完成电源周期,则即使正确输入 PIN,您将无法进行身份验证。
- 列表:显示您的 Kerberos 票据信息: [root@client ~]# klist -C Ticket cache: KCM:0:58420 Default principal: <username>@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 …
- 命令/配置摘录:
[root@client ~]# kinit -n @IDM.EXAMPLE.COM -c FILE:armor.ccache
[root@client ~]# kinit -T FILE:armor.ccache <username>@IDM.EXAMPLE.COM Enter your PIN:- 注意:注意 如果您为 passkey 设备输入 PIN 错误地 3 次,请断开物理令牌并将其重新连接到 USB 端口并执行成功身份验证。如果您没有完成电源周期,则即使正确输入 PIN,您将无法进行身份验证。
第 18 章 在 IdM 中使用 KDC 代理
- 要点:有些管理员可能会选择使默认的 Kerberos 端口在部署中无法访问。要允许用户、主机和服务获取 Kerberos 凭据,您可以使用 HTTPS 服务作为代理,其通过 HTTPS 端口 443 与 Kerberos 进行通信的。
- 要点:在身份管理(IdM)中,Kerberos 密钥分发中心代理 (KKDCP)提供此功能。
18.1. 配置 IdM 客户端以使用 KKDCP
- 要点:作为身份管理(IdM)系统管理员,您可以将 IdM 客户端配置为使用 IdM 服务器上的 Kerberos 密钥分发中心代理(KKDCP)。如果默认的 Kerberos 端口在 IdM 服务器上无法访问,并且 HTTPS 端口 443 是访问 Kerberos 服务的唯一方式,那么这很有用。
- 要点:先决条件
- 列表:您有访问 IdM 客户端的 root 权限。
- 列表:打开 /etc/krb5.conf 文件进行编辑。
- 列表:在 [realms] 部分中,为 kdc、admin_server 和 kpasswd_server 选项输入 KKDCP 的 URL: [realms] EXAMPLE.COM = { kdc = https://kdc.example.com/KdcProxy admin_server = https://kdc.example.com/KdcProxy kpasswd_server = https://kdc.example.com/KdcProxy default_domain = example.com } 对于冗余,您可以多次添加参数 kdc、admin_server 和 kpasswd_server 来指示不…
- 列表:重启 sssd 服务以使更改生效: # systemctl restart sssd
- 命令/配置摘录:
[realms] EXAMPLE.COM = { kdc = https://kdc.example.com/KdcProxy admin_server = https://kdc.example.com/KdcProxy kpasswd_server = https://kdc.example.com/KdcProxy default_domain = example.com }
# systemctl restart sssd18.2. 验证 IdM 服务器上是否启用了 KKDCP
- 要点:在身份管理(IdM)服务器上,如果属性和值对 ipaConfigString=kdcProxyEnabled 存在于目录中,则每次 Apache Web 服务器启动时都会自动启用 Kerberos 密钥分发中心代理(KKDCP)。在这种情况下,将创建符号链接 /etc/httpd/conf.d/ipa-kdc-proxy.conf。
- 要点:即使作为非特权用户,您也可以验证 IdM 服务器上是否启用了 KKDCP。
- 列表:检查符号链接是否存在: $ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf lrwxrwxrwx. 1 root root 36 Jun 21 2020 /etc/httpd/conf.d/ipa-kdc-proxy.conf -> /etc/ipa/kdcproxy/ipa-kdc-proxy.conf 输出确认启用了 KKDCP。
- 命令/配置摘录:
$ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf lrwxrwxrwx. 1 root root 36 Jun 21 2020 /etc/httpd/conf.d/ipa-kdc-proxy.conf -> /etc/ipa/kdcproxy/ipa-kdc-proxy.conf18.3. 在 IdM 服务器上禁用 KKDCP
- 要点:作为身份管理(IdM)系统管理员,您可以在 IdM 服务器上禁用 Kerberos 密钥分发中心代理(KKDCP)。
- 要点:先决条件
- 列表:您有访问 IdM 服务器的 root 权限。
- 列表:从目录中删除 ipaConfigString=kdcProxyEnabled 属性和值对: # ipa-ldap-updater /usr/share/ipa/kdcproxy-disable.uldif Update complete The ipa-ldap-updater command was successful
- 列表:重启 httpd 服务: # systemctl restart httpd.service KKDCP 现在在当前的 IdM 服务器上被禁用。
- 列表:验证符号链接不存在: $ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf ls: cannot access '/etc/httpd/conf.d/ipa-kdc-proxy.conf': No such file or directory
- 命令/配置摘录:
# ipa-ldap-updater /usr/share/ipa/kdcproxy-disable.uldif Update complete The ipa-ldap-updater command was successful
# systemctl restart httpd.service18.4. 在 IdM 服务器上重新启用 KKDCP
- 要点:在 IdM 服务器上,默认启用 Kerberos 密钥分发中心代理(KKDCP),并可通过 https:// <server.idm.example.com> /KdcProxy 提供。
- 要点:如果服务器上已禁用了 KKDCP,您可以重新启用它。
- 列表:您有访问 IdM 服务器的 root 权限。
- 列表:将 ipaConfigString=kdcProxyEnabled 属性和值对添加到目录中: # ipa-ldap-updater /usr/share/ipa/kdcproxy-enable.uldif Update complete The ipa-ldap-updater command was successful
- 列表:重启 httpd 服务: # systemctl restart httpd.service KKDCP 现在在当前的 IdM 服务器上被启用。
- 列表:验证符号链接是否存在: $ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf lrwxrwxrwx. 1 root root 36 Jun 21 2020 /etc/httpd/conf.d/ipa-kdc-proxy.conf -> /etc/ipa/kdcproxy/ipa-kdc-proxy.conf
- 命令/配置摘录:
# ipa-ldap-updater /usr/share/ipa/kdcproxy-enable.uldif Update complete The ipa-ldap-updater command was successful
# systemctl restart httpd.service18.5. 配置 KKDCP 服务器 I
- 要点:使用以下配置,您可以启用 TCP 作为 IdM KKDCP 和 活动目录(AD)域之间的传输协议,其中会使用多个 Kerberos 服务器。
- 要点:先决条件
- 列表:您有 root 访问权限。
- 列表:将 /etc/ipa/kdcproxy/kdcproxy.conf 文件的 [global] 部分中的 use_dns 参数设为 false。 [global] use_dns = false
- 列表:将代理域信息放在 /etc/ipa/kdcproxy/kdcproxy.conf 文件中。例如,对于具有代理的 [AD.EXAMPLE.COM] 域,请按如下所示列出域配置参数: [AD.EXAMPLE.COM] kerberos = kerberos+tcp://1.2.3.4:88 kerberos+tcp://5.6.7.8:88 kpasswd = kpasswd+tcp://1.2.3.4:464 kpasswd+tcp://5.6.7.8:464 重要 域配置参数必须列出由空格分隔的多个服务器,而不是像 /etc/krb5.conf 和 kdc.conf 那样,其中某些选项可以被多次指定。
- 列表:重启身份管理(IdM)服务: # ipactl restart
- 列表:将 IPA 服务器配置为 AD Kerberos 通信的 KDC 代理(红帽知识库)
- 命令/配置摘录:
[global] use_dns = false
[AD.EXAMPLE.COM] kerberos = kerberos+tcp://1.2.3.4:88 kerberos+tcp://5.6.7.8:88 kpasswd = kpasswd+tcp://1.2.3.4:464 kpasswd+tcp://5.6.7.8:464- 注意:重要 域配置参数必须列出由空格分隔的多个服务器,而不是像 /etc/krb5.conf 和 kdc.conf 那样,其中某些选项可以被多次指定。
18.6. 配置 KKDCP 服务器 II
- 要点:以下服务器配置依赖于 DNS 服务记录来查找要与之通信的活动目录(AD)服务器。
- 要点:先决条件
- 列表:您有 root 访问权限。
- 列表:在 /etc/ipa/kdcproxy/kdcproxy.conf 文件中的 [global] 部分,将 use_dns 参数设为 true。 [global] configs = mit use_dns = true configs 参数允许您加载其他配置模块。在这种情况下,配置是从 MIT libkrb5 库中读取的。
- 列表:可选:如果您不想使用 DNS 服务记录,请将明确的 AD 服务器添加到 /etc/krb5.conf 文件的 [realms] 部分中。如果带有代理的域是 AD.EXAMPLE.COM,请添加: [realms] AD.EXAMPLE.COM = { kdc = ad-server.ad.example.com kpasswd_server = ad-server.ad.example.com }
- 列表:重启身份管理(IdM)服务: # ipactl restart
- 列表:将 IPA 服务器配置为 AD Kerberos 通信的 KDC 代理(红帽知识库)
- 命令/配置摘录:
[global] configs = mit use_dns = true
[realms] AD.EXAMPLE.COM = { kdc = ad-server.ad.example.com kpasswd_server = ad-server.ad.example.com }第 19 章 使用 CLI 管理 IdM 中的自助服务规则
- 要点:了解身份管理(IdM)中的自助服务规则以及如何在命令行(CLI)上创建和编辑自助服务访问规则。
19.1. IdM 中的自助服务访问控制
- 要点:自助服务访问控制规则定义 Identity Management (IdM)实体可以在其 IdM 目录服务器条目上执行的操作:例如,IdM 用户能够更新自己的密码。
- 要点:这种控制方法允许经过身份验证的 IdM 实体编辑其 LDAP 条目中的特定属性,但不允许对整个条目的 add 或 delete 操作。
- 注意:警告 使用自助服务访问控制规则时要小心:不当配置访问控制规则可能会意外地提升实体的特权。
19.2. 使用 CLI 创建自助服务规则
- 要点:按照以下步骤,使用命令行(CLI)在 IdM 中创建自助服务访问规则。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:要添加自助服务规则,请使用 ipa selfservice-add 命令,并指定以下两个选项: --permissions 设置访问控制指令(ACI)授予的 读 和 写 权限。 --attrs 设置此 ACI 授予权限的属性的完整列表。 例如,要创建一个自助服务规则,允许用户修改自己的名称详情: $ ipa selfservice-add "Users can manage their own name details" --permissions=write --attrs=givenname --attrs=displayname --attrs=title --attrs=initials -----------------…
- 命令/配置摘录:
$ ipa selfservice-add "Users can manage their own name details" --permissions=write --attrs=givenname --attrs=displayname --attrs=title --attrs=initials ----------------------------------------------------------- Added selfservice "Users can manage their own name details" ----------------------------------------------------------- Self-service name: Users can manage their own name details Permissions: write Attributes: givenname, displayname, title, initials19.3. 使用 CLI 编辑自助服务规则
- 要点:按照以下步骤,使用命令行(CLI)编辑 IdM 中的自助服务访问规则。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:可选:使用 ipa selfservice-find 命令显示现有的自助服务规则。
- 列表:可选:使用 ipa selfservice-show 命令显示您要修改的自助服务规则的详情。
- 列表:使用 ipa selfservice-mod 命令来编辑自助服务规则。 例如: $ ipa selfservice-mod "Users can manage their own name details" --attrs=givenname --attrs=displayname --attrs=title --attrs=initials --attrs=surname -------------------------------------------------------------- Modified selfservice "Users can manage their own name details" ----…
- 列表:使用 ipa selfservice-show 命令显示您编辑的自助服务规则。 $ ipa selfservice-show "Users can manage their own name details" -------------------------------------------------------------- Self-service name: Users can manage their own name details Permissions: write Attributes: givenname, displayname, title, initials
- 命令/配置摘录:
$ ipa selfservice-mod "Users can manage their own name details" --attrs=givenname --attrs=displayname --attrs=title --attrs=initials --attrs=surname -------------------------------------------------------------- Modified selfservice "Users can manage their own name details" -------------------------------------------------------------- Self-service name: Users can manage their own name details Permissions: write Attributes: givenname, displayname, title, initials
$ ipa selfservice-show "Users can manage their own name details" -------------------------------------------------------------- Self-service name: Users can manage their own name details Permissions: write Attributes: givenname, displayname, title, initials- 注意:重要 使用 ipa selfservice-mod 命令覆盖之前定义的权限和属性,因此始终包含现有权限和属性的完整列表,以及您要定义的任何新的权限和属性。
19.4. 使用 CLI 删除自助服务规则
- 要点:按照以下步骤,使用命令行(CLI)删除 IdM 中的自助服务访问规则。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:使用 ipa selfservice-del 命令删除自助服务规则。 例如: $ ipa selfservice-del "Users can manage their own name details" ----------------------------------------------------------- Deleted selfservice "Users can manage their own name details" -----------------------------------------------------------
- 列表:使用 ipa selfservice-find 命令显示所有自助服务规则。您刚才删除的规则应该消失了。
- 命令/配置摘录:
$ ipa selfservice-del "Users can manage their own name details" ----------------------------------------------------------- Deleted selfservice "Users can manage their own name details" -----------------------------------------------------------第 20 章 使用 IdM Web UI 管理自助服务规则
- 要点:了解身份管理(IdM)中的自助服务规则,以及如何在 Web 界面(IdM Web UI)中创建和编辑自助服务访问规则。
- 要点:有关 IdM 中自助服务访问控制的常规信息,请参阅 IdM 中的自助服务访问控制 部分。
20.1. 使用 IdM Web UI 创建自助服务规则
- 要点:按照以下流程,使用 Web 界面(IdM Web UI)在 IdM 中创建自助服务访问规则。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:打开 IPA Server>Role-Based Access Control 菜单,再选择 Self Service Permissions。
- 列表:单击自助服务访问规则列表右上角的 Add。
- 列表:在 Add Self Service Permission 窗口中,在 Self-service name 字段中输入新自助服务规则的名称。允许空格。
- 列表:选中您希望用户能够编辑的属性旁边的复选框。
20.2. 使用 IdM Web UI 编辑自助服务规则
- 要点:按照以下流程,使用 Web 界面(IdM Web UI)编辑 IdM 中的自助服务访问规则。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:打开 IPA Server>Role-Based Access Control 菜单,再选择 Self Service Permissions。
- 列表:单击您要修改的自助服务规则的名称。
- 列表:编辑页面只允许您编辑您要添加或删除自助服务规则的属性列表。选择或取消选择合适的复选框。
- 列表:单击 Save 按钮,将更改保存到自助服务规则。
20.3. 使用 IdM Web UI 删除自助服务规则
- 要点:按照以下流程,使用 Web 界面(IdM Web UI)删除 IdM 中的自助服务访问规则。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:打开 IPA Server>Role-Based Access Control 菜单,再选择 Self Service Permissions。
- 列表:选中您要删除的规则旁边的复选框,然后单击列表右侧的 Delete 按钮。
- 列表:此时会打开一个对话框,单击 Delete 进行确认。
第 21 章 使用 Ansible playbook 管理 IdM 中的自助服务规则
- 要点:本节介绍 Identity Management (IdM) 中的自助服务规则,并介绍如何使用 Ansible playbook 创建和编辑自助服务访问规则。自助服务访问控制规则允许 IdM 实体在其 IdM 目录服务器条目上执行指定操作。
21.1. 使用 Ansible 确保存在自助服务规则
- 要点:以下流程描述了如何使用 Ansible playbook 定义自助服务规则并确保它们在身份管理 (IdM) 服务器上存在。在本例中,新的 Users can manage their own name details 规则会授予用户更改其 givenname、displayname、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.yml21.2. 使用 Ansible 确保缺少自助服务规则
- 要点:以下流程描述了如何使用 Ansible playbook 来确保 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.yml21.3. 使用 Ansible 确保自助服务规则具有特定属性
- 要点:以下流程描述了如何使用 Ansible playbook 确保现有自助服务规则具有特定的设置。在示例中,您可以确认 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.yml21.4. 使用 Ansible 确保自助服务规则没有特定属性
- 要点:以下流程描述了如何使用 Ansible playbook 来确保自助服务规则没有特定的设置。您可以使用此 playbook 确保自助服务规则没有授予不需要的访问权限。在示例中,您可以确定 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.yml第 22 章 在 IdM CLI 中管理用户组
- 要点:了解使用 IdM CLI 的用户组管理。用户组是一组具有常见特权、密码策略和其他特征的用户。
- 要点:Identity Management (IdM) 中的用户组可以包括:
- 列表:IdM 用户
- 列表:其他 IdM 用户组
- 列表:外部用户,即 IdM 之外的用户
22.1. IdM 中的不同组类型
- 要点:IdM 支持以下类型的组:
- 要点:POSIX 组支持其成员的 Linux POSIX 属性。请注意,与 Active Directory 交互的组无法使用 POSIX 属性。
- 列表:本地系统
- 列表:Active Directory 域
- 列表:目录服务
- 注意:警告 不要删除 admins 组。由于 admins 是 IdM 要求的预定义组,因此此操作会导致某些命令出现问题。
- 表格样本(共 5 行):
- 组名称 | 默认组成员
- ipausers | 所有 IdM 用户
- admins | 具有管理特权的用户,包括默认的 admin 用户
- editors | 这是一个旧的组,不再具有任何特殊权限
22.2. 直接和间接组成员
- 要点:IdM 中的用户组属性适用于直接和间接成员:当组 B 是组 A 的成员时,组 B 中的所有用户都被视为组 A 的间接成员。
- 要点:例如,在下图中:
- 列表:用户 1 和用户 2 是组 A 的直接成员。
- 列表:用户 3、用户 4 和用户 5 是组 A 的间接成员。
22.3. 使用 IdM CLI 添加用户组
- 要点:按照以下流程,使用 IdM CLI 添加用户组。
- 要点:先决条件
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:使用 ipa group-add group_name 命令添加用户组。例如,要创建 group_a : $ ipa group-add group_a --------------------- Added group "group_a" --------------------- Group name: group_a GID: 1133400009 默认情况下,ipa group-add 添加 POSIX 用户组。要指定不同的组类型,请在 ipa group-add 中添加选项:
- 列表:--nonposix 用来创建非 POSIX 组
- 列表:--external 用来创建外部组 有关组类型的详情,请查看 IdM 中不同的组类型。 您可以使用 --gid=custom_GID 选项来在添加用户组时指定自定义的 GID。如果您这样做,请小心以避免 ID 冲突。如果没有指定自定义的 GID,IdM 会自动从可用的 ID 范围内分配一个 GID。
- 命令/配置摘录:
$ ipa group-add group_a --------------------- Added group "group_a" --------------------- Group name: group_a GID: 113340000922.4. 使用 IdM CLI 搜索用户组
- 要点:按照以下流程,使用 IdM CLI 搜索现有用户组。
- 要点:流程
- 列表:使用 ipa group-find 命令显示所有用户组。要指定组类型,请在 ipa group-find 中添加选项: 使用 ipa group-find --posix 命令显示所有 POSIX 组。 使用 ipa group-find --nonposix 命令显示所有非 POSIX 组。 使用 ipa group-find --external 命令显示所有外部组。
- 列表:使用 ipa group-find --posix 命令显示所有 POSIX 组。
- 列表:使用 ipa group-find --nonposix 命令显示所有非 POSIX 组。
- 列表:使用 ipa group-find --external 命令显示所有外部组。
- 列表:IdM 中的不同组类型
22.5. 使用 IdM CLI 删除用户组
- 要点:按照以下流程,使用 IdM CLI 删除用户组。请注意,删除组不会从 IdM 中删除组成员。
- 要点:先决条件
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:使用 ipa group-del group_name 命令删除用户组。例如,要删除 group_a: $ ipa group-del group_a -------------------------- Deleted group "group_a" --------------------------
- 命令/配置摘录:
$ ipa group-del group_a -------------------------- Deleted group "group_a" --------------------------22.6. 使用 IdM CLI 将成员添加到用户组中
- 要点:您可以将用户和用户组添加为用户组的成员。如需更多信息,请参阅 IdM 中不同的组类型 和 直接和间接组成员 。按照以下流程,使用 IdM CLI 将成员添加到用户组中。
- 要点:先决条件
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:使用 ipa group-add-member 命令向用户组添加成员。 使用这些选项指定成员类型: --users 添加 IdM 用户 --external 添加一个存在于 IdM 域外的用户,格式为 DOMAIN\user_name 或 user_name@domain --groups 添加 IdM 用户组 例如,将 group_b 添加为 group_a 的成员: $ ipa group-add-member group_a --groups=group_b Group name: group_a GID: 1133400009 Member users: user_a Member groups: group_b Indi…
- 列表:--users 添加 IdM 用户
- 列表:--external 添加一个存在于 IdM 域外的用户,格式为 DOMAIN\user_name 或 user_name@domain
- 列表:--groups 添加 IdM 用户组
- 命令/配置摘录:
$ ipa group-add-member group_a --groups=group_b Group name: group_a GID: 1133400009 Member users: user_a Member groups: group_b Indirect Member users: user_b ------------------------- Number of members added 1 -------------------------- 注意:重要 将组添加为另一个组的成员时,请勿创建递归组。例如,如果组 A 是组 B 的成员,则不要将组 B 添加为组 A 的成员。递归组可能会导致无法预料的行为。
- 注意:注意 将成员添加到用户组后,更新可能需要一些时间才能传播到身份管理环境中的所有客户端。这是因为,当任何给定主机解析用户、组和网络组时,系统安全服务守护进程 (SSSD)首先检查其缓存,并且仅对丢失或过期的记录执行服务器查找。
22.7. 添加没有用户私有组的用户
- 要点:默认情况下,每当在 IdM 中创建新用户时,IdM 都会创建用户私有组(UPG)。UPG 是特定的组类型:
- 要点:不过,可以添加用户而不创建 UPG 。
- 列表:UPG 与新创建的用户具有相同的名称。
- 列表:用户是 UPG 的唯一成员。UPG 不能包含任何其他成员。
- 列表:私有组的 GID 与用户的 UID 相匹配。
22.7.1. 没有用户私有组的用户
- 要点:如果 NIS 组或其他系统组已使用将要分配给用户私有组的 GID,则有必要避免创建 UPG。
- 要点:您可以通过两种方式执行此操作:
- 列表:添加没有 UPG 的新用户,而不全局禁用私有组。请参阅 全局启用私有组时添加没有用户私有组的用户 。
- 列表:对所有用户全局禁用 UPG,然后添加新用户。请参阅 对所有用户全局禁用用户私有组,和 在用户私有组全局禁用时添加用户。
- 注意:注意 指定 GID 不会创建新组。它仅为新用户设置 GID 属性,因为 IdM 需要属性。
22.7.2. 在全局启用私有组时添加没有用户私有组的用户
- 要点:您可以添加用户而不创建用户私有组(UPG),即使系统上启用了 UPG。这需要为新用户手动设置 GID。有关为何需要此功能的详情,请查看 没有用户私有组的用户。
- 要点:流程
- 列表:要防止 IdM 创建 UPG,请在 ipa user-add 命令中添加 --noprivate 选项。 请注意,若要命令成功,您必须指定一个自定义的 GID。例如,使用 GID 10000 添加新用户: $ ipa user-add jsmith --first=John --last=Smith --noprivate --gid 10000
- 命令/配置摘录:
$ ipa user-add jsmith --first=John --last=Smith --noprivate --gid 1000022.7.3. 对所有用户全局禁用用户私有组
- 要点:您可以在全局范围内禁用用户私有组(UPG)。这样可防止为所有新用户创建 UPG。现有用户不会受到这一更改的影响。
- 要点:流程
- 列表:获取管理员权限: $ kinit admin
- 列表:IdM 使用目录服务器管理的条目插件来管理 UPG。列出插件的实例: $ ipa-managed-entries --list
- 列表:要确保 IdM 不创建 UPG,请禁用负责管理用户私有组的插件实例: $ ipa-managed-entries -e "UPG Definition" disable Disabling Plugin 要在稍后重新启用 UPG Definition 实例,请使用 ipa-managed-entries -e "UPG Definition" enable 命令。
- 列表:重新启动目录服务器来加载新配置。 $ sudo systemctl restart dirsrv.target 要在禁用 UPG 后添加用户,您需要指定 GID。如需更多信息,请参阅在用户私有组群全局禁用时添加用户
- 列表:要检查 UPG 是否全局禁用,请再次使用 disable 命令: $ ipa-managed-entries -e "UPG Definition" disable Plugin already disabled
- 命令/配置摘录:
$ kinit admin
$ ipa-managed-entries --list22.7.4. 当全局禁用用户私有组时添加用户
- 要点:当全局禁用用户私有组(UPG)时,IdM 不会自动为新用户分配 GID。要成功添加用户,您必须手动分配 GID,或使用自动成员规则来分配 GID。有关为何需要此功能的详情,请查看 没有用户私有组的用户。
- 要点:先决条件
- 列表:必须对所有用户全局禁用 UPG。如需更多信息,请参阅对所有用户全局禁用用户私有组
- 列表:要确保在禁用创建 UPG 时成功添加新用户,请选择以下之一: 添加新用户时指定自定义的 GID。GID 不必对应于已经存在的用户组。 例如,当从命令行添加用户时,请在 ipa user-add 命令中添加 --gid 选项。 使用自动成员规则将用户添加到具有 GID 的现有组中。请参阅使用 IdM CLI 自动化组成员资格。
- 列表:添加新用户时指定自定义的 GID。GID 不必对应于已经存在的用户组。 例如,当从命令行添加用户时,请在 ipa user-add 命令中添加 --gid 选项。
- 列表:使用自动成员规则将用户添加到具有 GID 的现有组中。请参阅使用 IdM CLI 自动化组成员资格。
22.8. 使用 IdM CLI 将用户或组作为成员管理者添加到 IdM 用户组中
- 要点:按照以下流程,使用 IdM CLI 将用户或组作为成员管理者添加到 IdM 用户组。成员管理者可以将用户或组添加到 IdM 用户组中,但不能更改组的属性。
- 要点:先决条件
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:您必须具有要添加为成员管理器的用户名以及您要管理的组的名称。
- 列表:使用 ipa group-add-member-manager 命令,将用户作为成员管理者添加到 IdM 用户组。 例如,要将用户 test 添加为 group_a 的成员管理者: $ ipa group-add-member-manager group_a --users=test Group name: group_a GID: 1133400009 Membership managed by users: test ------------------------- Number of members added 1 ------------------------- 用户 test 现在可以管理 group_a 的成员。
- 列表:使用 ipa group-add-member-manager 命令,将组作为成员管理者添加到 IdM 用户组。 例如,要将 group_admins 添加为 group_a 的成员管理者: $ ipa group-add-member-manager group_a --groups=group_admins Group name: group_a GID: 1133400009 Membership managed by groups: group_admins Membership managed by users: test ------------------------- Number of members added…
- 列表:使用 ipa group-show 命令来验证用户和组是否已被添加为成员管理者。 $ ipa group-show group_a Group name: group_a GID: 1133400009 Membership managed by groups: group_admins Membership managed by users: test
- 命令/配置摘录:
$ ipa group-add-member-manager group_a --users=test Group name: group_a GID: 1133400009 Membership managed by users: test ------------------------- Number of members added 1 -------------------------
$ ipa group-add-member-manager group_a --groups=group_admins Group name: group_a GID: 1133400009 Membership managed by groups: group_admins Membership managed by users: test ------------------------- Number of members added 1 -------------------------- 注意:注意 将成员管理者添加到用户组后,可能需要过些时间,才能将更新传播到身份管理环境中的所有客户端。
22.9. 使用 IdM CLI 查看组成员
- 要点:按照以下流程,使用 IdM CLI 查看组成员。您可以查看直接和间接组成员。如需更多信息,请参阅 直接和间接组成员。
- 要点:流程
- 列表:要列出组成员,请使用 ipa group-show group_name 命令。例如: $ ipa group-show group_a ... Member users: user_a Member groups: group_b Indirect Member users: user_b 注意 间接成员列表不包括来自可信活动目录域的外部用户。活动目录信任用户对象在身份管理界面中不可见,因为它们在身份管理中不作为 LDAP 对象存在。
- 命令/配置摘录:
$ ipa group-show group_a ... Member users: user_a Member groups: group_b Indirect Member users: user_b- 注意:注意 间接成员列表不包括来自可信活动目录域的外部用户。活动目录信任用户对象在身份管理界面中不可见,因为它们在身份管理中不作为 LDAP 对象存在。
22.10. 使用 IdM CLI 从用户组中删除成员
- 要点:按照以下流程,使用 IdM CLI 从用户组中删除成员。
- 要点:先决条件
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:可选: 使用 ipa group-show 命令确认组是否包含您要删除的成员。
- 列表:使用 ipa group-remove-member 命令从用户组中删除成员。 使用这些选项来指定要删除的成员: --users 删除 IdM 用户 --external 删除存在于 IdM 域外的用户,格式为 DOMAIN\user_name 或 user_name@domain --groups 删除 IdM 用户组 例如,要从名为 group_name 的组中删除 user1、user2 和 group1: $ ipa group-remove-member pass:quotes[group_name] --users=pass:quotes[user1] --users=pass:quotes[user2] --grou…
- 列表:--users 删除 IdM 用户
- 列表:--external 删除存在于 IdM 域外的用户,格式为 DOMAIN\user_name 或 user_name@domain
- 列表:--groups 删除 IdM 用户组
- 命令/配置摘录:
$ ipa group-remove-member pass:quotes[group_name] --users=pass:quotes[user1] --users=pass:quotes[user2] --groups=pass:quotes[group1]22.11. 使用 IdM CLI 从 IdM 用户组中删除作为成员管理者的用户或组
- 要点:按照以下流程,使用 IdM CLI 从 IdM 用户组中删除作为成员管理者的用户或组。成员管理者可以从 IdM 用户组中删除用户或组,但不能更改组的属性。
- 要点:先决条件
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:您必须具有要删除的现有成员管理者用户或组的名称,以及它们要管理的组的名称。
- 列表:使用 ipa group-remove-member-manager 命令,删除作为 IdM 用户组的成员管理者的用户。 例如,要删除作为 group_a 的成员管理者的用户 test : $ ipa group-remove-member-manager group_a --users=test Group name: group_a GID: 1133400009 Membership managed by groups: group_admins --------------------------- Number of members removed 1 --------------------------- 用户 tes…
- 列表:使用 ipa group-remove-member-manager 命令,删除作为 IdM 用户组的成员管理者的组。 例如,要删除作为 group_a 的成员管理者的组 group_admins : $ ipa group-remove-member-manager group_a --groups=group_admins Group name: group_a GID: 1133400009 --------------------------- Number of members removed 1 --------------------------- 组 group_admins 不再管理 group_a 的成员。 注…
- 列表:使用 ipa group-show 命令来验证用户和组是否已作为成员管理者被删除。 $ ipa group-show group_a Group name: group_a GID: 1133400009
- 命令/配置摘录:
$ ipa group-remove-member-manager group_a --users=test Group name: group_a GID: 1133400009 Membership managed by groups: group_admins --------------------------- Number of members removed 1 ---------------------------
$ ipa group-remove-member-manager group_a --groups=group_admins Group name: group_a GID: 1133400009 --------------------------- Number of members removed 1 ---------------------------- 注意:注意 从用户组中删除成员管理者后,可能需要稍等片刻才能将更新传播到身份管理环境中的所有客户端。
22.12. 为 IdM 中的本地和远程组启用组合并
- 要点:组是集中管理的,由域(如身份管理(IdM)或 活动目录(AD))提供,或者它们在本地系统上的 etc/group 文件中进行管理。在大多数情况下,用户依赖于集中管理的存储。然而,在某些情况下,软件仍依赖于已知组中的成员资格来管理访问控制。
- 要点:如果要从域控制器和本地 etc/group 文件管理组,您可以启用组合并。您可以配置 nsswitch.conf 文件,以检查本地文件和远程服务。如果组在两种情况下都出现,则合并成员用户列表,并在单个响应中返回。
- 列表:将 [SUCCESS=merge] 添加到 /etc/nsswitch.conf 文件中: # Allow initgroups to default to the setting for group. initgroups: sss [SUCCESS=merge] files
- 列表:将 idmuser 添加到 IdM 中: # ipa user-add idmuser First name: idm Last name: user --------------------- Added user "idmuser" --------------------- User login: idmuser First name: idm Last name: user Full name: idm user Display name: idm user Initials: tu Home directory: /home/idmuser GECOS: idm user Login shell: /bin/sh Pri…
- 列表:验证本地 audio 组的 GID。 $ getent group audio --------------------- audio❌63
- 列表:将组 audio 添加到 IdM 中: $ ipa group-add audio --gid 63 ------------------- Added group "audio" ------------------- Group name: audio GID: 63 注意 您在将 audio 组添加到 IdM 时定义的 GID 必须与本地 audio 组的 GID 相同。
- 列表:将 idmuser 用户添加到 IdM audio 组中: $ ipa group-add-member audio --users=idmuser Group name: audio GID: 63 Member users: idmuser ------------------------- Number of members added 1 -------------------------
- 列表:以 idmuser 身份登录。
- 命令/配置摘录:
# Allow initgroups to default to the setting for group. initgroups: sss [SUCCESS=merge] files
# ipa user-add idmuser First name: idm Last name: user --------------------- Added user "idmuser" --------------------- User login: idmuser First name: idm Last name: user Full name: idm user Display name: idm user Initials: tu Home directory: /home/idmuser GECOS: idm user Login shell: /bin/sh Principal name: idmuser@IPA.TEST Principal alias: idmuser@IPA.TEST Email address: idmuser@ipa.test UID: 19000024 GID: 19000024 Password: False Member of groups: ipausers Kerberos keys available: False- 注意:注意 如果您使用 authselect 工具,则不再需要手动编辑 nssswitch.conf 来启用组合并。它现已集成到 authselect 配置集中,无需手动更改。
- 注意:注意 您在将 audio 组添加到 IdM 时定义的 GID 必须与本地 audio 组的 GID 相同。
22.13. 其他资源
- 列表:使用 Ansible 为用户 ID 提供对 IdM 客户端上本地声卡的覆盖访问
第 23 章 在 IdM Web UI 中管理用户组
- 要点:本章介绍了使用 IdM Web UI 的用户组管理。
- 要点:用户组是一组具有常见特权、密码策略和其他特征的用户。
- 列表:IdM 用户
- 列表:其他 IdM 用户组
- 列表:外部用户,即 IdM 之外的用户
23.1. 使用 IdM Web UI 添加用户组
- 要点:按照以下流程,使用 IdM Web UI 添加用户组。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:点击 Identity → Groups,然后选择左侧栏中的 User Groups。
- 列表:单击 Add 开始添加组。
- 列表:填写有关组的信息。有关用户组类型的更多信息,请参阅 IdM 中不同的组类型。 您可以为组指定自定义的 GID。如果您这样做,请小心以避免 ID 冲突。如果没有指定自定义的 GID,IdM 会自动从可用的 ID 范围内分配一个 GID。
- 列表:单击 Add 确认。
23.2. 使用 IdM Web UI 删除用户组
- 要点:按照以下流程,使用 IdM Web UI 删除用户组。请注意,删除组不会从 IdM 中删除组成员。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:点击 Identity → Groups ,并选择 User Groups。
- 列表:选择要删除的组。
- 列表:单击 Delete。
- 列表:单击 Delete 确认。
23.3. 使用 IdM Web UI 将成员添加到用户组中
- 要点:您可以将用户和用户组添加为用户组的成员。如需更多信息,请参阅 IdM 中不同的组类型 和 直接和间接组成员 。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:单击 Identity → Groups ,并选择左侧栏中的 User Groups。
- 列表:单击组的名称。
- 列表:选择您要添加的组成员的类型: User、User Groups 或 External。
- 列表:点击 Add。
- 列表:选中您要添加的一个或多个成员旁边的复选框。
23.4. 使用 Web UI 将用户或组作为成员管理者添加到 IdM 用户组中
- 要点:按照以下流程,使用 Web UI 将用户或组作为成员管理者添加到 IdM 用户组。成员管理者可以将用户或组添加到 IdM 用户组中,但不能更改组的属性。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:您必须具有要添加为成员管理器的用户名以及您要管理的组的名称。
- 列表:单击 Identity → Groups ,并选择左侧栏中的 User Groups。
- 列表:单击组的名称。
- 列表:选择您要添加的组成员管理者的类型:Users 或 User Groups。
- 列表:点击 Add。
- 注意:注意 将成员管理者添加到用户组后,可能需要过些时间,才能将更新传播到身份管理环境中的所有客户端。
23.5. 使用 IdM Web UI 查看组成员
- 要点:按照以下流程,使用 IdM Web UI 查看组成员。您可以查看直接和间接组成员。如需更多信息,请参阅 直接和间接组成员。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:选择 Identity → Groups。
- 列表:在左侧栏中选择 User Groups 。
- 列表:单击您要查看的组的名称。
- 列表:在 Direct Membership 和 Indirect Membership 之间切换。
23.6. 使用 IdM Web UI 从用户组中删除成员
- 要点:按照以下流程,使用 IdM Web UI 从用户组中删除成员。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:单击 Identity → Groups ,并选择左侧栏中的 User Groups。
- 列表:单击组的名称。
- 列表:选择要删除的组成员的类型: User、User Groups 或 External。
- 列表:选中您要删除的成员旁边的复选框。
- 列表:点击 Delete。
23.7. 使用 Web UI 从 IdM 用户组中删除作为成员管理者的用户或组
- 要点:按照以下流程,使用 Web UI 从 IdM 用户组中删除作为成员管理者的用户或组。成员管理者可以从 IdM 用户组中删除用户或组,但不能更改组的属性。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:您必须具有要删除的现有成员管理者用户或组的名称,以及它们要管理的组的名称。
- 列表:单击 Identity → Groups ,并选择左侧栏中的 User Groups。
- 列表:单击组的名称。
- 列表:选择您要删除的成员管理者的类型: Users 或 User Groups。
- 列表:选中您要删除的成员管理者旁边的复选框。
- 注意:注意 从用户组中删除成员管理者后,可能需要稍等片刻才能将更新传播到身份管理环境中的所有客户端。
第 24 章 使用 Ansible playbook 管理用户组
- 要点:本节介绍使用 Ansible playbook 进行用户组管理。
- 要点:用户组是一组具有常见特权、密码策略和其他特征的用户。
- 列表:IdM 用户
- 列表:其他 IdM 用户组
- 列表:外部用户,即 IdM 之外的用户
24.1. 使用 Ansible playbook 确保存在 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: 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.yml24.2. 使用 Ansible 在一个任务中添加多个 IdM 组
- 要点:您可以使用 ansible-freeipa ipagroup 模块,使用一个 Ansible 任务添加、修改和删除多个身份管理(IdM)用户组。为此,请使用 ipagroup 模块的 groups 选项。
- 要点:使用 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.yml24.3. 使用 Ansible 启用 AD 用户来管理 IdM
- 要点:按照以下流程,使用 Ansible playbook 确保用户 ID 覆盖在身份管理(IdM)组中存在。用户 ID 覆盖是您在建立与 AD 的信任后您在默认信任视图中创建的活动目录(AD)用户的覆盖。因此,运行 playbook ,AD 用户,例如 AD 管理员能够完全管理 IdM,而无需两个不同的帐户和密码。
- 要点:先决条件
- 列表:您需要知道 IdM admin 密码。
- 列表:您已使用 AD 安装信任。
- 列表:AD 用户的用户 ID 覆盖在IdM 中已存在。如果不存在,请使用 ipa idoverrideuser-add 'default trust view' ad_user@ad.example.com 命令创建它。
- 列表:IdM 中已存在您要添加用户 ID 覆盖的组。
- 列表:您已配置了 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.com24.4. 使用 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 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.yml24.5. 使用 Ansible playbook 确保 IdM 用户组中没有成员管理者
- 要点:以下流程描述了在使用 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.yml第 25 章 使用 IdM CLI 自动化组成员资格
- 要点:通过自动化组成员资格,您可以根据其属性自动将用户和主机分配到组。例如,您可以:
- 列表:根据员工的经理、位置或任何其他属性,将员工的用户条目划分为组。
- 列表:根据主机的类、位置或任何其他属性来划分主机。
- 列表:将所有用户或全部主机添加到单个全局组。
25.1. 自动化组成员资格的好处
- 要点:对用户使用自动成员资格,允许您:
- 要点:减少手动管理组成员资格的开销
- 列表:减少手动管理组成员资格的开销 您不再需要手动将每个用户和主机分配到组中。
- 列表:提高用户和主机管理的一致性 用户和主机根据严格定义的和自动评估的标准被分配到组。
- 列表:简化基于组的设置的管理 为组定义各种设置,然后应用到各个组成员,如 sudo 规则、自动挂载或访问控制。将用户和主机添加到组中会自动使管理这些设置变得更加简单。
25.2. 自动成员规则
- 要点:在配置自动化组成员资格时,管理员定义自动成员规则。自动成员规则应用到特定的用户或主机目标组。它不能一次应用到多个组。
- 要点:创建规则后,管理员会为其添加条件。它们指定将哪些用户或主机包含在目标组中,或从目标组中排除:
- 列表:包含的条件 当用户或主机条目满足包含的条件时,它将包含在目标组中。
- 列表:排他条件 当用户或主机条目满足排他条件时,它不会包含在目标组中。
- 列表:使用 IdM CLI 将自动成员规则应用到现有条目。
- 列表:使用 IdM Web UI 将自动成员规则应用到现有条目。
- 注意:注意 IdM 在包含条件之前评估排他条件。在发生冲突时,排他条件优先于包含条件。
25.3. 使用 IdM CLI 添加自动成员规则
- 要点:按照以下流程,使用 IdM CLI 添加自动成员规则。有关自动成员规则的信息,请参考 自动成员规则。
- 要点:添加自动成员规则后,您可以在 向自动成员规则中添加条件 中所述的流程为其添加条件 。
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:新规则的目标组必须在 IdM 中存在。
- 列表:输入 ipa automember-add 命令,来添加自动成员规则。
- 列表:在提示时,指定: 自动成员规则。这是目标组名称。 分组类型。这将指定规则以用户组还是主机组为目标。要以用户组为目标,请输入 group。要以主机组为目标,请输入 hostgroup。 例如,要为名为 user_group 的用户组添加自动成员规则: $ ipa automember-add Automember Rule: user_group Grouping Type: group -------------------------------- Added automember rule "user_group" -------------------------------- Automember Rule: user_…
- 列表:自动成员规则。这是目标组名称。
- 列表:分组类型。这将指定规则以用户组还是主机组为目标。要以用户组为目标,请输入 group。要以主机组为目标,请输入 hostgroup。
- 命令/配置摘录:
$ ipa automember-add Automember Rule: user_group Grouping Type: group -------------------------------- Added automember rule "user_group" -------------------------------- Automember Rule: user_group- 注意:注意 现有条目 不会受到 新规则的影响。如果要更改现有条目,请参阅使用 IdM CLI 将自动成员规则应用到现有条目。
25.4. 使用 IdM CLI 将条件添加到自动成员规则中
- 要点:配置自动成员规则后,您可以使用 IdM CLI 向该自动成员规则添加条件。有关自动成员规则的信息,请参考 自动成员规则。
- 要点:先决条件
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:目标规则必须在 IdM 中存在。详情请参阅 使用 IdM CLI 添加自动成员规则。
- 列表:使用 ipa automember-add-condition 命令定义一个或多个包含或排他条件。
- 列表:在提示时,指定: 自动成员规则。这是目标规则名称。详情请查看 自动成员规则。 属性键。这将指定过滤器将应用到的条目属性。例如,用户的 uid : 分组类型。这将指定规则以用户组还是主机组为目标。要以用户组为目标,请输入 group。要以主机组为目标,请输入 hostgroup。 包含正则表达式 和 排他正则表达式。它们将一个或多个条件指定为正则表达式。如果您只想指定一个条件,请在提示输入其它条件时按 Enter 键。 例如,以下条件针对用户登录属性(uid)中带有任何值(.*)的所有用户。 $ ipa automember-add-condition Automember Rule: user_group Attribute Ke…
- 列表:自动成员规则。这是目标规则名称。详情请查看 自动成员规则。
- 列表:属性键。这将指定过滤器将应用到的条目属性。例如,用户的 uid :
- 命令/配置摘录:
$ ipa automember-add-condition Automember Rule: user_group Attribute Key: uid Grouping Type: group [Inclusive Regex]: .* [Exclusive Regex]: ---------------------------------- Added condition(s) to "user_group" ---------------------------------- Automember Rule: user_group Inclusive Regex: uid=.* ---------------------------- Number of conditions added 1 ----------------------------
$ ipa automember-add-condition Automember Rule: ad_users Attribute Key: objectclass Grouping Type: group [Inclusive Regex]: ntUser [Exclusive Regex]: ------------------------------------- Added condition(s) to "ad_users" ------------------------------------- Automember Rule: ad_users Inclusive Regex: objectclass=ntUser ---------------------------- Number of conditions added 1 ----------------------------25.5. 使用 IdM CLI 查看现有的自动成员规则
- 要点:按照以下流程,使用 IdM CLI 查看现有的自动成员规则。
- 要点:先决条件
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:输入 ipa automember-find 命令。
- 列表:在提示时,指定 Grouping type : 要以用户组为目标,请输入 group。 要以主机组为目标,请输入 hostgroup。 例如: $ ipa automember-find Grouping Type: group --------------- 1 rules matched --------------- Automember Rule: user_group Inclusive Regex: uid=.* ---------------------------- Number of entries returned 1 ----------------------------
- 列表:要以用户组为目标,请输入 group。
- 列表:要以主机组为目标,请输入 hostgroup。 例如:
- 命令/配置摘录:
$ ipa automember-find Grouping Type: group --------------- 1 rules matched --------------- Automember Rule: user_group Inclusive Regex: uid=.* ---------------------------- Number of entries returned 1 ----------------------------25.6. 使用 IdM CLI 删除自动成员规则
- 要点:按照以下流程,使用 IdM CLI 删除自动成员规则。
- 要点:删除自动成员规则也会删除与规则相关的所有条件。要只从规则中删除特定条件,请参阅 使用 IdM CLI 从自动成员规则中删除条件。
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:输入 ipa automember-del 命令。
- 列表:在提示时,指定: 自动成员规则。这是您要删除的规则。 分组规则。这将指定您要删除的规则是针对用户组的还是主机组的。输入 group 或 hostgroup 。
- 列表:自动成员规则。这是您要删除的规则。
- 列表:分组规则。这将指定您要删除的规则是针对用户组的还是主机组的。输入 group 或 hostgroup 。
25.7. 使用 IdM CLI 从自动成员规则中删除条件
- 要点:按照以下流程,从自动成员规则中删除特定的条件。
- 要点:先决条件
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:输入 ipa automember-remove-condition 命令。
- 列表:在提示时,指定: 自动成员规则。这是您要从中删除条件的规则的名称。 属性键。这是目标条目属性。例如,用户的 uid : 分组类型。这将指定您要删除的条件是针对用户组的还是主机组的。输入 group 或 hostgroup 。 包含正则表达式 和 排他正则表达式。它们指定您要删除的条件。如果您只想指定一个条件,请在提示输入其它条件时按 Enter 键。 例如: $ ipa automember-remove-condition Automember Rule: user_group Attribute Key: uid Grouping Type: group [Inclusive Regex]: .* [Exclusive Reg…
- 列表:自动成员规则。这是您要从中删除条件的规则的名称。
- 列表:属性键。这是目标条目属性。例如,用户的 uid :
- 列表:分组类型。这将指定您要删除的条件是针对用户组的还是主机组的。输入 group 或 hostgroup 。
- 命令/配置摘录:
$ ipa automember-remove-condition Automember Rule: user_group Attribute Key: uid Grouping Type: group [Inclusive Regex]: .* [Exclusive Regex]: ----------------------------------- Removed condition(s) from "user_group" ----------------------------------- Automember Rule: user_group ------------------------------ Number of conditions removed 1 ------------------------------25.8. 使用 IdM CLI 将自动成员规则应用到现有条目
- 要点:自动成员规则在规则添加后,自动应用到所创建的用户和主机条目。它们不会追溯到在规则添加之前存在的条目。
- 要点:要将自动成员规则应用到之前添加的条目,您必须手动重建自动成员资格。重建自动成员资格会重新评估所有现有的自动成员规则,并将其应用到所有用户或主机条目或特定的条目。
- 列表:您必须以管理员身份登录。详情请参阅链接: 使用 kinit 手动登录到 IdM。
- 列表:要重建自动成员资格,请输入 ipa automember-rebuild 命令。使用以下选项指定要定为目标的条目: 要为所有用户重建自动成员资格,请使用 --type=group 选项: $ ipa automember-rebuild --type=group -------------------------------------------------------- Automember rebuild task finished. Processed (9) entries. -------------------------------------------------------- 要为所有主机重建自动成员资格,请…
- 列表:要为所有用户重建自动成员资格,请使用 --type=group 选项: $ ipa automember-rebuild --type=group -------------------------------------------------------- Automember rebuild task finished. Processed (9) entries. --------------------------------------------------------
- 列表:要为所有主机重建自动成员资格,请使用 --type=hostgroup 选项。
- 列表:要为指定的一个用户或多个用户重建自动成员资格,请使用 --users=target_user 选项: $ ipa automember-rebuild --users=target_user1 --users=target_user2 -------------------------------------------------------- Automember rebuild task finished. Processed (2) entries. --------------------------------------------------------
- 列表:要为指定一个主机或多个主机重建自动成员资格,请使用 --hosts=client.idm.example.com 选项。
- 命令/配置摘录:
$ ipa automember-rebuild --type=group -------------------------------------------------------- Automember rebuild task finished. Processed (9) entries. --------------------------------------------------------
$ ipa automember-rebuild --users=target_user1 --users=target_user2 -------------------------------------------------------- Automember rebuild task finished. Processed (2) entries. --------------------------------------------------------25.9. 使用 IdM CLI 配置默认的自动成员组
- 要点:当您配置默认的自动成员组时,与任何自动成员规则不匹配的新用户或主机条目将自动添加到此默认组中。
- 要点:先决条件
- 列表:您必须以管理员身份登录。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:您要设置为默认的目标组在 IdM 中已存在。
- 列表:输入 ipa automember-default-group-set 命令,来配置默认的自动成员组。
- 列表:在提示时,指定: Default (fallback) Group,指定目标组名称。 Grouping Type,指定目标是用户组还是主机组。要以用户组为目标,请输入 group。要以主机组为目标,请输入 hostgroup。 例如: $ ipa automember-default-group-set Default (fallback) Group: default_user_group Grouping Type: group --------------------------------------------------- Set default (fallback) group for automember "def…
- 列表:Default (fallback) Group,指定目标组名称。
- 列表:Grouping Type,指定目标是用户组还是主机组。要以用户组为目标,请输入 group。要以主机组为目标,请输入 hostgroup。 例如: $ ipa automember-default-group-set Default (fallback) Group: default_user_group Grouping Type: group --------------------------------------------------- Set default (fallback) group for automember "default_user_group" --------------------------…
- 命令/配置摘录:
$ ipa automember-default-group-set Default (fallback) Group: default_user_group Grouping Type: group --------------------------------------------------- Set default (fallback) group for automember "default_user_group" --------------------------------------------------- Default (fallback) Group: cn=default_user_group,cn=groups,cn=accounts,dc=example,dc=com
$ ipa automember-default-group-show Grouping Type: group Default (fallback) Group: cn=default_user_group,cn=groups,cn=accounts,dc=example,dc=com- 注意:注意 要删除当前的默认自动成员组,请输入 ipa automember-default-group-remove 命令。
第 26 章 使用 IdM Web UI 自动化组成员资格
- 要点:使用自动化组成员资格,使您可以根据其属性自动将用户和主机分配给组。例如,您可以:
- 要点:有关自动成员资格的好处的详情,请参阅 自动组成员资格的好处 部分。
- 列表:根据员工的经理、位置或任何其他属性,将员工的用户条目划分为组。
- 列表:根据主机的类、位置或任何其他属性来划分主机。
- 列表:将所有用户或全部主机添加到单个全局组。
26.1. 使用 IdM Web UI 添加自动成员规则
- 要点:按照以下流程,使用 IdM Web UI 添加自动成员规则。有关自动成员规则的信息,请参考 自动成员规则。
- 要点:现有条目 不会受到 新规则的影响。如果要更改现有条目,请参阅 使用 IdM Web UI 将自动成员规则应用到现有条目。
- 列表:已登陆到 IdM Web UI。
- 列表:您必须是 admins 组的成员。
- 列表:新规则的目标组在 IdM 中存在。
- 列表:点击 Identity → Automember,然后选择 User group rules 或 Host group rules。
- 列表:点击 Add。
- 列表:在 Automember rule 字段中,选择规则要应用的组。这是目标组名称。
26.2. 使用 IdM Web UI 向自动成员规则中添加条件
- 要点:配置自动成员规则后,您可以使用 IdM Web UI 向该自动成员规则中添加条件。有关自动成员规则的信息,请参考 自动成员规则。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:您必须是 admins 组的成员。
- 列表:目标规则在 IdM 中存在。
- 列表:点击 Identity → Automember,然后选择 User group rules 或 Host group rules。
- 列表:点击您要向其添加条件的规则。
- 列表:在 Inclusive 或 Exclusive 部分中,点 Add。
26.3. 使用 IdM Web UI 查看现有的自动成员规则和条件
- 要点:按照以下流程,使用 IdM Web UI 查看现有的自动成员规则和条件。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:您必须是 admins 组的成员。
- 列表:点击 Identity → Automember,然后选择 User group rules 或 Host group rules 来查看对应的自动成员规则。
- 列表:可选:点击规则,来查看 Inclusive 或 Exclusive 部分中规则的条件。
26.4. 使用 IdM Web UI 删除自动成员规则
- 要点:按照以下流程,使用 IdM Web UI 删除自动成员规则。
- 要点:删除自动成员规则也会删除与规则相关的所有条件。要只从规则中删除特定条件,请参阅 使用 IdM Web UI 从自动成员规则中删除条件。
- 列表:已登陆到 IdM Web UI。
- 列表:您必须是 admins 组的成员。
- 列表:点击 Identity → Automember,然后选择 User group rules 或 Host group rules 来查看对应的自动成员规则。
- 列表:选中您要删除的规则旁边的复选框。
- 列表:点击 Delete。
- 列表:单击 Delete 确认。
26.5. 使用 IdM Web UI 从自动成员规则中删除条件
- 要点:按照以下流程,使用 IdM Web UI 从自动成员规则中删除特定的条件。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:您必须是 admins 组的成员。
- 列表:点击 Identity → Automember,然后选择 User group rules 或 Host group rules 来查看对应的自动成员规则。
- 列表:点击规则,来查看 Inclusive 或 Exclusive 部分中规则的条件。
- 列表:选中您要删除的条件旁边的复选框。
- 列表:点击 Delete。
26.6. 使用 IdM Web UI 将自动成员规则应用到现有条目
- 要点:自动成员规则在规则添加后,自动应用到所创建的用户和主机条目。它们不会追溯到在规则添加之前存在的条目。
- 要点:要将自动成员规则应用到之前添加的条目,您必须手动重建自动成员资格。重建自动成员资格会重新评估所有现有的自动成员规则,并将其应用到所有用户或主机条目或特定的条目。
- 列表:使用 IdM Web UI 从用户组中删除成员
- 列表:在 IdM Web UI 中删除主机组成员
26.6.1. 为所有用户或主机重建自动成员资格
- 要点:按照以下流程,为所有用户或主机条目重建自动成员资格。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:您必须是 admins 组的成员。
- 列表:选择 Identity → Users 或 Hosts。
- 列表:单击 Actions → Rebuild auto membership。
26.6.2. 只为单个用户或主机重建自动成员资格
- 要点:按照以下流程,为特定用户或主机条目重建自动成员资格。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:您必须是 admins 组的成员。
- 列表:选择 Identity → Users 或 Hosts。
- 列表:单击所需的用户或主机名。
- 列表:单击 Actions → Rebuild auto membership。
26.7. 使用 IdM Web UI 配置默认的用户组
- 要点:当您配置默认用户组时,不与任何自动成员规则匹配的新用户条目将自动添加到此默认组中。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:您必须是 admins 组的成员。
- 列表:您要设置为默认的目标用户组在 IdM 中存在。
- 列表:点击 Identity → Automember,然后选择 User group rules。
- 列表:在 Default user group 字段中,选择您要设置为默认用户组的组。
26.8. 使用 IdM Web UI 配置默认的主机组
- 要点:配置默认主机组时,不与任何自动成员规则匹配的新主机条目将自动添加到此默认组中。
- 要点:先决条件
- 列表:已登陆到 IdM Web UI。
- 列表:您必须是 admins 组的成员。
- 列表:您要设置为默认的目标主机组在 IdM 中存在。
- 列表:点击 Identity → Automember,然后选择 Host group rules。
- 列表:在 Default host group 字段中,选择您要设置为默认主机组的组。
第 27 章 使用 Ansible 在 IdM 中自动化组成员资格
- 要点:通过自动化组成员资格,您可以根据其属性自动分配用户、主机用户组和主机组。例如,您可以:
- 要点:您可以使用 Ansible 自动管理身份管理(IdM)中的自动组成员资格。
- 列表:根据员工的经理、地点、职位或任何其他属性将员工的用户条目分成不同的组。您可以通过在命令行中输入 ipa user-add --help 来列出所有属性。
- 列表:根据它们的类、位置或任何其他属性,将主机分成不同的组。您可以通过在命令行中输入 ipa host-add --help 来列出所有属性。
- 列表:将所有用户或全部主机添加到单个全局组。
27.1. 使用 Ansible 确保 IdM 用户组的自动成员规则存在
- 要点:以下流程描述了如何使用 Ansible playbook 确保身份管理(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.yml27.2. 使用 Ansible 确保指定的条件在 IdM 用户组自动成员规则中存在
- 要点:以下流程描述了如何使用 Ansible playbook 来确保指定的条件在身份管理(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.yml27.3. 使用 Ansible 确保条件在 IdM 用户组自动成员规则中不存在
- 要点:以下流程描述了如何使用 Ansible playbook 确保条件在身份管理(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.yml27.4. 使用 Ansible 确保 IdM 用户组的自动成员规则不存在
- 要点:以下流程描述了如何使用 Ansible playbook 确保身份管理(IdM)组的 自动成员 规则不存在。在示例中,确保 testing_group 组的 automember 规则不存在。
- 要点:先决条件
- 列表:在控制节点上: 您在使用 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 用户组自动成员规则 中没有条件。
27.5. 使用 Ansible 确保 IdM 主机组自动成员规则中存在条件
- 要点:按照以下流程,使用 Ansible 确保 IdM 主机组自动成员规则中存在一个条件。示例描述了如何确保 FQDN 为 ..idm.example.com 的主机是 primary_dns_domain_hosts 主机组的成员,以及 FQDN 为 ..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.yml第 28 章 将权限委托给用户组,来使用 IdM CLI 管理用户
- 要点:委托是 IdM 中的访问控制方法之一,以及自助服务规则和基于角色的访问控制 (RBAC)。您可以使用委托为一组用户分配权限,以管理另一组用户的条目。
28.1. 委托规则
- 要点:您可以通过创建委托规则,将权限委托给用户组来管理用户。
- 要点:委托规则允许特定用户组对另一用户组中用户的特定属性执行写入(编辑)操作。这种形式的访问控制规则仅限于编辑您在委托规则中指定的属性子集的值;它不授予添加或删除整个条目或控制未指定属性的权限。
28.2. 使用 IdM CLI 创建委托规则
- 要点:按照以下流程,使用 IdM CLI 创建委托规则。
- 要点:先决条件
- 列表:您已作为 admins 组的成员登录。
- 列表:输入 ipa delegation-add 命令。指定以下选项: --Group: 被授予用户组中用户条目权限 的组。 --membergroup:其条目可以被委托组的成员编辑 的组。 --permissions :用户是否有权查看给定属性(读),并添加或更改给定属性(写)。如果没有指定权限,则仅添加 写 权限。 --attrs :允许成员组中的用户查看或编辑的属性。 例如: $ ipa delegation-add "basic manager attributes" --permissions=read --permissions=write --attrs=businesscategory --attrs=departmen…
- 列表:--Group: 被授予用户组中用户条目权限 的组。
- 列表:--membergroup:其条目可以被委托组的成员编辑 的组。
- 列表:--permissions :用户是否有权查看给定属性(读),并添加或更改给定属性(写)。如果没有指定权限,则仅添加 写 权限。
- 列表:--attrs :允许成员组中的用户查看或编辑的属性。 例如:
- 命令/配置摘录:
$ ipa delegation-add "basic manager attributes" --permissions=read --permissions=write --attrs=businesscategory --attrs=departmentnumber --attrs=employeetype --attrs=employeenumber --group=managers --membergroup=employees ------------------------------------------- Added delegation "basic manager attributes" ------------------------------------------- Delegation name: basic manager attributes Permissions: read, write Attributes: businesscategory, departmentnumber, employeetype, employeenumber Member user group: employees User group: managers28.3. 使用 IdM CLI 查看现有的委托规则
- 要点:按照以下流程,使用 IdM CLI 查看现有的委托规则。
- 要点:先决条件
- 列表:您已作为 admins 组的成员登录。
- 列表:输入 ipa delegation-find 命令: $ ipa delegation-find -------------------- 1 delegation matched -------------------- Delegation name: basic manager attributes Permissions: read, write Attributes: businesscategory, departmentnumber, employeenumber, employeetype Member user group: employees User group: managers --------…
- 命令/配置摘录:
$ ipa delegation-find -------------------- 1 delegation matched -------------------- Delegation name: basic manager attributes Permissions: read, write Attributes: businesscategory, departmentnumber, employeenumber, employeetype Member user group: employees User group: managers ---------------------------- Number of entries returned 1 ----------------------------28.4. 使用 IdM CLI 修改委托规则
- 要点:按照以下流程,使用 IdM CLI 修改现有的委托规则。
- 要点:先决条件
- 列表:您已作为 admins 组的成员登录。
- 列表:输入 ipa delegation-mod 命令及所需的更改。例如,要将 displayname 属性添加到 basic manager attributes 示例规则中: $ ipa delegation-mod "basic manager attributes" --attrs=businesscategory --attrs=departmentnumber --attrs=employeetype --attrs=employeenumber --attrs=displayname ---------------------------------------------- Modified delegation "ba…
- 命令/配置摘录:
$ ipa delegation-mod "basic manager attributes" --attrs=businesscategory --attrs=departmentnumber --attrs=employeetype --attrs=employeenumber --attrs=displayname ---------------------------------------------- Modified delegation "basic manager attributes" ---------------------------------------------- Delegation name: basic manager attributes Permissions: read, write Attributes: businesscategory, departmentnumber, employeetype, employeenumber, displayname Member user group: employees User group: managers- 注意:重要 --attrs 选项覆盖先前支持的属性列表,因此始终包括属性的完整列表以及任何新属性。这也适用于 --permissions 选项。
28.5. 使用 IdM CLI 删除委托规则
- 要点:按照以下流程,使用 IdM CLI 删除现有委托规则。
- 要点:先决条件
- 列表:您已作为 admins 组的成员登录。
- 列表:输入 ipa delegation-del 命令。
- 列表:提示时,输入您要删除的委托规则的名称: $ ipa delegation-del Delegation name: basic manager attributes --------------------------------------------- Deleted delegation "basic manager attributes" ---------------------------------------------
- 命令/配置摘录:
$ ipa delegation-del Delegation name: basic manager attributes --------------------------------------------- Deleted delegation "basic manager attributes" ---------------------------------------------第 29 章 将权限委托给用户组,来使用 IdM Web UI 管理用户
- 要点:委托是 IdM 中的访问控制方法之一,以及自助服务规则和基于角色的访问控制 (RBAC)。您可以使用委托为一组用户分配权限,以管理另一组用户的条目。
- 要点:有关委派规则常规信息的详情,请参阅 委派规则 部分。
29.1. 使用 IdM WebUI 创建委托规则
- 要点:按照以下流程,使用 IdM WebUI 创建委托规则。
- 要点:先决条件
- 列表:您已作为 admins 组的成员登录到 IdM Web UI。
- 列表:从 IPA Server>Role-Based Access Control 菜单,点 Delegations。
- 列表:点击 Add。
- 列表:在 Add delegation 窗口中执行以下操作: 命名新的委托规则。 通过选择复选框来设置权限,指示用户是否有权查看给定的属性(读取),并添加或更改给定的属性(写入)。 在 User group 下拉菜单中选择 被授予权限的组,来查看或编辑成员组中的用户条目。 在 Member user group 下拉菜单中,选择 其条目可以被委派组的成员编辑 的组。 在属性框中,按您要授予权限的属性选择复选框。 单击 Add 按钮,以保存新的委托规则。
- 列表:命名新的委托规则。
- 列表:通过选择复选框来设置权限,指示用户是否有权查看给定的属性(读取),并添加或更改给定的属性(写入)。
29.2. 使用 IdM WebUI 查看现有的委托规则
- 要点:按照以下流程,使用 IdM WebUI 查看现有的委托规则。
- 要点:先决条件
- 列表:您已作为 admins 组的成员登录到 IdM Web UI。
- 列表:从 IPA Server>Role-Based Access Control 菜单,点 Delegations。
29.3. 使用 IdM WebUI 修改委托规则
- 要点:按照以下流程,使用 IdM Web UI 修改现有的委托规则。
- 要点:先决条件
- 列表:您已作为 admins 组的成员登录到 IdM Web UI。
- 列表:从 IPA Server>Role-Based Access Control 菜单,点 Delegations。
- 列表:点击您要修改的规则。
- 列表:进行所需的更改: 更改规则的名称。 通过选择复选框来更改授予的权限,指示用户是否有权查看给定属性(读取),并添加或更改给定的属性(写)。 在"用户组"下拉菜单中,选择 被授予权限 来查看或编辑成员组中的用户条目的组。 在 Member user group 下拉菜单中,选择其条目可以被委托组的成员编辑 的组。 在属性框中,按您要授予权限的属性选择复选框。要删除对属性的权限,请取消选中相关复选框。 单击 Save 按钮来保存更改。
- 列表:更改规则的名称。
- 列表:通过选择复选框来更改授予的权限,指示用户是否有权查看给定属性(读取),并添加或更改给定的属性(写)。
29.4. 使用 IdM WebUI 删除委托规则
- 要点:按照以下流程,使用 IdM Web UI 删除现有的委托规则。
- 要点:先决条件
- 列表:您已作为 admins 组的成员登录到 IdM Web UI。
- 列表:从 IPA Server>Role-Based Access Control 菜单,点 Delegations。
- 列表:选中您要删除的规则旁边的复选框。
- 列表:点击 Delete。
- 列表:单击 Delete 确认。
第 30 章 将权限委托到用户组,以使用 Ansible playbook 管理用户
- 要点:委托是 IdM 中的访问控制方法之一,以及自助服务规则和基于角色的访问控制 (RBAC)。您可以使用委托为一组用户分配权限,以管理另一组用户的条目。
- 要点:有关委派规则常规信息的详情,请参阅 委派规则 部分。
30.1. 使用 Ansible 确保存在委托规则
- 要点:以下流程描述了如何使用 Ansible playbook 为新的 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.yml30.2. 使用 Ansible 确保没有委托规则
- 要点:以下流程描述了如何使用 Ansible playbook 来确保您的 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.yml30.3. 使用 Ansible 确保委托规则具有特定属性
- 要点:以下流程描述了如何使用 Ansible playbook 确保委托规则具有特定的设置。您可以使用此 playbook 修改您之前创建的委托角色。在示例中,您确保 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.yml30.4. 使用 Ansible 确保委托规则没有特定的属性
- 要点:以下流程描述了如何使用 Ansible playbook 来确保委托规则没有特定的设置。您可以使用此 playbook 确保委托角色没有授予不需要的访问权限。在示例中,您确保 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.yml第 31 章 使用 CLI 在 IdM 中管理基于角色的访问控制
- 要点:在身份管理(IdM)中了解更多有关基于角色的访问控制(RBAC)的信息。RBAC 是一个安全功能,限制对授权用户的访问。您可以使用特定权限定义角色,然后将这些角色分配给用户。
31.1. IdM 中的基于角色的访问控制
- 要点:与自助服务和委托访问控制相比,IdM 中的基于角色的访问控制(RBAC)向用户授予了完全不同的权限。
- 要点:基于角色的访问控制由三个部分组成:
- 列表:Permissions 授予执行特定任务的权利,如添加或删除用户、修改组并启用读访问。
- 列表:Privileges(特权) 结合了权限,例如添加新用户所需的所有权限。
- 列表:Roles(角色) 向用户、用户组、主机或主机组授予一组特权。
31.1.1. IdM 中的权限
- 要点:权限是基于角色的访问控制的最低级别单元,它们定义这些操作所应用到的 LDAP 条目。与构建块类似,可以根据需要将权限分配给多个特权。
- 要点:一个或多个权利定义了允许的操作 :
- 列表:write
- 列表:读取
- 列表:search
- 列表:compare
- 列表:add
- 列表:delete
- 注意:注意 如果目标 LDAP 条目不包含任何对组成员资格的引用,则不会应用 memberof 属性权限。
- 注意:注意 权限不能包含其他权限。
31.1.2. 默认管理的权限
- 要点:管理的权限是 IdM 默认附带的权限。它们的行为与用户创建的其他权限类似,但有以下区别:
- 要点:它们有三组属性:
- 列表:您无法删除它们或修改其名称、位置和目标属性。
- 列表:它们有三组属性: Default 属性,用户无法修改它们,因为它们由 IdM 管理 Included 属性,它们是用户添加的额外属性 Excluded 属性,这些属性由用户删除
- 列表:Default 属性,用户无法修改它们,因为它们由 IdM 管理
- 列表:Included 属性,它们是用户添加的额外属性
- 列表:Excluded 属性,这些属性由用户删除
- 列表:添加自动成员重新构建成员身份任务
- 注意:注意 虽然您无法删除受管权限,但将其绑定类型设置为权限并从所有特权中删除托管权限会有效地禁用该权限。
- 注意:注意 如果您试图通过命令行修改受管权限,系统不允许更改您无法修改的属性,命令会失败。如果您试图从 Web UI 修改受管权限,则无法修改的属性将被禁用。
31.1.3. IdM 中的特权
- 要点:特权是一组适用于角色的权限。
- 要点:虽然权限提供了执行单个操作的权限,但某些 IdM 任务需要多个权限才能成功。因此,特权组合了执行特定任务所需的不同权限。
- 列表:创建新用户条目
- 列表:重置用户密码
- 列表:将新用户添加到默认 IPA 用户组
- 注意:注意 特权可能不包含其他特权。
31.1.4. IdM 中的角色
- 要点:角色是用户为角色指定的特权列表。
- 要点:实际上,权限授予执行给定低级别任务(如创建用户条目和向组添加条目)的能力,特权组合了更高级别任务所需的一个或多个这些权限(如在给定组中创建新用户)。角色根据需要收集权限:例如,用户管理员角色能够添加、修改和删除用户。
- 注意:重要 角色用于对允许的操作进行分类。它们不用作实施特权升级或防止特权升级的工具。
- 注意:注意 角色不能包含其他角色。
31.1.5. Identity Management 中的预定义角色
- 要点:Red Hat Enterprise Linux Identity Management 提供了以下预定义角色的范围:
- 表格样本(共 7 行):
- 角色 | 特权 | 描述
- Enrollment Administrator | 主机注册 | 负责客户端或主机、注册
- helpdesk | 改用户和重置密码,修改组成员身份 | 负责执行简单的用户管理任务
- IT Security Specialist | Netgroups Administrators, HBAC Administrator, Sudo Administrator | 负责管理安全策略,如基于主机的访问控制、sudo 规则
31.2. 在 CLI 中管理 IdM 权限
- 要点:按照以下步骤,使用命令行(CLI)管理身份管理(IdM)权限。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:使用 ipa permission-add 命令创建新权限条目。例如,添加名为 dns admin 的权限: $ ipa permission-add "dns admin"
- 列表:使用以下选项指定权限的属性: --bindtype 指定绑定规则类型。此选项接受 all、anonymous 和 permission 参数。permission bindtype 表示只有通过角色授予此权限的用户才能行行它。 例如: $ ipa permission-add "dns admin" --bindtype=all 如果没有指定 --bindtype,则 permission 是默认值。 注意 不能对特权添加带有非默认绑定规则类型的权限。您也不能对非默认绑定规则类型设置特权中已存在的权限。 --right 列出了权限授予的权力,它替换了已弃用的 --permissions 选项。可用的值有 add、delete、re…
- 列表:--bindtype 指定绑定规则类型。此选项接受 all、anonymous 和 permission 参数。permission bindtype 表示只有通过角色授予此权限的用户才能行行它。 例如: $ ipa permission-add "dns admin" --bindtype=all 如果没有指定 --bindtype,则 permission 是默认值。 注意 不能对特权添加带有非默认绑定规则类型的权限。您也不能对非默认绑定规则类型设置特权中已存在的权限。
- 列表:--right 列出了权限授予的权力,它替换了已弃用的 --permissions 选项。可用的值有 add、delete、read、search、compare、write、all。 您可以使用多个 --right 选项或使用大括号内以逗号分隔的列表来设置多个属性。例如: $ ipa permission-add "dns admin" --right=read --right=write $ ipa permission-add "dns admin" --right={read,write} 注意 add 和 delete 是入门级操作(例如,删除用户、添加组等),而 read、search、compare 和 write …
- 命令/配置摘录:
$ ipa permission-add "dns admin"
$ ipa permission-add "dns admin" --bindtype=all- 注意:注意 不能对特权添加带有非默认绑定规则类型的权限。您也不能对非默认绑定规则类型设置特权中已存在的权限。
- 注意:注意 add 和 delete 是入门级操作(例如,删除用户、添加组等),而 read、search、compare 和 write 是更属性级的操作:您可以写入 userCertificate ,而不是读取 userPassword。
31.3. 现有权限的命令选项
- 要点:根据需要,使用以下变体修改现有权限:
- 要点:要查看特定权限,请使用 ipa permission-show 命令。
- 列表:要编辑现有权限,请使用 ipa permission-mod 命令。您可以使用与添加权限相同的命令选项。
- 列表:要查找现有权限,请使用 ipa permission-find 命令。您可以使用与添加权限相同的命令选项。
- 列表:要查看特定权限,请使用 ipa permission-show 命令。 --raw 参数显示生成的原始 389-ds ACI。例如: $ ipa permission-show <permission> --raw
- 列表:ipa permissions-del 命令完全删除权限。
- 命令/配置摘录:
$ ipa permission-show <permission> --raw31.4. 在 CLI 中管理 IdM 特权
- 要点:按照以下步骤,使用命令行(CLI)管理身份管理(IdM)特权。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:现有权限。有关权限的详情,请参阅 在 CLI 中管理 IdM 权限。
- 列表:使用 ipa privilege-add 命令添加特权条目 例如,使用描述添加名为 managing filesystems 的权限: $ ipa privilege-add "managing filesystems" --desc="for filesystems"
- 列表:使用 privilege- add-permission 命令为特权 组分配所需的权限 例如,要将名为 managing automount 和 managing ftp services 的权限添加到 managing filesystems 特权中: $ ipa privilege-add-permission "managing filesystems" --permissions="managing automount" --permissions="managing ftp services"
- 命令/配置摘录:
$ ipa privilege-add "managing filesystems" --desc="for filesystems"
$ ipa privilege-add-permission "managing filesystems" --permissions="managing automount" --permissions="managing ftp services"31.5. 现有权限的命令选项
- 要点:根据需要,使用以下变体修改现有特权:
- 列表:若要修改现有特权,可使用 ipa privilege-mod 命令。
- 列表:要查找现有特权,请使用 ipa privilege-find 命令。
- 列表:若要查看特定的特权,可使用 ipa privilege-show 命令。
- 列表:ipa privilege-remove-permission 命令从特权中删除一个或多个权限。
- 列表:ipa privilege-del 命令完全删除特权。
31.6. 在 CLI 中管理 IdM 角色
- 要点:按照以下步骤,使用命令行(CLI)管理身份管理(IdM)角色。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:现有特权。有关特权的详情,请参阅 在 CLI 中管理 IdM 特权。
- 列表:使用 ipa role-add 命令添加新角色条目: $ ipa role-add --desc="User Administrator" useradmin ------------------------ Added role "useradmin" ------------------------ Role name: useradmin Description: User Administrator
- 列表:使用 ipa role-add-privilege 命令将所需的特权添加到角色中: $ ipa role-add-privilege --privileges="user administrators" useradmin Role name: useradmin Description: User Administrator Privileges: user administrators ---------------------------- Number of privileges added 1 ----------------------------
- 列表:使用 ipa role-add-member 命令将所需的成员添加到角色中。允许的成员类型有: users、groups、hosts 和 hostgroups。例如,将名为 useradmins 的组添加到之前创建的 useradmin 角色中: $ ipa role-add-member --groups=useradmins useradmin Role name: useradmin Description: User Administrator Member groups: useradmins Privileges: user administrators ------------------------- Number…
- 命令/配置摘录:
$ ipa role-add --desc="User Administrator" useradmin ------------------------ Added role "useradmin" ------------------------ Role name: useradmin Description: User Administrator
$ ipa role-add-privilege --privileges="user administrators" useradmin Role name: useradmin Description: User Administrator Privileges: user administrators ---------------------------- Number of privileges added 1 ----------------------------31.7. 现有角色的命令选项
- 要点:根据需要,使用以下变体修改现有角色:
- 列表:若要修改现有角色,请使用 ipa role-mod 命令。
- 列表:要查找现有角色,请使用 ipa role-find 命令。
- 列表:要查看特定的角色,请使用 ipa role-show 命令。
- 列表:若要从角色中删除成员,请使用 ipa role-remove-member 命令。
- 列表:ipa role-remove-privilege 命令从角色中删除一个或多个特权。
- 列表:ipa role-del 命令将完全删除角色。
第 32 章 使用 IdM Web UI 管理基于角色的访问控制
- 要点:在身份管理(IdM)中了解更多有关基于角色的访问控制(RBAC)的信息。RBAC 是一个安全功能,限制对授权用户的访问。您可以使用特定权限定义角色,然后将这些角色分配给用户。
- 要点:有关 IdM 中 基于角色的访问控制的常规信息,请参阅 IdM 中的基于角色的访问控制。
32.1. 在 IdM Web UI 中管理权限
- 要点:按照以下流程,使用 Web 界面(IdM Web UI)在身份管理(IdM)中管理权限。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:要添加新权限,请打开 IPA Server>Role-Based Access Control 子菜单,然后选择 Permissions :
- 列表:此时会打开权限列表:点击权限列表顶部的 Add 按钮:
- 列表:此时会打开 Add Permission 表单。指定新权限的名称并定义其属性。
- 列表:选择适当的绑定规则类型: permission 是默认的权限类型,通过特权和角色授予访问权限 all 指定权限适用于所有经过身份验证的用户 anonymous 指定权限适用于所有用户,包括未经身份验证的用户 注意 不能对特权添加带有非默认绑定规则类型的权限。您也不能对非默认绑定规则类型设置特权中已存在的权限。
- 注意:注意 不能对特权添加带有非默认绑定规则类型的权限。您也不能对非默认绑定规则类型设置特权中已存在的权限。
- 注意:注意 如果目标 LDAP 条目不包含对组成员资格的任何引用,则不会应用设置 memberof 属性权限。
32.2. 在 IdM Web UI 中管理特权
- 要点:按照以下流程,使用 Web 界面(IdM Web UI)在 IdM 中管理特权。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:要添加新的特权,请打开 IPA Server>Role-Based Access Control 子菜单,然后选择 Privileges :
- 列表:此时会打开权限列表。单击特权列表顶部的 Add 按钮。
- 列表:此时会打开 Add Privilege 表单。输入特权的名称和描述。
- 列表:单击 Add and Edit 按钮来保存新特权,并继续特权配置页面来添加权限。
32.3. 在 IdM Web UI 中管理角色
- 要点:按照以下流程,使用 Web 界面(IdM Web UI)管理身份管理(IdM)中的角色。
- 要点:先决条件
- 列表:管理 IdM 或 用户管理员 角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:要添加新角色,请打开 IPA Server>Role-Based Access Control 子菜单,然后选择 Roles :
- 列表:角色列表会打开。单击角色列表顶部的 Add 按钮。
- 列表:此时会打开 Add Role 表单。输入角色名称和描述:
- 列表:单击 Add and Edit 按钮,以保存新角色,并继续到角色配置页面来添加特权和用户。
第 33 章 在 IdM 中使用 Ansible playbook 管理基于角色的访问控制
- 要点:基于角色的访问控制 (RBAC) 是一种基于角色和特权定义的策略中立访问控制机制。在 Identity Management (IdM) 中的 RBAC 组件是角色、权限和权限:
- 要点:尤其是在大型公司,使用 RBAC 可以帮助创建具有各个职责领域的管理员分层系统。
- 列表:Permissions 授予执行特定任务的权利,如添加或删除用户、修改组并启用读访问。
- 列表:Privileges(特权) 结合了权限,例如添加新用户所需的所有权限。
- 列表:Roles(角色) 向用户、用户组、主机或主机组授予一组特权。
33.1. 其他资源
- 列表:准备您的环境以使用 Ansible playbook 管理 IdM
- 列表:IdM 中的权限
- 列表:IdM 中的特权
- 列表:IdM 中的角色
第 34 章 使用 Ansible playbook 管理 RBAC 特权
- 要点:基于角色的访问控制 (RBAC) 是一种基于角色、特权和权限定义的策略中立访问控制机制。尤其是在大型公司,使用 RBAC 可以帮助创建具有各个职责领域的管理员分层系统。
- 要点:了解如何使用 Ansible playbook 在 使用 Ansible playbook 管理身份管理(IdM)中的 RBAC 特权 一章,在 RHEL 10 文档中安装和管理身份管理 一章。
34.1. 其他资源
- 列表:准备您的环境以使用 Ansible playbook 管理 IdM
- 列表:IdM 中的权限
- 列表:IdM 中的特权
第 35 章 使用 Ansible playbook 在 IdM 中管理 RBAC 权限
- 要点:基于角色的访问控制 (RBAC) 是一种基于角色、特权和权限定义的策略中立访问控制机制。尤其是在大型公司,使用 RBAC 可以帮助创建具有各个职责领域的管理员分层系统。
- 要点:了解如何使用 Ansible playbook 在身份管理(IdM) 中管理 RBAC 权限,了解如何使用 Ansible playbook 在 RHEL 10 文档中安装和管理身份管理的 IdM 一章中管理 RBAC 权限。
35.1. 其他资源
- 列表:准备您的环境以使用 Ansible playbook 管理 IdM
- 列表:IdM 中的权限
- 列表:IdM 中的特权
第 36 章 使用 ID 视图来覆盖 IdM 客户端上的用户属性值
- 要点:如果身份管理(IdM)用户想覆盖存储在 IdM LDAP 服务器中的某些用户或组属性,如登录名称、主目录、用于身份验证的证书或 SSH 密钥,则您作为 IdM 管理员可使用 IdM ID 视图重新定义特定 IdM 客户端上的这些值。例如,您可以为用户最常用于登录 IdM 的 IdM 客户端上为用户指定不同的主目录。
- 要点:了解如何在作为客户端注册到 IdM 的主机上重新定义与 IdM 用户关联的 POSIX 属性值。
36.1. ID 视图
- 要点:身份管理(IdM)中的 ID 视图是一个指定以下信息的 IdM 客户端视图:
- 要点:ID 视图包含一个或多个覆盖。覆盖是集中定义的 POSIX 属性值的特定替换。
- 列表:集中定义的 POSIX 用户或组属性的新值
- 列表:应用新值的客户端主机或主机。
- 列表:为不同的环境定义不同的属性值。例如,您可以允许 IdM 管理员或其他 IdM 用户在不同的 IdM 客户端上拥有不同的主目录:您可以将 /home/crypt/username 配置为此用户在一个 IdM 客户端上的主目录,将 /dropbox/username 配置为此用户在另一个客户端上的主目录。在这种情况下使用 ID 视图非常方便,例如,更改客户端 /etc/sssd/sssd.conf 文件中的 fallback_homedir、overwrite_homedir 或其他主目录变量将影响所有用户。有关示例过程,请参阅 添加 ID 视图来覆盖 IdM 客户端上的 IdM 用户主目录。
- 列表:将之前生成的属性值替换为其他值,例如覆盖用户的 UID。当您要实现系统范围的更改时,此功能非常有用,否则在 LDAP 端很难实现,例如将 1009 设为 IdM 用户的 UID。用于生成 IdM 用户 UID 的 IdM ID 范围一开始不要低于 1000 甚至 10000。如果 IdM 用户在所有 IdM 客户端上模拟 UID 为1009 的本地用户是有原因的,那么您可以使用 ID 视图覆盖在 IdM 中创建用户时生成的 IdM 用户的 UID。
- 列表:为活动目录用户使用 ID 视图
- 列表:SSSD 客户端侧视图
- 注意:重要 您只能将 ID 视图应用于 IdM 客户端,不能应用于 IdM 服务器。
36.2. ID 视图对 SSSD 性能的潜在负面影响
- 要点:当您定义 ID 视图时,IdM 会将所需的覆盖值放在 IdM 服务器的系统安全服务守护进程(SSSD)缓存中。在 IdM 客户端上运行的 SSSD 然后从服务器缓存中检索覆盖值。
- 要点:应用 ID 视图可能会对系统安全服务守护进程(SSSD)的性能造成负面影响,因为某些优化和 ID 视图无法同时运行。例如,ID 视图会防止 SSSD 优化在服务器上查找组的过程:
- 列表:使用 ID 视图时,如果组名称已被覆盖,SSSD 必须检查返回的组成员名称列表中的每个成员。
- 列表:如果没有 ID 视图,SSSD 只能从组对象的成员属性收集用户名。
36.3. ID 视图可以覆盖的属性
- 要点:ID 视图由用户和组 ID 覆盖组成。覆盖定义新的 POSIX 属性值。
- 要点:用户和组 ID 覆盖可以为以下 POSIX 属性定义新值:
- 列表:登录名(uid)
- 列表:GECOS 条目(gecos)
- 列表:UID 号(uidNumber)
- 列表:GID 号(gidNumber)
- 列表:登录 shell(loginShell)
- 列表:主目录(homeDirectory)
36.4. 获取 ID 视图命令的帮助信息
- 要点:您可以获得 IdM 命令行界面(CLI)上涉及身份管理(IdM)ID 视图的命令的帮助。
- 要点:先决条件
- 列表:您已获得了 IdM 用户的 Kerberos 票据。
- 列表:要显示用于管理 ID 视图和覆盖的所有命令: $ ipa help idviews ID Views Manage ID Views IPA allows to override certain properties of users and groups[...] [...] Topic commands: idoverridegroup-add Add a new Group ID override idoverridegroup-del Delete a Group ID override [...]
- 列表:要显示特定命令的详细帮助信息,请在命令中添加 --help 选项: $ ipa idview-add --help Usage: ipa [global-options] idview-add NAME [options] Add a new ID View. Options: -h, --help show this help message and exit --desc=STR Description [...]
- 命令/配置摘录:
$ ipa help idviews ID Views Manage ID Views IPA allows to override certain properties of users and groups[...] [...] Topic commands: idoverridegroup-add Add a new Group ID override idoverridegroup-del Delete a Group ID override [...]
$ ipa idview-add --help Usage: ipa [global-options] idview-add NAME [options] Add a new ID View. Options: -h, --help show this help message and exit --desc=STR Description [...]36.5. 使用 ID 视图来覆盖特定主机上 IdM 用户的登录名称
- 要点:为特定 IdM 客户端创建 ID 视图,以覆盖与特定 IdM 用户关联的 POSIX 属性值。此流程使用 ID 视图示例,它允许名为 idm_user 的 IdM 用户使用 user_1234 登录名称登录到名为 client1 的 IdM 客户端。
- 要点:先决条件
- 列表:以 IdM 管理员身份登录。
- 列表:在 IdM 服务器上,创建一个新的 ID 视图。例如,要创建一个名为 example_for_client1 的 ID 视图: $ ipa idview-add example_for_client1 --------------------------- Added ID View "example_for_client1" --------------------------- ID View Name: example_for_client1
- 列表:将用户添加到 example_for_client1 ID 视图中。覆盖用户登录: 输入 ipa idoverrideuser-add 命令 添加 ID 视图的名称 添加用户名,也称为锚 添加 --login 选项: $ ipa idoverrideuser-add example_for_client1 idm_user --login=user_1234 ----------------------------- Added User ID override "idm_user" ----------------------------- Anchor to override: idm_user User login: u…
- 列表:输入 ipa idoverrideuser-add 命令
- 列表:添加 ID 视图的名称
- 列表:添加用户名,也称为锚
- 命令/配置摘录:
$ ipa idview-add example_for_client1 --------------------------- Added ID View "example_for_client1" --------------------------- ID View Name: example_for_client1
$ ipa idoverrideuser-add example_for_client1 idm_user --login=user_1234 ----------------------------- Added User ID override "idm_user" ----------------------------- Anchor to override: idm_user User login: user_1234- 注意:注意 ipa idoverrideuser-add --certificate 命令替换指定 ID 视图中帐户的所有现有证书。要附加额外的证书,请使用 ipa idoverrideuser-add-cert 命令: $ ipa idoverrideuser-add-cert example_for_client1 user --certificate="MIIEATCC..."
- 注意:注意 ipa idview-apply 命令也接受 --hostgroups 选项。选项将 ID 视图应用到属于指定主机组的主机,但不会将 ID 视图与主机组本身相关联。相反,--hostgroups 选项会展开指定主机组的成员,并将 --hosts 选项分别应用到其中的每一个成员。 这意味着,如果以后将主机添加到主机组中,则 ID 视图不会应用到新主机。
36.6. 修改 IdM ID 视图
- 要点:身份管理(IdM)中的 ID 视图覆盖与特定 IdM 用户关联的 POSIX 属性值。按照以下步流程修改现有的 ID 视图。具体来说,它描述了如何修改 ID 视图,使名为 idm_user 的用户使用 /home/user_1234/ 目录作为用户主目录,而不是 client1.idm.example.com IdM 客户端上的 /home/idm_user/。
- 要点:先决条件
- 列表:您有访问 IdM 客户端系统的 root 权限。
- 列表:您已以具有所需特权的用户身份登录,如 admin。
- 列表:为 idm_user 配置了一个 ID 视图,它应用到 IdM 客户端。
- 列表:在 IdM 客户端上,创建您希望 idm_user 在 client1.idm.example.com 上用作用户主目录的目录: # mkdir /home/user_1234/
- 列表:在 IdM 客户端上,更改目录的所有权: # chown idm_user:idm_user /home/user_1234/
- 列表:在 IdM 服务器上,显示 ID 视图,包括当前应用 ID 视图的主机。显示名为 example_for_client1 的 ID 视图: $ ipa idview-show example_for_client1 --all dn: cn=example_for_client1,cn=views,cn=accounts,dc=idm,dc=example,dc=com ID View Name: example_for_client1 User object override: idm_user Hosts the view applies to: client1.idm.example.com objectclass…
- 命令/配置摘录:
# mkdir /home/user_1234/
# chown idm_user:idm_user /home/user_1234/36.7. 添加 ID 视图来覆盖 IdM 客户端上的 IdM 用户主目录
- 要点:身份管理(IdM)中的 ID 视图覆盖与特定 IdM 用户关联的 POSIX 属性值。按照以下步骤,在名为 client1 的 IdM 客户端上创建一个应用于 idm_user 的 ID 视图,以便该用户使用 /home/user_1234/ 目录作为用户主目录而不是 /home/idm_user/。
- 要点:先决条件
- 列表:您有访问 IdM 客户端系统的 root 权限。
- 列表:您已以具有所需特权的用户身份登录,如 admin。
- 列表:在 IdM 客户端上,创建您希望 idm_user 用作用户主目录的目录: # mkdir /home/user_1234/
- 列表:在 IdM 客户端上,更改目录的所有权: # chown idm_user:idm_user /home/user_1234/
- 列表:在 IdM 服务器上,创建一个 ID 视图。例如,要创建一个名为 example_for_client1 的 ID 视图: $ ipa idview-add example_for_client1 --------------------------- Added ID View "example_for_client1" --------------------------- ID View Name: example_for_client1
- 列表:在 IdM 服务器上,在 example_for_client1 ID 视图中添加用户覆盖。覆盖用户主目录: 输入 ipa idoverrideuser-add 命令 添加 ID 视图的名称 添加用户名,也称为锚 添加 --homedir 选项: $ ipa idoverrideuser-add example_for_client1 idm_user --homedir=/home/user_1234 ----------------------------- Added User ID override "idm_user" ----------------------------- Anchor to override: …
- 命令/配置摘录:
# mkdir /home/user_1234/
# chown idm_user:idm_user /home/user_1234/- 注意:注意 ipa idview-apply 命令也接受 --hostgroups 选项。选项将 ID 视图应用到属于指定主机组的主机,但不会将 ID 视图与主机组本身相关联。相反,--hostgroups 选项会展开指定主机组的成员,并将 --hosts 选项分别应用到其中的每一个成员。 这意味着,如果以后将主机添加到主机组中,则 ID 视图不会应用到新主机。
36.8. 将 ID 视图应用到 IdM 主机组
- 要点:ipa idview-apply 命令接受 --hostgroups 选项。不过,选项充当一次性操作,它将 ID 视图应用到当前属于指定主机组的主机,但不动态地将 ID 视图与主机组本身关联。--hostgroups 选项将展开指定主机组的成员,并将 --hosts 选项分别应用到其中的每一个成员。
- 要点:如果稍后向主机组添加新主机,您必须使用 ipa idview-apply 命令及 --hosts 选项,手动将 ID 视图应用到新主机。
- 列表:如何创建主机组并向其添加主机。
- 列表:如何将 ID 视图应用到主机组。
- 列表:如何向主机组添加新主机,并将 ID 视图应用到新主机。
- 列表:确保 IdM 中存在您要应用到主机组的 ID 视图。例如,要创建一个 ID 视图来覆盖 AD 用户的 GID,请参阅 覆盖带有 ID 视图的 IdM 客户端上 AD 用户的 Default Trust View 属性
- 列表:创建主机组并为其添加主机: 创建主机组.例如,创建名为 baltimore 的主机组: [root@server ~]# ipa hostgroup-add --desc="Baltimore hosts" baltimore --------------------------- Added hostgroup "baltimore" --------------------------- Host-group: baltimore Description: Baltimore hosts 将主机添加到主机组。例如,将 host102 和 host103 添加到 baltimore 主机组: [root@server ~]# i…
- 列表:创建主机组.例如,创建名为 baltimore 的主机组: [root@server ~]# ipa hostgroup-add --desc="Baltimore hosts" baltimore --------------------------- Added hostgroup "baltimore" --------------------------- Host-group: baltimore Description: Baltimore hosts
- 命令/配置摘录:
[root@server ~]# ipa hostgroup-add --desc="Baltimore hosts" baltimore --------------------------- Added hostgroup "baltimore" --------------------------- Host-group: baltimore Description: Baltimore hosts
[root@server ~]# ipa hostgroup-add-member --hosts={host102,host103} baltimore Host-group: baltimore Description: Baltimore hosts Member hosts: host102.idm.example.com, host103.idm.example.com ------------------------- Number of members added 2 -------------------------36.9. 将 NIS 域迁移到身份管理
- 要点:您可以使用 ID 视图为现有主机设置主机特定的 UID 和 GID,以防止在将 NIS 域迁移到 IdM 时更改文件和目录的权限。
- 要点:先决条件
- 列表:使用 kinit admin 命令,将自己认证为 admin 。
- 列表:在 IdM 域中添加用户和组。 使用 ipa user-add 命令创建用户。如需更多信息,请参阅 将用户添加到 IdM。 使用 ipa group-add 命令创建组。如需更多信息,请参阅: 将组添加到 IdM。
- 列表:使用 ipa user-add 命令创建用户。如需更多信息,请参阅 将用户添加到 IdM。
- 列表:使用 ipa group-add 命令创建组。如需更多信息,请参阅: 将组添加到 IdM。
- 列表:覆盖在用户创建过程中 Idm 生成的 ID: 使用 ipa idview-add 命令创建一个新的 ID 视图。如需更多信息,请参阅: 获取 ID 视图命令的帮助信息。 使用 ipa idoverrideuser-add 和 idoverridegroup-add 将用户和组的 ID 覆盖分别添加到 ID 视图。
- 列表:使用 ipa idview-add 命令创建一个新的 ID 视图。如需更多信息,请参阅: 获取 ID 视图命令的帮助信息。
- 命令/配置摘录:
$ ipa idview-show example-view ID View Name: example-view User object overrides: example-user1 Group object overrides: example-group36.10. 使用 Ansible 覆盖特定主机上 IdM 用户的登录名称和主目录
- 要点:完成此流程,以使用 idoverrideuser ansible-freeipa 模块为特定身份管理(IdM)客户端创建一个 ID 视图,该视图覆盖与特定 IdM 用户关联的 POSIX 属性值。此流程使用 ID 视图示例,它允许名为 idm_user 的 IdM 用户使用 user_1234 登录名称登录到名为 client1.idm.example.com 的 IdM 客户端。此外,ID 视图会修改 idm_user 的主目录,以便在登录 client1 后,用户主目录为 /home/user_1234/。
- 要点:先决条件
- 列表:在控制节点上: 您在使用 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 idoverrideuser hosts: ipaserver become: false gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure idview_for_client1 is present idview: ipaadmin_password: "{{ ipaadmin_password }}" name: idview_for_client1 - name: Ensure idview_for_client1 is applied to client1.idm.example.com idview: ipaadmin_password: "{{ ipaadmin_password }}" name: idview_for_client1 host: client1.idm.example.com action: member - name: Ensure idm_user is present in idview_for_client1 with homedir /home/user_1234 and name user_1234 ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin…
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/add-idoverrideuser-with-name-and-homedir.yml36.11. 使用 Ansible 配置在 IdM 客户端上启用 SSH 密钥登录的 ID 视图
- 要点:完成此流程,以使用 idoverrideuser ansible-freeipa 模块,来确保 IdM 用户可以使用特定的 SSH 密钥登录到特定的 IdM 客户端。此流程使用 ID 视图示例,它允许名为 idm_user 的 IdM 用户使用 SSH 密钥登录到名为 client1.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 域的一部分。
- 命令/配置摘录:
--- - name: Playbook to manage idoverrideuser hosts: ipaserver become: false gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure test user idm_user is present in idview idview_for_client1 with sshpubkey ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: idview_for_client1 anchor: idm_user sshpubkey: - ssh-rsa AAAAB3NzaC1yc2EAAADAQABAAABgQCqmVDpEX5gnSjKuv97Ay ... - name: Ensure idview_for_client1 is applied to client1.idm.example.com ipaidview: ipaadmin_password: "{{ ipaadmin_password }}" name: idview_for_client1 host: client1.idm.example.com action: member
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/ensure-idoverrideuser-can-login-with-sshkey.yml- 注意:注意 此 ID 视图可用于增强特定的 HBAC 规则。
36.12. 使用 Ansible 为用户 ID 提供对 IdM 客户端上本地声卡的覆盖访问
- 要点:您可以使用 ansible-freeipa group 和 idoverrideuser 模块,使身份管理(IdM)或活动目录(AD)用户成员成为 IdM 客户端上本地 audio 组的成员。这授予 IdM 或 AD 用户对主机上声卡的特权访问。流程使用在第一个 playbook 任务中添加了 aduser@addomain.com ID 覆盖的 Default Trust View ID 视图的示例。在下一个 playbook 任务中,在 IdM 中创建了一个 GID 为 63 的 audio 组,它对应 RHEL 主机上本地 audio 组的 GID。同时,aduser@addomain.com ID 覆盖作为成员添加到 IdM audio 组中。
- 要点:先决条件
- 列表:您有访问要在其上执行流程第一部分的 IdM 客户端的 root 访问权限。在示例中,这是 client.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 文件的密码的文件。
- 命令/配置摘录:
[...] # Allow initgroups to default to the setting for group. initgroups: sss [SUCCESS=merge] files
$ getent group audio --------------------- audio:x:6336.13. 使用 Ansible 确保具有特定 UID 的 IdM 用户 在 ID 视图中存在
- 要点:如果您在一个实验室工作,其中您有自己的计算机,但您的 /home/ 目录位于服务器导出的共享驱动器中,则您可以有两个用户:
- 要点:如果您需要对您的文件具有完全访问,无论您是以 IdM 用户还是以本地用户登录,您都可以通过给这两个用户相同的 UID 来实现。
- 列表:一个是系统范围的用户,集中存储在身份管理(IdM)中。
- 列表:一个其帐户是本地的,存储在相关系统上。
- 列表:将 ID 视图应用到名为 idview_for_host01 的 host01。
- 列表:确保在 idview_for_host01 中,对 UID 为 20001 的 idm_user 的用户 ID 覆盖存在。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您在使用 Ansible 版本 2.15 或更高版本。 您已安装了 ansible-freeipa 软件包。 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 存储了您的 ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
- 列表:您在使用 Ansible 版本 2.15 或更高版本。
- 命令/配置摘录:
--- - name: Ensure both local user and IdM user have access to same files hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure idview_for_host1 is applied to host1.idm.example.com ipaidview: ipaadmin_password: "{{ ipaadmin_password }}" name: *idview_for_host01* host: *host1.idm.example.com* - name: Ensure idmuser is present in idview_for_host01 with the UID of 20001 ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: *idview_for_host01* anchor: *idm_user* UID: 20001
$ ansible-playbook --vault-password-file=password_file -v -i inventory ensure-idmuser-and-local-user-have-access-to-same-files.yml36.14. 使用 Ansible 确保 IdM 用户可以使用两个证书登录到 IdM 客户端
- 要点:如果您希望一个通常使用密码登录到 IdM 身份管理(IdM)的用户只使用智能卡验证到一个特定的 IdM 客户端,则您可以创建一个 ID 视图,该视图要求对该客户端上的用户进行认证。
- 要点:完成此流程,以使用 ansible-freeipa idoverrideuser 模块,来:
- 列表:将 ID 视图应用到名为 idview_for_host01 的 host01。
- 列表:确保在 idview_for_host01 中,对带有两个证书的 idm_user 的用户 ID 覆盖存在。
- 列表:您已配置了 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 both local user and IdM user have access to same files hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure idview_for_host1 is applied to host01.idm.example.com ipaidview: ipaadmin_password: "{{ ipaadmin_password }}" name: *idview_for_host01* host: *host01.idm.example.com* - name: Ensure an IdM user is present in ID view with two certificates ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: *idview_for_host01* anchor: *idm_user* certificate: - "{{ lookup('file', 'cert1.b64', rstrip=False) }}" - "{{ lookup('file', 'cert2.b64', rstrip=False) }}"
$ ansible-playbook --vault-password-file=password_file -v -i inventory ensure-idmuser-present-in-idview-with-certificates.yml36.15. 使用 Ansible 授予 IdM 组访问 IdM 客户端上声卡的权限
- 要点:您可以使用 ansible-freeipa idview 和 idoverridegroup 模块,使身份管理(IdM)或活动目录(AD)用户成为 IdM 客户端上本地 audio 组的成员。这授予 IdM 或 AD 用户对主机上声卡的特权访问。
- 要点:该流程使用 idview_for_host01 ID 视图的示例,其使用 GID 63 添加 音频 ID 覆盖,它与 RHEL 主机上本地 音频 组的 GID 对应。idview_for_host01 ID 视图被应用到名为 host01.idm.example.com 的 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 域的一部分。
- 命令/配置摘录:
$ *getent group audio* --------------------- audio:x:63
--- - name: Playbook to give IdM group access to sound card on IdM client hosts: ipaserver become: false tasks: - name: Ensure the audio group exists in IdM ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: audio - name: Ensure idview_for_host01 exists and is applied to host01.idm.example.com ipaidview: ipaadmin_password: "{{ ipaadmin_password }}" name: idview_for_host01 host: host01.idm.example.com - name: Add an override for the IdM audio group with GID 63 to idview_for_host01 ipaidoverridegroup: ipaadmin_password: "{{ ipaadmin_password }}" idview: idview_for_host01 anchor: audio GID: 63第 37 章 为活动目录用户使用 ID 视图
- 要点:您可以使用 ID 视图为 IdM-AD Trust 环境中活动目录(AD)用户的 POSIX 属性指定新值。
- 要点:默认情况下,IdM 对所有 AD 用户应用 Default Trust View 。您可以在单个 IdM 客户端上配置其它 ID 视图,以进一步调整特定用户所收到的 POSIX 属性。
37.1. Default Trust View 是如何工作的
- 要点:Default Trust View 是默认的 ID 视图,其总是在基于信任的设置被应用于到 AD 用户和组。当您使用 ipa-adtrust-install 命令建立信任时,它会被自动创建,且不能被删除。
- 要点:使用 Default Trust View,您可以为 AD 用户和组定义自定义 POSIX 属性,从而覆盖 AD 中定义的值。
- 列表:如果特定于主机的 ID 视图中定义了一个属性,则 IdM 会应用此 ID 视图中的值。
- 列表:如果在特定于主机的 ID 视图中未定义一个属性,则 IdM 会应用 Default Trust View 中的值。
- 列表:使用 ID 视图来覆盖 IdM 客户端上的用户属性值
- 注意:注意 Default Trust View 仅接受对 AD 用户和组的覆盖,不接受对 IdM 用户和组的覆盖。
- 注意:注意 您只能应用特定于主机的 ID 视图来覆盖 IdM 客户端上的 Default Trust View。IdM 服务器和副本总是应用 Default Trust View 中的值。
- 表格样本(共 4 行):
- AD 中的值 | 默认信任视图 | 结果
- 登录 | ad_user | ad_user | ad_user
- UID | 111 | 222 | 222
- GID | 111 | (无值) | 111
37.2. 通过修改 Default Trust View 为 AD 用户定义全局属性
- 要点:如果要在整个 IdM 部署中覆盖活动目录(AD)用户的 POSIX 属性,请在 Default Trust View 中修改该用户的条目。这个过程将 AD 用户 ad_user@ad.example.com 的 GID 设为 732000006。
- 要点:先决条件
- 列表:您已作为 IdM 管理员进行了身份验证。
- 列表:具有 GID 的组必须存在,否则您必须在组的 ID 覆盖中设置 GID。
- 列表:作为 IdM 管理员,在 Default Trust View 中为 AD 用户创建一个 ID 覆盖,其将 GID 号更改为 732000006: # ipa idoverrideuser-add 'Default Trust View' ad_user@ad.example.com --gidnumber=732000006
- 列表:从所有 IdM 服务器和客户端上的 SSSD 缓存中清除 ad_user@ad.example.com 用户的条目。这会删除过时的数据,并允许应用新的覆盖值。 # sssctl cache-expire -u ad_user@ad.example.com
- 列表:检索 ad_user@ad.example.com 用户的信息以验证 GID 是否反映了更新的值。 # id ad_user@ad.example.com uid=702801456(ad_user@ad.example.com) gid=732000006(ad_admins) groups=732000006(ad_admins),702800513(domain users@ad.example.com)
- 命令/配置摘录:
# ipa idoverrideuser-add 'Default Trust View' ad_user@ad.example.com --gidnumber=732000006
# sssctl cache-expire -u ad_user@ad.example.com37.3. 对带有 ID 视图的 IdM 客户端上的 AD 用户覆盖 Default Trust View 属性
- 要点:您可能希望为活动目录(AD)用户覆盖 Default Trust View 中的一些 POSIX 属性。例如,您可能需要在一个特定的 IdM 客户端上给 AD 用户赋予一个不同的 GID。对 AD 用户,您可以使用一个 ID 视图覆盖 Default Trust View 中的一个值,并将其应用到单个主机。此流程解释了如何在 client1.idm.example.com IdM 客户端上将 ad_user@ad.example.com AD 用户的 GID 设置为 732001337。
- 要点:先决条件
- 列表:您有访问 IdM 客户端系统的 root 权限。
- 列表:您已作为具有所需权限的用户登录了,如 admin 用户。
- 列表:在 IdM 服务器上,创建一个 ID 视图。例如,要创建一个名为 example_for_client1 的 ID 视图: $ ipa idview-add example_for_client1 --------------------------- Added ID View "example_for_client1" --------------------------- ID View Name: example_for_client1
- 列表:在 IdM 服务器上,sdd 用户覆盖 example_for_client1 ID 视图。要覆盖用户的 GID: 输入 ipa idoverrideuser-add 命令 添加 ID 视图的名称 添加用户名,也称为锚 添加 --gidnumber= 选项: $ ipa idoverrideuser-add example_for_client1 ad_user@ad.example.com --gidnumber=732001337 ----------------------------- Added User ID override "ad_user@ad.example.com" ---------------------…
- 列表:输入 ipa idoverrideuser-add 命令
- 列表:添加 ID 视图的名称
- 命令/配置摘录:
$ ipa idview-add example_for_client1 --------------------------- Added ID View "example_for_client1" --------------------------- ID View Name: example_for_client1
$ ipa idoverrideuser-add example_for_client1 ad_user@ad.example.com --gidnumber=732001337 ----------------------------- Added User ID override "ad_user@ad.example.com" ----------------------------- Anchor to override: ad_user@ad.example.com GID: 732001337- 注意:注意 ipa idview-apply 命令也接受 --hostgroups 选项。选项将 ID 视图应用到属于指定主机组的主机,但不会将 ID 视图与主机组本身相关联。相反,--hostgroups 选项会展开指定主机组的成员,并将 --hosts 选项分别应用到其中的每一个成员。 这意味着,如果以后将主机添加到主机组中,则 ID 视图不会应用到新主机。
第 38 章 手动调整 ID 范围
- 要点:IdM 服务器生成唯一用户 ID(UID)和组 ID(GID)号。通过为副本创建和分配不同的 ID 范围,还确保它们永远不会生成相同的 ID 号。默认情况下,此过程是自动的。但是,您可以在 IdM 服务器安装过程中手动调整 IdM ID 范围,或者手动定义副本的 DNA ID 范围。
38.1. ID 范围
- 要点:ID 号被划分为 ID 范围。为各个服务器和副本保持单独的数字范围可避免为某个条目发布的 ID 号已在其他服务器或副本上的另一个条目使用的几率。
- 要点:请注意,有两种不同的 ID 范围:
- 列表:IdM ID 范围,是在安装第一个服务器时分配的。此范围在创建后不可修改。但是,除了原始 ID 范围外,您还可以创建新的 IdM ID 范围。如需更多信息,请参阅 自动 ID 范围分配 和 添加一个新的 IdM ID 范围。
- 列表:分布式数字分配(DNA)ID 范围,可由用户修改。它们必须适合现有的 IdM ID 范围。如需更多信息,请参阅 手动分配 DNA ID 范围。 也可以给副本分配 下一个 DNA ID 范围。当副本当前范围内的 ID 不足时,副本会使用其下一个范围。当副本被删除时,下一个范围不会被自动分配,您必须手动分配它们。
- 列表:服务器的下一个可用数字: DNA 范围的低端
- 列表:范围大小:ID 在 DNA 范围内的数量
38.2. 自动 ID 范围分配
- 要点:如果初始服务器在副本向其请求 DNA ID 范围之前停止工作,则副本无法与服务器联系来请求 ID 范围。尝试在副本上添加新用户会失败。在这种情况下,您可以找出分配给禁用的服务器的 ID 范围,并 手动为副本分配一个 ID 范围。
- 注意:注意 避免在创建后修改此 IdM ID 范围。您可以使用 手动分配 DNA ID 范围 中描述的命令来手动调整分布式数字分配( DNA) ID 范围。与 IdM ID 范围匹配的 DNA 范围是在安装过程中自动创建的。
- 注意:重要 安装副本时,它不会 立即收到一个 ID 范围。副本在首次使用 DNA 插件时收到一个 ID 范围,例如首次添加用户时。
38.3. 在服务器安装过程中手动分配 IdM ID 范围
- 要点:您可以覆盖默认行为,并手动设置 IdM ID 范围,而不是随机分配。
- 要点:流程
- 列表:您可以在服务器安装过程中使用 ipa-server-install 及以下两个选项来手动定义 IdM ID 范围: --idstart 给出 UID 和 GID 号的起始值。 --idmax 给出 UID 和 GID 号的最大值;默认情况下,值为 --idstart 起始值加上 199,999。
- 列表:--idstart 给出 UID 和 GID 号的起始值。
- 列表:--idmax 给出 UID 和 GID 号的最大值;默认情况下,值为 --idstart 起始值加上 199,999。
- 列表:要检查 ID 范围是否已正确分配,您可以使用 ipa idrange-find 命令显示已分配的 IdM ID 范围: # ipa idrange-find --------------- 1 range matched --------------- Range name: IDM.EXAMPLE.COM_id_range First Posix ID of the range: 882200000 Number of IDs in the range: 200000 Range type: local domain range ---------------------------- Number of entries…
- 命令/配置摘录:
# ipa idrange-find --------------- 1 range matched --------------- Range name: IDM.EXAMPLE.COM_id_range First Posix ID of the range: 882200000 Number of IDs in the range: 200000 Range type: local domain range ---------------------------- Number of entries returned 1 ----------------------------- 注意:重要 不要设置 UID 值为 1000 或更低的 ID 范围;这些值是保留给系统使用的。另外,不要设置包含 0 值的 ID 范围;SSSD 服务不处理 ID 为 0 的值。
38.4. 添加新的 IdM ID 范围
- 要点:在某些情况下,除了原始的 ID 范围,您可能想要创建新的 IdM ID 范围;例如,当副本的 ID 用完,且原始的 IdM ID 范围耗尽时。
- 要点:流程
- 列表:要创建新的 IdM ID 范围,请使用 ipa idrange-add 命令。您必须指定新范围名称、范围的第一个 ID 号、范围大小以及主和辅助 RID 范围的第一个 RID 号: # ipa idrange-add IDM.EXAMPLE.COM_new_range --base-id 5000 --range-size 1000 --rid-base 300000 --secondary-rid-base 1300000 ipa: WARNING: Service dirsrv@IDM-EXAMPLE-COM.service requires restart on IPA server <all IPA servers> to…
- 列表:在部署中的 所有 IdM 服务器 上重启 Directory Server 服务: # systemctl restart dirsrv@IDM-EXAMPLE-COM.service 这确保当您使用新范围中的 UID 创建用户时,它们分配了安全标识符(SID)。
- 列表:可选:立即更新 ID 范围: 清除系统安全服务守护进程(SSSD)缓存: # sss_cache -E 重启 SSSD 守护进程: # systemctl restart sssd 注意 如果您没有清除 SSSD 缓存并重新启动服务,SSSD 仅在更新域列表和其他存储在 IdM 服务器上的其他配置数据时检测到新的 ID 范围。
- 列表:清除系统安全服务守护进程(SSSD)缓存: # sss_cache -E
- 列表:重启 SSSD 守护进程: # systemctl restart sssd 注意 如果您没有清除 SSSD 缓存并重新启动服务,SSSD 仅在更新域列表和其他存储在 IdM 服务器上的其他配置数据时检测到新的 ID 范围。
- 列表:您可以使用 ipa idrange-find 命令检查新范围是否设置正确: # ipa idrange-find ---------------- 2 ranges matched ---------------- Range name: IDM.EXAMPLE.COM_id_range First Posix ID of the range: 882200000 Number of IDs in the range: 200000 Range type: local domain range Range name: IDM.EXAMPLE.COM_new_range First Posix ID of the ran…
- 命令/配置摘录:
# ipa idrange-add IDM.EXAMPLE.COM_new_range --base-id 5000 --range-size 1000 --rid-base 300000 --secondary-rid-base 1300000 ipa: WARNING: Service dirsrv@IDM-EXAMPLE-COM.service requires restart on IPA server <all IPA servers> to apply configuration changes. ------------------------------------------ Added ID range "IDM.EXAMPLE.COM_new_range" ------------------------------------------ Range name: IDM.EXAMPLE.COM_new_range First Posix ID of the range: 5000 Number of IDs in the range: 1000 First RID of the corresponding RID range: 300000 First RID of the secondary RID range: 1300000 Range type: local domain range
# systemctl restart dirsrv@IDM-EXAMPLE-COM.service- 注意:重要 添加新 IdM ID 范围不会自动创建新的 DNA ID 范围。您必须根据需要手动将新的 DNA ID 范围分配给副本。有关如何执行此操作的更多信息,请参阅 手动分配 DNA ID 范围。
- 注意:注意 如果您没有清除 SSSD 缓存并重新启动服务,SSSD 仅在更新域列表和其他存储在 IdM 服务器上的其他配置数据时检测到新的 ID 范围。
38.5. IdM ID 范围中的安全性和相对标识符的角色
- 要点:身份管理 (IdM) ID 范围由几个参数定义:
- 要点:您可以使用 ipa idrange-show 命令查看这些值:
- 列表:范围名称
- 列表:范围的第一个 POSIX ID
- 列表:范围大小: 范围内的 ID 数量
- 列表:对应的 RID range 的第一个 相对标识符 (RID)
- 列表:二级 RID 范围的第一个 RID
- 列表:域 SID
- 命令/配置摘录:
$ ipa idrange-show IDM.EXAMPLE.COM_id_range Range name: IDM.EXAMPLE.COM_id_range First Posix ID of the range: 196600000 Number of IDs in the range: 200000 First RID of the corresponding RID range: 1000 First RID of the secondary RID range: 1000000 Range type: local domain range- 注意:注意 该算法计算用户的 RID 会检查给定 POSIX ID 是否属于分配的 ID 范围,然后再计算对应的 RID。例如,如果第一个 ID 是 196600000,并且范围大小为 200000,那么 POSIX ID 为 1600000,则算法不会为其计算 RID。
38.6. 自动检测和修复 ID 范围问题
- 要点:身份管理(IdM)中的 Kerberos 使用 Privilege Attribute 证书(PAC)进行授权。要使用户和组正常工作,用户和组必须分配有安全标识符(SID)。只能为位于有效 ipa-local ID 范围内的实体生成 SID。
- 要点:如果在定义的 ipa-local 范围之外创建用户或组,或者现有范围配置错误,则 SID 生成任务可能会失败。这可以防止用户进行身份验证并获取 Kerberos 票据。
- 列表:您有运行该工具的 IdM 服务器的 root 访问权限。 重要 红帽强烈建议在应用 ipa-idrange-fix 工具推荐的任何更改前创建系统的完整备份。
- 列表:运行 ipa-idrange-fix 以分析当前的 ID 范围。您可以使用各种选项自定义此功能,例如: # ipa-idrange-fix --rangegap 300000 --minrange 20 --ridoffset 200000 --rangegap <value>: 指定要包含在单个建议范围内的 ID 的最大差距。默认值为 200000。 --minrange <value > : 设置形成有效新范围所需的最少 ID 数量。小于这个值的任何 ID 组将被列为手动解析的外部。默认值为 10。 --ridoffset <value > : 为新的 RID 基础设置一个偏移值,以便以后扩展现有范围。默认值为 100000。…
- 列表:--rangegap <value>: 指定要包含在单个建议范围内的 ID 的最大差距。默认值为 200000。
- 列表:--minrange <value > : 设置形成有效新范围所需的最少 ID 数量。小于这个值的任何 ID 组将被列为手动解析的外部。默认值为 10。
- 列表:--ridoffset <value > : 为新的 RID 基础设置一个偏移值,以便以后扩展现有范围。默认值为 100000。 注意 默认情况下,ipa-idrange-fix 工具会忽略 ID低于 1000 的用户和组,因为它们通常为系统帐户保留。要在分析中包含这些实体(不推荐),请使用-- allowunder1000 选项。
- 列表:工具显示提议的更改,如创建新 ID 范围。仔细检查提议的更改。 注意 ipa-idrange-fix 不会为没有它们的用户和组创建新的 SID。要创建缺少的 SID,请参阅在 IdM 中启用安全标识符(SID)。
- 命令/配置摘录:
# ipa-idrange-fix --rangegap 300000 --minrange 20 --ridoffset 200000
# cat /var/log/ipa/ipa-idrange-fix.log- 注意:重要 红帽强烈建议在应用 ipa-idrange-fix 工具推荐的任何更改前创建系统的完整备份。
- 注意:注意 默认情况下,ipa-idrange-fix 工具会忽略 ID低于 1000 的用户和组,因为它们通常为系统帐户保留。要在分析中包含这些实体(不推荐),请使用-- allowunder1000 选项。
38.7. 使用 Ansible 添加新的本地 IdM ID 范围
- 要点:在某些情况下,您可能需要创建新的 Identity Management (IdM) ID 范围以及原始的 ID 范围;例如,当副本退出 ID 且原始 IdM ID 范围相同时,原始 IdM ID 范围会被处理。以下示例演示了如何使用 Ansible playbook 创建新 IdM ID 范围。
- 要点:先决条件
- 列表:在控制节点上: 您在使用 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 manage idrange hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure local idrange is present ipaidrange: ipaadmin_password: "{{ ipaadmin_password }}" name: new_id_range base_id: 12000000 range_size: 200000 rid_base: 1000000 secondary_rid_base: 200000000- 注意:注意 添加新 IdM ID 范围不会自动创建新的 DNA ID 范围。您需要根据需要手动分配新的 DNA ID 范围。有关如何执行此操作的更多信息,请参阅 手动分配 DNA ID 范围。
- 注意:注意 如果您没有清除 SSSD 缓存并重新启动服务,SSSD 仅在更新域列表和其他存储在 IdM 服务器上的其他配置数据时检测到新的 ID 范围。
38.8. 删除对 AD 的信任后删除 ID 范围
- 要点:如果您删除了身份管理(IdM)和活动目录(AD)环境之间的信任,您可能需要删除与其关联的 ID 范围。
- 要点:先决条件
- 列表:您已删除了对 AD 环境的信任。
- 列表:显示所有当前正在使用的 ID 范围: [root@server ~]# ipa idrange-find
- 列表:识别与您删除的信任相关联的 ID 范围的名称。ID 范围名称的第一部分是信任的名称,如 AD.EXAMPLE.COM_id_range。
- 列表:删除范围: [root@server ~]# ipa idrange-del AD.EXAMPLE.COM_id_range
- 列表:重启 SSSD 服务,来删除对您已删除的 ID 范围的引用。 [root@server ~]# systemctl restart sssd
- 命令/配置摘录:
[root@server ~]# ipa idrange-find
[root@server ~]# ipa idrange-del AD.EXAMPLE.COM_id_range- 注意:警告 分配给与可信域相关联的 ID 范围的 ID ,可能仍然用于注册到 IdM 的系统上的文件和目录的所有权。 如果您删除了与已删除的 AD 信任对应的 ID 范围,则您将无法解析 AD 用户所拥有的任何文件和目录的所有权。
38.9. 显示当前分配的 DNA ID 范围
- 要点:您可以显示服务器上当前活跃的分布式数字分配(DNA)ID 范围,以及它的下一个 DNA 范围(如果已经分配了一个)。
- 要点:流程
- 列表:要显示拓扑中为服务器配置了哪些 DNA ID 范围,请使用以下命令: ipa-replica-manage dnarange-show 显示当前在所有服务器上设置的 DNA ID 范围;或者,如果您指定了一个服务器,则仅显示指定服务器上的 DNA ID 范围,例如: # ipa-replica-manage dnarange-show serverA.example.com: 1001-1500 serverB.example.com: 1501-2000 serverC.example.com: No range set # ipa-replica-manage dnarange-show serverA.example.com…
- 列表:ipa-replica-manage dnarange-show 显示当前在所有服务器上设置的 DNA ID 范围;或者,如果您指定了一个服务器,则仅显示指定服务器上的 DNA ID 范围,例如: # ipa-replica-manage dnarange-show serverA.example.com: 1001-1500 serverB.example.com: 1501-2000 serverC.example.com: No range set # ipa-replica-manage dnarange-show serverA.example.com serverA.example.com: 1001-1500
- 列表:ipa-replica-manage dnanextrange-show 显示当前在所有服务器上设置的下一个 DNA ID 范围;或者,如果您指定了一个服务器,则仅显示指定服务器上的下一个 DNA ID 范围,例如: # ipa-replica-manage dnanextrange-show serverA.example.com: 2001-2500 serverB.example.com: No on-deck range set serverC.example.com: No on-deck range set # ipa-replica-manage dnanextrange-show serverA.example.c…
- 命令/配置摘录:
# ipa-replica-manage dnarange-show serverA.example.com: 1001-1500 serverB.example.com: 1501-2000 serverC.example.com: No range set # ipa-replica-manage dnarange-show serverA.example.com serverA.example.com: 1001-1500
# ipa-replica-manage dnanextrange-show serverA.example.com: 2001-2500 serverB.example.com: No on-deck range set serverC.example.com: No on-deck range set # ipa-replica-manage dnanextrange-show serverA.example.com serverA.example.com: 2001-250038.10. 手动 ID 范围分配
- 要点:在某些情况下,需要手动分配分布式数字分配(DNA)ID 范围,例如:
- 要点:副本的 ID 不足,并且 IdM ID 范围已耗尽
- 列表:副本的 ID 不足,并且 IdM ID 范围已耗尽 副本已耗尽为其分配的 DNA ID 范围,并且请求额外 ID 失败,因为 IdM 范围内没有更多可用的 ID。 要解决这种情况,请扩展分配给副本的 DNA ID 范围。您可以通过两种方式执行此操作: 缩短分配给不同副本的 DNA ID 范围,然后将新的可用值分配给已耗尽的副本。 创建新的 IdM ID 范围,然后在这个创建的 IdM 范围内为副本设置一个新的 DNA ID 范围。 有关如何创建新的 IdM ID 范围的详情,请参考 添加新的 IdM ID 范围。
- 列表:缩短分配给不同副本的 DNA ID 范围,然后将新的可用值分配给已耗尽的副本。
- 列表:创建新的 IdM ID 范围,然后在这个创建的 IdM 范围内为副本设置一个新的 DNA ID 范围。 有关如何创建新的 IdM ID 范围的详情,请参考 添加新的 IdM ID 范围。
- 列表:副本停止工作 当副本停止正常工作且必须被删除时,不会自动检索副本的 DNA ID 范围,这意味着之前分配给副本的 DNA ID 范围变得不可用。您要恢复 DNA ID 范围,并使其可用于其他副本。 为此,请在手动将该 范围分配给其他服务器之前找出 ID 范围值是什么。此外,为了避免重复的 UID 或 GID,请确保恢复范围内的 ID 值之前没有分配给用户或组;您可以通过检查现有用户和组的 UID 和 GID 来完成此操作。
- 注意:注意 如果您分配了新的 DNA ID 范围,则服务器或副本上已存在条目的 UID 保持不变。这不会造成问题,因为即使您更改了当前的 DNA ID 范围,IdM 也会保留过去分配的范围的记录。
38.11. 手动分配 DNA ID 范围
- 要点:在某些情况下,您可能需要为现有副本手动分配分布式 数字分配(DNA)ID 范围,例如将分配给不工作副本的 DNA ID 范围重新分配。如需更多信息,请参阅 手动 ID 范围分配。
- 要点:在手动调整 DNA ID 范围时,请确保新调整的范围包含在 IdM ID 范围内;您可以使用 ipa idrange-find 命令对此进行检查。否则,命令会失败。
- 列表:可选: 如果您要从不工作的副本恢复 DNA ID 范围,首先使用 显示当前分配的 DNA ID 范围 中描述的命令来查找 ID 范围。
- 列表:要为指定服务器定义当前的 DNA ID 范围,请使用 ipa-replica-manage dnarange-set : # ipa-replica-manage dnarange-set serverA.example.com 1250-1499
- 列表:要为指定服务器定义下一个 DNA ID 范围,请使用 ipa-replica-manage dnanextrange-set : # ipa-replica-manage dnanextrange-set serverB.example.com 1500-5000
- 列表:您可以使用 显示当前分配的 DNA ID 范围 中描述的命令来检查新的 DNA 范围是否设置正确。
- 命令/配置摘录:
# ipa-replica-manage dnarange-set serverA.example.com 1250-1499
# ipa-replica-manage dnanextrange-set serverB.example.com 1500-5000- 注意:重要 注意不要创建重叠的 ID 范围。如果您分配给服务器或副本的任何 ID 范围重叠了,可能会导致两个不同的服务器给不同的条目分配了相同的 ID 值。
38.12. 为旧的系统兼容性启用最多 Linux 的最大限制
- 要点:在标准 IdM ID 范围最多 2,147,483,647, 或 2^31-1 的个别身份管理(IdM)部署中,您可以配置用户和组 ID 最多为 4,294,967,293, 或 2^32-1. 2^32-1 是 Linux 最大 UID 限制。
- 要点:了解如何启用 UID 最多 4,294,967,293。
- 列表:您正在运行 RHEL 10.1 或更高版本。
- 列表:您已获取 IdM admin 凭证。
- 列表:在 IdM 服务器上具有 root 权限。
- 列表:禁用从属 ID 功能: $ ipa config-mod --addattr ipaconfigstring=SubID:Disable
- 列表:删除任何现有从属 ID 范围: $ ipa idrange-del <id_range>
- 列表:在 IdM 服务器上,确保正确删除内部 DNA 插件配置: # ipa-server-upgrade
- 命令/配置摘录:
$ ipa config-mod --addattr ipaconfigstring=SubID:Disable
$ ipa idrange-del <id_range>- 注意:警告 在标准部署中,IdM 为从属 IdS (subIDs)保留 2,147,483,648 - 4,294,836,223 范围。启用 2^31 到 2^32-1 UID 范围需要禁用 subID 功能,因此与现代 Linux 功能冲突。
- 注意:注意 只有尚未分配子 ID 时,才能禁用从属 ID 功能。
第 39 章 手动管理 subID 范围
- 要点:在容器化环境中,有时 IdM 用户需要手动分配 subID 范围。以下说明描述了如何管理 subID 范围。
39.1. 使用 IdM CLI 生成子 subID 范围
- 要点:作为身份管理(IdM)管理员,您可以生成一个 subID 范围,并将其分配给 IdM 用户。
- 要点:先决条件
- 列表:IdM 用户存在。
- 列表:您已获得 IdM admin 票据授予票(TGT)。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:您有访问您要执行流程的 IdM 主机的 root 访问权限。
- 列表:可选:检查现有的 subID 范围: # ipa subid-find
- 列表:如果 subID 范围不存在,请选择以下选项之一: 生成并将 subID 范围分配给一个 IdM 用户: # ipa subid-generate --owner=idmuser Added subordinate id "359dfcef-6b76-4911-bd37-bb5b66b8c418" Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Description: auto-assigned subid Owner: idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID rang…
- 列表:生成并将 subID 范围分配给一个 IdM 用户: # ipa subid-generate --owner=idmuser Added subordinate id "359dfcef-6b76-4911-bd37-bb5b66b8c418" Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Description: auto-assigned subid Owner: idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID range start: 2147483648 SubGI…
- 命令/配置摘录:
# ipa subid-find
# ipa subid-generate --owner=idmuser Added subordinate id "359dfcef-6b76-4911-bd37-bb5b66b8c418" Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Description: auto-assigned subid Owner: idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID range start: 2147483648 SubGID range size: 6553639.2. 使用 IdM WebUI 接口生成 subID 范围
- 要点:作为身份管理(IdM)管理员,您可以生成一个 subID 范围,并在 IdM WebUI 界面中将其分配给一个用户。
- 要点:先决条件
- 列表:IdM 用户存在。
- 列表:您已获得 IdM admin Kerberos 票据(TGT)。如需了解更多详细信息,请参阅 Web UI 中的登录到 IdM:使用 Kerberos ticket。
- 列表:您有访问您要执行流程的 IdM 主机的 root 访问权限。
- 列表:在 IdM WebUI 界面中,展开 Subordinate ID 选项卡,并选择 Subordinate IDs 选项。
- 列表:当出现 Subordinate IDs 接口时,点界面右上角的 Add 按钮。此时出现 Add subid 窗口。
- 列表:在 Add subid 窗口中,选择一个所有者,这是您要为其分配 subID 范围的用户。
39.3. 使用 IdM CLI 查看有关 IdM 用户的 subID 信息
- 要点:作为身份管理(IdM)用户,您可以搜索 IdM 用户 subID 范围,并查看相关的信息。
- 要点:先决条件
- 列表:您已在 IdM 客户端上配置了 subID 范围。如需更多信息,请参阅使用 IdM CLI 生成 subID 范围。
- 列表:您已获得 IdM admin 票据授予票(TGT)。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:要查看 subID 范围的详情: 如果您知道是范围所有者的身份管理(IdM)用户的唯一 ID 哈希: $ ipa subid-show 359dfcef-6b76-4911-bd37-bb5b66b8c418 Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Owner: idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID range start: 2147483648 SubGID range size: 65536 如果您知道该范围内的特定 subID: $ ipa subid-m…
- 列表:如果您知道是范围所有者的身份管理(IdM)用户的唯一 ID 哈希: $ ipa subid-show 359dfcef-6b76-4911-bd37-bb5b66b8c418 Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Owner: idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID range start: 2147483648 SubGID range size: 65536
- 列表:如果您知道该范围内的特定 subID: $ ipa subid-match --subuid=2147483670 1 subordinate id matched Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Owner: uid=idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID range start: 2147483648 SubGID range size: 65536 Number of entries returned 1
- 命令/配置摘录:
$ ipa subid-show 359dfcef-6b76-4911-bd37-bb5b66b8c418 Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Owner: idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID range start: 2147483648 SubGID range size: 65536
$ ipa subid-match --subuid=2147483670 1 subordinate id matched Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Owner: uid=idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID range start: 2147483648 SubGID range size: 65536 Number of entries returned 139.4. 使用 getsubid 命令列出 subID 范围
- 要点:作为系统管理员,您可以使用命令行列出身份管理(IdM)或本地用户的 subID 范围。
- 要点:先决条件
- 列表:idmuser 用户在 IdM 中存在。
- 列表:shadow-utils-subid 软件包已安装。
- 列表:您可以编辑 /etc/nsswitch.conf 文件。
- 列表:打开 /etc/nsswitch.conf 文件,并通过将 subid 变量设置为 sss 值,来将 shadow-utils 工具配置为使用 IdM subID 范围: [...] subid: sss 注意 您只能为 subid 字段提供一个值。将 subid 字段设置为 file 值或 no 值,而不是 sss 将 shadow-utils 工具配置为使用 /etc/subuid 和 /etc/subgid 文件中的 subID 范围。
- 列表:列出 IdM 用户的 subID 范围: $ getsubids idmuser 0: idmuser 2147483648 65536 第一个值 2147483648 表示 subID 范围的开始。第二个值 65536 表示范围的大小。
- 命令/配置摘录:
[...] subid: sss
$ getsubids idmuser 0: idmuser 2147483648 65536- 注意:注意 您只能为 subid 字段提供一个值。将 subid 字段设置为 file 值或 no 值,而不是 sss 将 shadow-utils 工具配置为使用 /etc/subuid 和 /etc/subgid 文件中的 subID 范围。
第 40 章 在 IdM CLI 中管理主机
- 要点:了解身份管理(IdM) 中的主机 和 主机条目,以及在 IdM CLI 中管理主机和主机条目时执行的操作。
40.1. IdM 中的主机
- 要点:Identity Management (IdM) 管理这些身份:
- 要点:一个主机表示了一个计算机。作为 IdM 身份,主机在 IdM LDAP 中有一个条目,即 IdM 服务器的 389 Directory Server 实例。
- 列表:用户
- 列表:服务
- 列表:主机
- 列表:DNS
- 列表:Kerberos
- 列表:证书管理
40.2. 主机注册
- 要点:本节论述了将主机注册为 IdM 客户端以及注册期间和之后发生的情况。部分比较 IdM 主机和 IdM 用户的注册。部分还概述了可供主机使用的其他身份验证类型。
- 要点:注册主机包括:
- 列表:在 IdM LDAP 中创建主机条目:可以在 IdM CLI 中使用 ipa host-add 命令,或者等同的 IdM Web UI 操作。
- 列表:在主机上配置 IdM 服务,如系统安全服务守护进程(SSSD)、Kerberos 和 certmonger,并将主机加入 IdM 域。
40.3. 主机注册所需的用户权限
- 要点:主机注册操作需要进行身份验证,以防止非特权用户将不需要的计算机添加到 IdM 域。所需的权限取决于几个因素,例如:
- 要点:使用一次性密码 (OTP) 进行注册
- 列表:创建主机条目与运行 ipa-client-install 是分开的
- 列表:使用一次性密码 (OTP) 进行注册 在 IdM LDAP 中手动创建主机条目的用户权限 使用 ipa host-add CLI 命令或 IdM Web UI 在 IdM LDAP 中创建主机条目所需的用户权限是 Host Administrators。Host Administrators 特权可通过 IT Specialist 角色获得。 将客户端加入 IdM 域的用户特权 在执行 ipa-client-install 命令期间,主机被配置为 IdM 客户端。执行 ipa-client-install 命令所需的凭证级别取决于您发现的以下注册场景:
- 列表:IdM LDAP 中的主机条目不存在。在这种情况下,您需要完整的管理员凭据或 Host Administrators 角色。完整的管理员是 admins 组的成员。Host Administrators 角色提供添加主机和注册主机的特权。有关此场景的详情,请参阅 使用用户凭证安装客户端:交互式安装。
- 列表:IdM LDAP 中的主机条目存在。在这种情况下,您需要有限的管理员凭证才能成功执行 ipa-client-install。本例中的有限管理员具有 Enrollment Administrator 角色,该角色提供 Host Enrollment。详情请参阅 使用用户凭证安装客户端:交互式安装。
- 列表:IdM LDAP 中的主机条目存在,并且由完整或有限的管理员为主机生成了一个 OTP。在这种情况下,如果您使用 --password 选项运行 ipa-client-install 命令,并提供正确的 OTP,则可以普通用户安装 IdM 客户端。详情请参阅 使用一次性密码安装客户端:交互式安装。
40.4. IdM 主机和用户的注册和身份验证:比较
- 要点:IdM 中的用户和主机之间存在许多相似性,其中一些可以在注册阶段观察到,也可以在部署阶段观察到与身份验证有关的相似之处。
- 要点:注册阶段(用户和主机注册):
- 列表:注册阶段(用户和主机注册): 管理员可以在用户或主机实际加入 IdM 之前为用户和主机创建 LDAP 条:对于预发布(stage)用户,命令是 ipa stageuser-add ;对于主机,命令是 ipa host-add。
- 列表:管理员可以在用户或主机实际加入 IdM 之前为用户和主机创建 LDAP 条:对于预发布(stage)用户,命令是 ipa stageuser-add ;对于主机,命令是 ipa host-add。
- 列表:在主机上执行 ipa-client-install 命令时会创建一个包含 密钥表(key table,简称为 keytab)和对称密钥(在一定程度上与用户密码相同)的文件,从而使主机可以加入 IdM 域。在逻辑上,要求用户在激活其帐户时创建一个密码,因此才可以加入 IdM 域。
- 列表:虽然用户密码是用户的默认身份验证方法,但 keytab 是主机的默认身份验证方法。keytab 存储在主机上的文件中。 Expand 表 40.1. 用户和主机注册 操作 用户 主机 预注册 $ ipa stageuser-add user_name [--password] $ ipa host-add host_name [--random] 激活帐户 $ ipa stageuser-activate user_name $ ipa-client install [--password] (必需在主机本身上运行) Show more 部署阶段(用户和主机会话身份验证):
- 列表:部署阶段(用户和主机会话身份验证):
- 列表:当用户启动新会话时,用户使用密码进行身份验证;类似地,在开机时,主机会通过其 keytab 文件进行身份验证。系统安全服务守护进程 (SSSD) 在后台管理此过程。
- 表格样本(共 3 行):
- 操作 | 用户 | 主机
- 预注册 | $ ipa stageuser-add user_name [--password] | $ ipa host-add host_name [--random]
- 激活帐户 | $ ipa stageuser-activate user_name | $ ipa-client install [--password] (必需在主机本身上运行)
40.5. 主机操作
- 要点:以下部分中概述了与主机注册和启用相关的最常见的操作,以及先决条件、上下文和执行这些操作的结果。
- 表格样本(共 6 行):
- 操作 | 操作的先决条件是什么? | 什么时候运行命令有意义? | 系统管理员是如何执行操作的?他运行什么命令?
- 注册客户端 | 请参阅安装身份管理中的为身份管理客户端 安装准备系统 | 当您希望主机加入 IdM 域时。 | 将机器注册为 IdM 域中的客户端是一个两部分的过程。运行 ipa host-add 命令时,会为客户端创建一个主机条目(并存储在 389 目录服务器实例中),然后创建一个 keytab 来调配客户端。这两个组件都由 ipa-client-install 命令自动执行。也可以单独执行这些步骤;这允许管理员在实际配置客户端之前准备机器和 IdM。这允许更灵活的设置场景,包括批量部署。
- 禁用客户端 | 主机必须在 IdM 中有一个条目。主机需要有一个活动的 keytab。 | 可能出于维护目的,您想从 IdM 域临时删除主机。 | ipa host-disable host_name
- 启用客户端 | 主机必须在 IdM 中有一个条目。 | 当您希望临时禁用的主机再次激活时。 | ipa-getkeytab
40.6. IdM LDAP 中的主机条目
- 要点:身份管理(IdM)主机条目包含有关主机的信息及其可以包含哪些属性。
- 要点:LDAP 主机条目包含 IdM 中关于客户端的所有相关信息:
- 列表:与主机关联的服务条目
- 列表:主机和服务主体
- 列表:访问控制规则
- 列表:机器信息,如物理位置和操作系统
- 注意:注意 请注意,IdM Web UI Identity → Hosts 选项卡不会显示有关存储在 IdM LDAP 中的特定主机的所有信息。
40.6.1. 主机条目配置属性
- 要点:主机条目可以包含其系统配置之外的主机的信息,如其物理位置、MAC 地址、密钥和证书。
- 要点:如果主机条目是手动创建的,则可在创建主机条目时设置此信息。另外,大多数此类信息可以在主机注册到域后添加到主机条目中。
- 表格样本(共 13 行):
- UI 字段 | 命令行选项 | Description
- Description | --desc=description | 主机的描述。
- 地点 | --locality=locality | 主机的地理位置。
- 位置 | --location=location | 主机的物理位置,如其数据中心机架。
40.7. 从 IdM CLI 添加 IdM 主机条目
- 要点:按照以下步骤,使用命令行(CLI)在身份管理(IdM)中添加主机条目。
- 要点:主机条目使用 host-add 命令来创建。此命令将主机条目添加到 IdM 目录服务器中。通过在 CLI 中输入 ipa help host 来查阅 ipa host 手册页,以获取 host-add 可用选项的完整列表。
- 列表:最基本的场景,仅指定客户端主机名来将客户端添加到 Kerberos 域,并在 IdM LDAP 服务器中创建一个条目: $ ipa host-add client1.example.com
- 列表:如果 IdM 服务器被配置为管理 DNS,则使用 -ip-address 选项将主机添加到 DNS 资源记录中,以创建具有静态 IP 地址的主机条目。 $ ipa host-add --ip-address=192.168.166.31 client1.example.com
- 列表:如果要添加的主机没有静态 IP 地址,或者在配置客户端时不知道 IP 地址,请使用 ipa host-add 命令的- force 选项创建带有 DHCP 的主机条目。 $ ipa host-add --force client1.example.com 例如,笔记本电脑可能预配置为 IdM 客户端,但它们在配置时没有 IP 地址。使用 --force 实际上是在 IdM DNS 服务中创建一个占位符条目。当 DNS 服务动态更新其记录时,将检测主机的当前 IP 地址,并更新其 DNS 记录。
- 命令/配置摘录:
$ ipa host-add client1.example.com
$ ipa host-add --ip-address=192.168.166.31 client1.example.com40.8. 从 IdM CLI 删除主机条目
- 要点:使用 host-del 命令删除主机记录。如果您的 IdM 域已集成了 DNS,请使用 --updatedns 选项从 DNS 中删除主机任何类型的关联记录:
- 命令/配置摘录:
$ ipa host-del --updatedns client1.example.com40.9. 禁用和重新启用主机条目
- 要点:本节介绍了如何在身份管理(IdM)中禁用和重新启用主机。
40.9.1. 禁用主机
- 要点:完成这个流程来禁用 IdM 中的主机条目。
- 要点:域服务、主机和用户可以访问活动的主机。某些情况下,出于维护原因需要临时删除活动的主机。在这种情况下,不需要删除主机,因为它会永久删除主机条目和所有关联的配置。相反,可选择禁用该主机的选项。
- 列表:使用 host-disable 命令禁用主机。禁用主机将终止主机当前活动的 keytab。例如: $ kinit admin $ ipa host-disable client.example.com 禁用主机后,主机将对所有 IdM 用户、主机和服务都不可用。 重要 禁用主机条目不仅会禁用该主机。它还会禁用该主机上每个配置的服务。
- 命令/配置摘录:
$ kinit admin $ ipa host-disable client.example.com- 注意:重要 禁用主机条目不仅会禁用该主机。它还会禁用该主机上每个配置的服务。
40.9.2. 重新启用主机
- 要点:按照以下流程重新启用禁用的 IdM 主机。
- 要点:禁用主机会终止其活动的 keytab,这会从 IdM 域中删除主机,而不影响其配置条目。
- 列表:要重新启用主机,请使用 ipa-getkeytab 命令,添加: -s 选项来指定要从哪个 IdM 服务器请求 keytab -p 选项来指定主体名称 k 选项来指定保存 keytab 的文件。 例如,要为 client.example.com 从 server.example.com 请求新的主机 keytab,并将 keytab 存储在 /etc/krb5.keytab 文件中: $ ipa-getkeytab -s server.example.com -p host/client.example.com -k /etc/krb5.keytab -D "cn=directory manager" -w password 注意…
- 列表:-s 选项来指定要从哪个 IdM 服务器请求 keytab
- 列表:-p 选项来指定主体名称
- 列表:k 选项来指定保存 keytab 的文件。 例如,要为 client.example.com 从 server.example.com 请求新的主机 keytab,并将 keytab 存储在 /etc/krb5.keytab 文件中: $ ipa-getkeytab -s server.example.com -p host/client.example.com -k /etc/krb5.keytab -D "cn=directory manager" -w password 注意 您还可以使用管理员的凭据,指定 -D "uid=admin,cn=users,cn=accounts,dc=example,dc=com"。重要的是,…
- 命令/配置摘录:
$ ipa-getkeytab -s server.example.com -p host/client.example.com -k /etc/krb5.keytab -D "cn=directory manager" -w password- 注意:注意 您还可以使用管理员的凭据,指定 -D "uid=admin,cn=users,cn=accounts,dc=example,dc=com"。重要的是,凭据对应于允许为主机创建 keytab 的用户。
40.10. 委托对主机和服务的访问
- 要点:通过委托对 IdM 域中主机和服务的访问权限,您可以为另一个主机或服务检索 keytab 和证书。
- 要点:每个主机和服务都有一个 managedby 条目,其列出了哪些主机和服务可以管理它。默认情况下,主机可以管理自身及其所有服务。您可以配置一个主机来管理其他主机,或者管理 IdM 域中其他主机上的服务。
- 注意:注意 通过 managedby 条目将主机的授权委托给其他主机时,它不会自动为该主机上的所有服务授予管理权限。您必须独立执行每个委托。
40.10.1. 委托服务管理
- 要点:您可以将权限委托给主机,以管理域中其他主机上的服务。
- 要点:当您将权限委托给主机来管理其他主机时,它不会自动包含管理其服务的权限。您必须单独委托服务管理。
- 列表:使用 service-add-host 命令将服务管理委托给特定的主机: ipa service-add-host principal --hosts=<hostname> 您必须使用 principal 参数指定服务主体,使用 --hosts 选项指定带有控制的主机。 例如: [root@server ~]# ipa service-add HTTP/web.example.com [root@server ~]# ipa service-add-host HTTP/web.example.com --hosts=client1.example.com
- 列表:主机委托授权后,主机主体可用于管理服务: [root@client1 ~]# kinit -kt /etc/krb5.keytab host/client1.example.com [root@client1 ~]# ipa-getkeytab -s server.example.com -k /tmp/test.keytab -p HTTP/web.example.com Keytab successfully retrieved and stored in: /tmp/test.keytab
- 列表:要为委托的服务生成证书,请使用委托的颁发机构在主机上创建一个证书请求: [root@client1]# kinit -kt /etc/krb5.keytab host/client1.example.com [root@client1]# openssl req -newkey rsa:2048 -subj '/CN=web.example.com/O=EXAMPLE.COM' -keyout /etc/pki/tls/web.key -out /tmp/web.csr -nodes Generating a 2048 bit RSA private key ....................................…
- 列表:使用 cert-request 工具来提交证书请求,并加载认证信息: [root@client1]# ipa cert-request --principal=HTTP/web.example.com web.csr Certificate: MIICETCCAXqgA...[snip] Subject: CN=web.example.com,O=EXAMPLE.COM Issuer: CN=EXAMPLE.COM Certificate Authority Not Before: Tue Feb 08 18:51:51 2011 UTC Not After: Mon Feb 08 18:51:51 2016 UTC Serial…
- 列表:使用集成的 IdM CA 为用户、主机和服务管理证书
- 命令/配置摘录:
ipa service-add-host principal --hosts=<hostname>
[root@server ~]# ipa service-add HTTP/web.example.com [root@server ~]# ipa service-add-host HTTP/web.example.com --hosts=client1.example.com40.10.2. 委托主机管理
- 要点:您可以使用 host-add-managedby 工具为主机委托授权,来管理其他主机。这会创建一个 managedby 条目。创建 managedby 条目后,管理主机可以检索它管理的主机的 keytab。
- 要点:流程
- 列表:以 admin 用户身份登录: [root@server ~]# kinit admin
- 列表:添加 managedby 条目。例如,这通过 client2 将授权委托给 client1 : [root@server ~]# ipa host-add-managedby client2.example.com --hosts=client1.example.com
- 列表:获取作为主机 client1 的票据: [root@client1 ~]# kinit -kt /etc/krb5.keytab host/client1.example.com
- 列表:检索 client2 的 keytab: [root@client1 ~]# ipa-getkeytab -s server.example.com -k /tmp/client2.keytab -p host/client2.example.com Keytab successfully retrieved and stored in: /tmp/client2.keytab
- 命令/配置摘录:
[root@server ~]# kinit admin
[root@server ~]# ipa host-add-managedby client2.example.com --hosts=client1.example.com40.10.3. 访问委托的服务
- 要点:当客户端有委托的授权时,它可以在本地机器上为服务和主机的主体获取 keytab。
- 要点:使用 kinit 命令,使用 -k 选项加载 keytab ,使用 -t 选项指定 keytab。主体格式为 <principal>/hostname@REALM。对于服务,将 <principal> 替换为服务名称,如 HTTP。对于主机,使用 host 作为主体。
- 列表:要访问主机: [root@server ~]# kinit -kt /etc/krb5.keytab host/ipa.example.com@EXAMPLE.COM
- 列表:要访问服务: [root@server ~]# kinit -kt /etc/httpd/conf/krb5.keytab HTTP/ipa.example.com@EXAMPLE.COM
- 命令/配置摘录:
[root@server ~]# kinit -kt /etc/krb5.keytab host/ipa.example.com@EXAMPLE.COM
[root@server ~]# kinit -kt /etc/httpd/conf/krb5.keytab HTTP/ipa.example.com@EXAMPLE.COM40.11. 其他资源
- 列表:重新注册 IdM 客户端
- 列表:重命名 IdM 客户端系统
第 41 章 从 Web UI 添加主机条目
- 要点:您可以直接从 Web UI 将主机条目添加到 IdM 域中。
- 要点:流程
- 列表:打开 Identity 选项卡,然后选择 Hosts 子选项卡。
- 列表:单击主机列表顶部的 Add。
- 列表:输入机器名称,并在下拉列表中配置的区中选择域。如果已经为主机分配了静态 IP 地址,则将它与主机条目一起包含,以便完全创建 DNS 条目。 Class 字段目前没有特定的目的。 添加主机向导 可以在 IdM 中创建 DNS 区。 如果 IdM 服务器不管理 DNS 服务器,则可以在菜单区域中手动输入区,如常规文本字段。 注意 如果要跳过检查主机是否可以通过 DNS 解析,请选择 Force 复选框。
- 列表:单击 Add and Edit 按钮,直接进入到扩展的条目页面,输入更多的属性信息。有关主机硬件和物理位置的信息可以包含在主机条目中。
- 列表:IdM 中的主机
- 列表:主机注册
- 注意:注意 如果要跳过检查主机是否可以通过 DNS 解析,请选择 Force 复选框。
第 42 章 使用 Ansible playbook 管理主机
- 要点:Ansible 是一个自动化工具,用于配置系统、部署软件和执行滚动更新。Ansible 包含对身份管理 (IdM) 的支持,您可以使用 Ansible 模块自动执行主机管理。
- 要点:如需更多信息,您可以在 /usr/share/ansible/collections/ansible_collections/ansible_freeipa/freeipa/ansible_freeipa/ 目录和 / usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/ playbooks/host 目录中看到相关的 README-host.md 文件。
42.1. 使用 Ansible playbook 确保存在带有 FQDN 的 IdM 主机条目
- 要点:按照以下流程,使用 Ansible playbook 确保主机条目在身份管理(IdM)中存在。主机条目仅通过其 完全限定域名 (FQDN) 定义。
- 要点:如果至少适用以下条件之一,则指定主机的 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 清单文件。
- 命令/配置摘录:
--- - 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-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml- 注意:注意 如果没有 Ansible,则使用 ipa host-add 命令在 IdM 中创建主机条目。将主机添加到 IdM 的结果是 IdM 中存在的主机状态。由于 Ansible 依赖于 idempotence,要使用 Ansible 将主机添加到 IdM,您必须创建一个 playbook,将主机的状态定义为 present: state: present。
- 注意:注意 这个过程会导致在 IdM LDAP 服务器中创建主机条目,但不将主机注册到 IdM Kerberos 域。为此,您必须将主机部署为 IdM 客户端。详情请参阅使用 Ansible playbook 安装身份管理客户端。
42.2. 使用 Ansible playbook 确保存在含有 DNS 信息的 IdM 主机条目
- 要点:按照以下流程,使用 Ansible playbook 确保主机条目在身份管理(IdM)中存在。主机条目通过其 完全限定域名 (FQDN)及其 IP 地址定义。
- 要点:先决条件
- 列表:您知道 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 文件的密码的文件。
- 命令/配置摘录:
--- - 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
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml- 注意:注意 如果没有 Ansible,则使用 ipa host-add 命令在 IdM 中创建主机条目。将主机添加到 IdM 的结果是 IdM 中存在的主机状态。由于 Ansible 依赖于 idempotence,要使用 Ansible 将主机添加到 IdM,您必须创建一个 playbook,将主机的状态定义为 present: state: present。
- 注意:注意 这个过程会导致在 IdM LDAP 服务器中创建主机条目,但不将主机注册到 IdM Kerberos 域。为此,您必须将主机部署为 IdM 客户端。详情请参阅使用 Ansible playbook 安装身份管理客户端。
42.3. 使用 Ansible playbook 确保存在带有随机密码的多个 IdM 主机条目
- 要点: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 域的一部分。
- 命令/配置摘录:
--- - 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
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-are-present.yml [...] TASK [Hosts host01.idm.example.com and host02.idm.example.com present with random passwords] changed: [server.idm.example.com] => {"changed": true, "host": {"host01.idm.example.com": {"randompassword": "0HoIRvjUdH0Ycbf6uYdWTxH"}, "host02.idm.example.com": {"randompassword": "5VdLgrf3wvojmACdHC3uA3s"}}}- 注意:注意 如果没有 Ansible,则使用 ipa host-add 命令在 IdM 中创建主机条目。将主机添加到 IdM 的结果是 IdM 中存在的主机状态。由于 Ansible 依赖于 idempotence,要使用 Ansible 将主机添加到 IdM,您必须创建一个 playbook,将主机的状态定义为 present: state: present。
- 注意:注意 要使用随机的一次性密码(OTP)将主机部署为 IdM 客户端,请参阅 使用 Ansible playbook 为 IdM 客户端注册授权选项 或 使用一次性密码安装客户端:交互式安装。
42.4. 使用 Ansible playbook 确保存在具有多个 IP 地址的 IdM 主机条目
- 要点:按照以下流程,使用 Ansible playbook 确保主机条目在身份管理(IdM)中存在。主机条目通过其 完全限定域名 (FQDN)及其多个 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 域的一部分。
- 命令/配置摘录:
--- - 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
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-with-multiple-IP-addreses-is-present.yml- 注意:注意 与 ipa host 实用程序不同,Ansible freeipa.ansible_freeipa.ipahost 模块可以确保主机存在或不存在多个 IPv4 和 IPv6 地址。ipa host-mod 命令无法处理 IP 地址。
- 注意:注意 这个过程在 IdM LDAP 服务器中创建主机条目,但不将主机注册到 IdM Kerberos 域。为此,您必须将主机部署为 IdM 客户端。详情请参阅使用 Ansible playbook 安装身份管理客户端。
42.5. 使用 Ansible playbook 确保没有 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 客户端。
第 43 章 使用 IdM CLI 管理主机组
- 要点:通过以下操作,了解如何在命令行(CLI)上管理主机组及其成员:
- 列表:查看主机组及其成员
- 列表:创建主机组
- 列表:删除主机组
- 列表:添加主机组成员
- 列表:删除主机组成员
- 列表:添加主机组成员管理者
43.1. IdM 中的主机组
- 要点:IdM 主机组可用于集中控制重要管理任务,特别是访问控制。
- 要点:IdM 中的主机组可以包括:
- 列表:IdM 服务器和客户端
- 列表:其他 IdM 主机组 默认创建的主机组 默认情况下,IdM 服务器为所有 IdM 服务器主机创建主机组 ipaservers。 直接和间接组成员 IdM 中的组属性同时适用于直接和间接成员:当主机组 B 是主机组 A 的成员时,主机组 B 的所有成员都被视为主机组 A 的间接成员。
43.2. 使用 CLI 查看 IdM 主机组
- 要点:按照以下步骤,使用命令行(CLI)查看 IdM 主机组。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:使用 ipa hostgroup-find 命令查找所有主机组。 $ ipa hostgroup-find ------------------- 1 hostgroup matched ------------------- Host-group: ipaservers Description: IPA server hosts ---------------------------- Number of entries returned 1 ----------------------------
- 列表:要显示主机组的所有属性,请添加 --all 选项。例如: $ ipa hostgroup-find --all ------------------- 1 hostgroup matched ------------------- dn: cn=ipaservers,cn=hostgroups,cn=accounts,dc=idm,dc=local Host-group: ipaservers Description: IPA server hosts Member hosts: xxx.xxx.xxx.xxx ipauniqueid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx obje…
- 命令/配置摘录:
$ ipa hostgroup-find ------------------- 1 hostgroup matched ------------------- Host-group: ipaservers Description: IPA server hosts ---------------------------- Number of entries returned 1 ----------------------------
$ ipa hostgroup-find --all ------------------- 1 hostgroup matched ------------------- dn: cn=ipaservers,cn=hostgroups,cn=accounts,dc=idm,dc=local Host-group: ipaservers Description: IPA server hosts Member hosts: xxx.xxx.xxx.xxx ipauniqueid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx objectclass: top, groupOfNames, nestedGroup, ipaobject, ipahostgroup ---------------------------- Number of entries returned 1 ----------------------------43.3. 使用 CLI 创建 IdM 主机组
- 要点:按照以下步骤,使用命令行(CLI)创建 IdM 主机组。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:使用 ipa hostgroup-add 命令添加主机组。 例如,要创建名为 group_name 的 IdM 主机组,并为其提供描述: $ ipa hostgroup-add --desc 'My new host group' group_name --------------------- Added hostgroup "group_name" --------------------- Host-group: group_name Description: My new host group ---------------------
- 命令/配置摘录:
$ ipa hostgroup-add --desc 'My new host group' group_name --------------------- Added hostgroup "group_name" --------------------- Host-group: group_name Description: My new host group ---------------------43.4. 使用 CLI 删除 IdM 主机组
- 要点:按照以下步骤,使用命令行(CLI)删除 IdM 主机组。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:使用 ipa hostgroup-del 命令删除主机组。 例如,要删除名为 group_name 的 IdM 主机组: $ ipa hostgroup-del group_name -------------------------- Deleted hostgroup "group_name" -------------------------- 注意 删除组不会从 IdM 中删除组成员。
- 命令/配置摘录:
$ ipa hostgroup-del group_name -------------------------- Deleted hostgroup "group_name" --------------------------- 注意:注意 删除组不会从 IdM 中删除组成员。
43.5. 使用 CLI 添加 IdM 主机组成员
- 要点:您可以使用单个命令,将主机和主机组作为成员添加到 IdM 主机组中。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:可选: 使用 ipa hostgroup-find 命令查找主机和主机组。
- 列表:要将成员添加到主机组,请使用 ipa hostgroup-add-member 命令并提供相关信息。您可以使用这些选项指定要添加的成员类型: 使用 --hosts 选项,将一个或多个主机添加到 IdM 主机组中。 例如,要将名为 example_member 的主机添加到名为 group_name 的组中: $ ipa hostgroup-add-member group_name --hosts example_member Host-group: group_name Description: My host group Member hosts: example_member ------------------------…
- 列表:使用 --hosts 选项,将一个或多个主机添加到 IdM 主机组中。 例如,要将名为 example_member 的主机添加到名为 group_name 的组中: $ ipa hostgroup-add-member group_name --hosts example_member Host-group: group_name Description: My host group Member hosts: example_member ------------------------- Number of members added 1 -------------------------
- 列表:使用 --hostgroups 选项,将一个或多个主机组添加到 IdM 主机组中。 例如,将名为 nested_group 的主机组添加到名为 group_name 的组中: $ ipa hostgroup-add-member group_name --hostgroups nested_group Host-group: group_name Description: My host group Member host-groups: nested_group ------------------------- Number of members added 1 -------------------------
- 命令/配置摘录:
$ ipa hostgroup-add-member group_name --hosts example_member Host-group: group_name Description: My host group Member hosts: example_member ------------------------- Number of members added 1 -------------------------
$ ipa hostgroup-add-member group_name --hostgroups nested_group Host-group: group_name Description: My host group Member host-groups: nested_group ------------------------- Number of members added 1 -------------------------- 注意:重要 将主机组添加为另一个主机组的成员时,请勿创建递归组。例如,如果组 A 是组 B 的成员,则不要将组 B 添加为组 A 的成员。递归组可能会导致无法预料的行为。
43.6. 使用 CLI 删除 IdM 主机组成员
- 要点:您可以使用单个命令从 IdM 主机组中删除主机和主机组。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:可选。使用 ipa hostgroup-find 命令,确认该组中包含您要删除的成员。
- 列表:要删除主机组成员,请使用 ipa hostgroup-remove-member 命令,并提供相关信息。您可以使用这些选项指定要删除的成员类型: 使用 - -hosts 选项从 IdM 主机组中删除一个或多个主机。 例如,要从名为 group_name 的组中删除名为 example_member 的主机: $ ipa hostgroup-remove-member group_name --hosts example_member Host-group: group_name Description: My host group ------------------------- Number of members remove…
- 列表:使用 - -hosts 选项从 IdM 主机组中删除一个或多个主机。 例如,要从名为 group_name 的组中删除名为 example_member 的主机: $ ipa hostgroup-remove-member group_name --hosts example_member Host-group: group_name Description: My host group ------------------------- Number of members removed 1 -------------------------
- 列表:使用 --hostgroups 选项从 IdM 主机组中删除一个或多个主机组。 例如,要从名为 group_name 的组中删除名为 nested_group 的主机组: $ ipa hostgroup-remove-member group_name --hostgroups example_member Host-group: group_name Description: My host group ------------------------- Number of members removed 1 ------------------------- 注意 删除组不会从 IdM 中删除组成员。
- 命令/配置摘录:
$ ipa hostgroup-remove-member group_name --hosts example_member Host-group: group_name Description: My host group ------------------------- Number of members removed 1 -------------------------
$ ipa hostgroup-remove-member group_name --hostgroups example_member Host-group: group_name Description: My host group ------------------------- Number of members removed 1 -------------------------- 注意:注意 删除组不会从 IdM 中删除组成员。
43.7. 使用 CLI 添加 IdM 主机组成员管理者
- 要点:您可以使用单个命令,将主机和主机组作为成员管理者添加到 IdM 主机组中。成员管理者可以将主机或主机组添加到 IdM 主机组,但不能更改主机组的属性。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:您必须具有要添加为成员管理器的主机或主机组的名称,以及您要管理的主机组的名称。
- 列表:可选: 使用 ipa hostgroup-find 命令查找主机和主机组。
- 列表:要将成员管理者添加到主机组,请使用 ipa hostgroup-add-member-manager。 例如,将名为 example_member 的用户作为成员管理者添加到名为 group_name 的组中: $ ipa hostgroup-add-member-manager group_name --user example_member Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name Membership managed…
- 列表:使用 --groups 选项,将一个或多个主机组作为成员管理者添加到 IdM 主机组中。 例如,将名为 admin_group 的主机组作为成员管理者添加到名为 group_name 的组中: $ ipa hostgroup-add-member-manager group_name --groups admin_group Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name Membership managed by groups…
- 命令/配置摘录:
$ ipa hostgroup-add-member-manager group_name --user example_member Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name Membership managed by users: example_member ------------------------- Number of members added 1 -------------------------
$ ipa hostgroup-add-member-manager group_name --groups admin_group Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name Membership managed by groups: admin_group Membership managed by users: example_member ------------------------- Number of members added 1 -------------------------- 注意:注意 将成员管理者添加到主机组后,可能需要过些时间,才能将更新传播到身份管理环境中的所有客户端。
43.8. 使用 CLI 删除 IdM 主机组成员管理者
- 要点:您可以使用单个 命令,将主机和主机组作为成员管理者从 IdM 主机组中删除。成员管理者可以从 IdM 主机组中删除主机组成员管理者,但不能更改主机组的属性。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:一个活跃的 Kerberos 票据。详情请参阅 使用 kinit 手动登录到 IdM。
- 列表:您必须具有要删除的现有成员管理者主机组的名称,以及它们正在管理的主机组的名称。
- 列表:可选: 使用 ipa hostgroup-find 命令查找主机和主机组。
- 列表:要从主机组中删除成员管理者,请使用 ipa hostgroup-remove-member-manager 命令。 例如,要从名为 group_name 的组中删除作为成员管理者的名为 example_member 的用户: $ ipa hostgroup-remove-member-manager group_name --user example_member Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name Membersh…
- 列表:使用 --groups 选项,将一个或多个主机组作为成员管理者从 IdM 主机组中删除。 例如,要从名为 group_name 的组中删除作为成员管理者的名为 nested_group 的主机组: $ ipa hostgroup-remove-member-manager group_name --groups nested_group Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name ----------------------…
- 命令/配置摘录:
$ ipa hostgroup-remove-member-manager group_name --user example_member Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name Membership managed by groups: nested_group --------------------------- Number of members removed 1 ---------------------------
$ ipa hostgroup-remove-member-manager group_name --groups nested_group Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name --------------------------- Number of members removed 1 ---------------------------- 注意:注意 从主机组中删除成员管理者后,可能需要过些时间,才能将更新传播到身份管理环境中的所有客户端。
第 44 章 使用 IdM Web UI 管理主机组
- 要点:了解如何使用以下操作在 Web 界面(Web UI)中管理主机组及其成员:
- 要点:有关主机组的常规信息,请参阅 leveloffset=+1。
- 列表:查看主机组及其成员
- 列表:创建主机组
- 列表:删除主机组
- 列表:添加主机组成员
- 列表:删除主机组成员
- 列表:添加主机组成员管理者
44.1. 在 IdM Web UI 中查看主机组
- 要点:按照以下流程,使用 Web 界面(Web UI)查看 IdM 主机组。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:点 Identity>Groups,然后选择 Host Groups 选项卡。Host Groups 页面列出了现有的主机组及其描述。您还可以搜索特定的主机组。
- 列表:单击列表中的组,来显示属于此组的主机。您可以将结果限制为直接或间接的成员。
- 列表:选择 Host Groups 选项卡,来显示属于此组的主机组(嵌套主机组)。您可以将结果限制为直接或间接的成员。
44.2. 在 IdM Web UI 中创建主机组
- 要点:按照以下流程,使用 Web 界面(Web UI)创建 IdM 主机组。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:点击 Identity → Groups,然后选择 Host Groups 选项卡。
- 列表:点击 Add。此时出现 Add host grou 对话框。
- 列表:提供有关组的信息:name(必需的)和 description(可选的)。
- 列表:单击 Add 确认。
44.3. 在 IdM Web UI 中删除主机组
- 要点:按照以下流程,使用 Web 界面(Web UI)删除 IdM 主机组。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:点 Identity>Groups 并选择 Host Groups 选项卡。
- 列表:选择要删除的 IdM 主机组,单击 Delete。此时会出现确认对话框。
- 列表:单击 Delete 确认 注意 删除主机组不会从 IdM 中删除组成员。
- 注意:注意 删除主机组不会从 IdM 中删除组成员。
44.4. 在 IdM Web UI 中添加主机组成员
- 要点:按照以下流程,使用 Web 界面(Web UI)在 IdM 中添加主机组成员。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:点击 Identity → Groups ,并选择 Host Groups 选项卡。
- 列表:单击您要添加成员的组的名称。
- 列表:单击 Hosts 或 Host groups 选项卡,具体取决于您要添加的成员的类型。此时会出现相应的对话框。
- 列表:选择要添加的主机或主机组,然后点击 > 箭头按钮将它们移到 Prospective 列中。
44.5. 在 IdM Web UI 中删除主机组成员
- 要点:按照以下流程,使用 Web 界面(Web UI)删除 IdM 中的主机组成员。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:点击 Identity → Groups ,并选择 Host Groups 选项卡。
- 列表:单击您要从中删除成员的组的名称。
- 列表:单击 Hosts 或 Host groups 选项卡,具体取决于您要删除的成员的类型。
- 列表:选中您要删除的成员旁边的复选框。
44.6. 使用 Web UI 添加 IdM 主机组成员管理者
- 要点:按照以下流程,使用 Web 界面(Web UI)将用户或用户组作为主机组成员管理者添加到 IdM 中。成员管理者可以将主机组成员管理者添加到 IdM 主机组中,但不能更改主机组的属性。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:您必须有要添加为成员管理者的主机组的名称,以及您要管理的主机组的名称。
- 列表:点 Identity>Groups 并选择 Host Groups 选项卡。
- 列表:单击要添加成员管理者的组的名称。
- 列表:单击 member managers 选项卡 User Groups or Users,具体取决于您要添加的成员管理者的类型。此时会出现相应的对话框。
- 注意:注意 将成员管理者添加到主机组后,可能需要过些时间,才能将更新传播到身份管理环境中的所有客户端。
44.7. 使用 Web UI 删除 IdM 主机组成员管理者
- 要点:按照以下流程,使用 Web 界面(Web UI)删除 IdM 中作为主机组成员管理者的用户或用户组。成员管理者可以从 IdM 主机组中删除主机组成员管理者,但不能更改主机组的属性。
- 要点:先决条件
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:您已登录到 IdM Web UI。详情请参阅 在 Web 浏览器中访问 IdM Web UI。
- 列表:您必须具有要删除的现有成员管理者主机组的名称,以及它们正在管理的主机组的名称。
- 列表:点 Identity>Groups 并选择 Host Groups 选项卡。
- 列表:单击您要从中删除成员管理者的组的名称。
- 列表:单击 member managers 选项卡 User Groups 或Users,具体取决于您要删除的成员管理者的类型。此时会出现相应的对话框。
- 注意:注意 从主机组中删除成员管理者后,可能需要过些时间,才能将更新传播到身份管理环境中的所有客户端。
第 45 章 使用 ansible playbook 管理主机组
- 要点:了解如何在 RHEL 文档中的使用 Ansible playbook 管理主机组一章中的 使用 Ansible playbook 在身份管理(IdM)中管理 主机组。???
第 46 章 配置基于主机的访问控制规则
- 要点:您可以使用基于主机的访问控制(HBAC)规则来管理身份管理(IdM)域中的访问控制。HBAC 规则定义哪些用户或用户组可以使用哪些服务或服务组中的哪些服务来访问指定的主机或主机组。例如,您可以使用 HBAC 规则实现以下目标:
- 要点:默认情况下,IdM 是使用名为 allow_all 的默认 HBAC 规则配置的,该规则允许每个用户通过整个 IdM 域中的每个相关服务对每个主机进行通用访问。
- 列表:将您域中对指定系统的访问权限限制为特定用户组的成员。
- 列表:仅允许使用特定的服务来访问域中的系统。
46.1. 使用 WebUI 在 IdM 域中配置 HBAC 规则
- 要点:要为基于主机的访问控制配置域,请完成以下步骤:
- 列表:在 IdM WebUI 中创建 HBAC 规则。
- 列表:测试新的 HBAC 规则。
- 列表:禁用默认的 allow_all HBAC 规则]。
- 注意:注意 在创建自定义 HBAC 规则前不要禁用 allow_all 规则,因为,如果您这样做了,没有用户能够访问任何主机。
46.1.1. 在 IdM WebUI 中创建 HBAC 规则
- 要点:要使用 IdM Web UI 为基于主机的访问控制配置域,请按照以下步骤操作。出于本示例的目的,流程演示了如何授予单个用户 sysadmin 使用任何服务访问域中的所有系统。
- 要点:先决条件
- 列表:用户 sysadmin 在 IdM 中存在。
- 列表:选择 Policy>Host-Based Access Control>HBAC Rules。
- 列表:点 Add 开始添加新规则。
- 列表:输入规则的名称,然后点 Add and Edit 打开 HBAC 规则配置页面。
- 列表:在 Who 区域中,选择 Specified Users and Groups。然后点 Add 添加用户或组。
- 列表:从 Available 用户列表中选择 sysadmin 用户,并点击 > 移到 Prospective 用户列表,然后点击 Add。
- 注意:注意 IdM 将用户的主组存储为 gidNumber 属性的数字值,而不是 IdM 组对象的链接。因此,HBAC 规则只能引用用户的补充组,而不是其主组。
- 注意:注意 默认情况下,只为 HBAC 规则配置最常见的服务和服务组。 要显示当前可用的服务列表,请选择 Policy>Host-Based Access Control>HBAC Services。 要显示当前可用的服务组列表,请选择 Policy>Host-Based Access Control>HBAC Service Groups。 要添加更多服务和服务组,请参阅为自定义 HBAC 服务添加 HBAC Service Entries 和 Adding HBAC Service Groups。
46.1.2. 在 IdM WebUI 中测试 HBAC 规则
- 要点:IdM 允许您使用模拟场景测试各种情况下的 HBAC 配置。执行这些模拟测试,您可以在在生产环境中部署 HBAC 规则前发现错误配置问题或安全风险。
- 要点:请注意,IdM 不测试 HBAC 规则对可信活动目录(AD)用户的影响。因为 IdM LDAP 目录不存储 AD 数据,所以当模拟 HBAC 场景时,IdM 不能解析 AD 用户的组成员资格。
- 列表:选择 Policy>Host-Based Access Control>HBAC Test。
- 列表:在 Who 窗口中,指定您要执行测试的身份下的用户,然后点 Next。
- 列表:在 Accessing 窗口中,指定用户将尝试访问的主机,然后单击 Next。
- 列表:在 Via Service 窗口上,指定用户将尝试使用的服务,然后单击 Next。
- 列表:在 Rules 窗口中,选择您要测试的 HBAC 规则,然后点 Next。如果您没有选择任何规则,则会测试所有规则。 选择 Include Enabled 以对其状态为 Enabled 的所有规则运行测试。选择 Include Disabled 以对其状态为 Disabled 的所有规则运行测试。要查看并更改 HBAC 规则的状态,请选择 Policy>Host-Based Access Control>HBAC Rules。 重要 如果对多个规则运行测试,如果所选规则中至少一个允许访问,则成功通过。
- 列表:在 Run Test 窗口上,单击 Run Test。
- 注意:重要 在在生产环境中开始使用它们之前,请始终测试自定义 HBAC 规则。
- 注意:重要 如果对多个规则运行测试,如果所选规则中至少一个允许访问,则成功通过。
46.1.3. 在 IdM WebUI 中禁用 HBAC 规则
- 要点:您可以禁用 HBAC 规则,但它只停用规则,而不删除规则。如果禁用了 HBAC 规则,您可以稍后重新启用它。
- 要点:流程
- 列表:选择 Policy>Host-Based Access Control>HBAC Rules。
- 列表:选择您要禁用的 HBAC 规则。
- 列表:单击 Disable。
- 列表:点 OK 以确认您要禁用所选的 HBAC 规则。
- 注意:注意 当您首次配置自定义 HBAC 规则时,禁用 HBAC 规则很有用。要确保新配置不会被默认的 allow_all HBAC 规则覆盖,您必须禁用 allow_all。
46.2. 使用 CLI 在 IdM 域中配置 HBAC 规则
- 要点:要为基于主机的访问控制配置域,请完成以下步骤:
- 列表:在 IdM CLI 中创建 HBAC 规则。
- 列表:测试新的 HBAC 规则。
- 列表:禁用默认的 allow_all HBAC 规则。
- 注意:注意 在创建自定义 HBAC 规则前,不要禁用 allow_all 规则。如果您在创建自定义规则前禁用了它,则会拒绝所有用户对所有主机的访问。
46.2.1. 在 IdM CLI 中创建 HBAC 规则
- 要点:要使用 IdM CLI 为基于主机的访问控制配置域,请按照以下步骤操作。出于本示例的目的,流程展示了如何授予单个用户 sysadmin 使用任何服务访问域中的所有系统。
- 要点:先决条件
- 列表:用户 sysadmin 在 IdM 中存在。
- 列表:使用 ipa hbacrule-add 命令添加规则。 $ ipa hbacrule-add Rule name: rule_name --------------------------- Added HBAC rule "rule_name" --------------------------- Rule name: rule_name Enabled: TRUE
- 列表:要将 HBAC 规则只应用到 sysadmin 用户,请使用 ipa hbacrule-add-user 命令。 $ ipa hbacrule-add-user --users=sysadmin Rule name: rule_name Rule name: rule_name Enabled: True Users: sysadmin ------------------------- Number of members added 1 ------------------------- 注意 要将 HBAC 规则应用到所有用户,请使用 ipa hbacrule-mod 命令,并指定所有用户类别 --usercat=all…
- 列表:指定目标主机。要将 HBAC 规则应用到所有主机,请使用 ipa hbacrule-mod 命令,并指定所有主机类别: $ ipa hbacrule-mod rule_name --hostcat=all ------------------------------ Modified HBAC rule "rule_name" ------------------------------ Rule name: rule_name Host category: all Enabled: TRUE Users: sysadmin 注意 如果 HBAC 规则与单个主机或组关联,ipa hbacrule-mod --hostcat…
- 列表:指定目标 HBAC 服务。要将 HBAC 规则应用到所有服务,请使用 ipa hbacrule-mod 命令,并指定所有服务类别: $ ipa hbacrule-mod rule_name --servicecat=all ------------------------------ Modified HBAC rule "rule_name" ------------------------------ Rule name: rule_name Host category: all Service category: all Enabled: True Users: sysadmin 注意 如果 HBAC 规则与单个服…
- 列表:验证 HBAC 规则是否已正确添加。 使用 ipa hbacrule-find 命令验证 HBAC 规则是否在 IdM 中存在。 使用 ipa hbacrule-show 命令验证 HBAC 规则的属性。
- 命令/配置摘录:
$ ipa hbacrule-add Rule name: rule_name --------------------------- Added HBAC rule "rule_name" --------------------------- Rule name: rule_name Enabled: TRUE
$ ipa hbacrule-add-user --users=sysadmin Rule name: rule_name Rule name: rule_name Enabled: True Users: sysadmin ------------------------- Number of members added 1 -------------------------- 注意:注意 IdM 将用户的主组存储为 gidNumber 属性的数字值,而不是 IdM 组对象的链接。因此,HBAC 规则只能引用用户的补充组,而不是其主组。
- 注意:注意 要将 HBAC 规则应用到所有用户,请使用 ipa hbacrule-mod 命令,并指定所有用户类别 --usercat=all。请注意,如果 HBAC 规则与单个用户或组关联,ipa hbacrule-mod --usercat=all 会失败。在这种情况下,使用 ipa hbacrule-remove-user 命令删除用户和组。
46.2.2. 在 IdM CLI 中测试 HBAC 规则
- 要点:IdM 允许您使用模拟场景测试各种情况下的 HBAC 配置。执行这些模拟测试,您可以在在生产环境中部署 HBAC 规则前发现错误配置问题或安全风险。
- 要点:请注意,IdM 不测试 HBAC 规则对可信活动目录(AD)用户的影响。因为 IdM LDAP 目录不存储 AD 数据,所以当模拟 HBAC 场景时,IdM 不能解析 AD 用户的组成员资格。
- 列表:使用 ipa hbactest 命令测试您的 HBAC 规则。您有测试单个 HBAC 规则或多个 HBAC 规则的选项。 要测试单个 HBAC 规则: $ ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name --------------------- Access granted: True --------------------- Matched rules: rule_name 要测试多个 HBAC 规则: 添加第二个规则,仅允许 sysadmin 在所有主机上使用 ssh : $ ipa h…
- 列表:要测试单个 HBAC 规则: $ ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name --------------------- Access granted: True --------------------- Matched rules: rule_name
- 列表:要测试多个 HBAC 规则: 添加第二个规则,仅允许 sysadmin 在所有主机上使用 ssh : $ ipa hbacrule-add --hostcat=all rule2_name $ ipa hbacrule-add-user --users sysadmin rule2_name $ ipa hbacrule-add-service --hbacsvcs=sshd rule2_name Rule name: rule2_name Host category: all Enabled: True Users: admin HBAC Services: sshd -------------------------…
- 列表:添加第二个规则,仅允许 sysadmin 在所有主机上使用 ssh : $ ipa hbacrule-add --hostcat=all rule2_name $ ipa hbacrule-add-user --users sysadmin rule2_name $ ipa hbacrule-add-service --hbacsvcs=sshd rule2_name Rule name: rule2_name Host category: all Enabled: True Users: admin HBAC Services: sshd ------------------------- Number of memb…
- 列表:运行以下命令来测试多个 HBAC 规则: $ ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name --rules=rule2_name -------------------- Access granted: True -------------------- Matched rules: rule_name Not matched rules: rule2_name 在输出中,Matched rules 列出了允许的成功访问的规则,而 Not matched 规则列出了阻止的访问的规则。请注意,…
- 命令/配置摘录:
$ ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name --------------------- Access granted: True --------------------- Matched rules: rule_name
$ ipa hbacrule-add --hostcat=all rule2_name $ ipa hbacrule-add-user --users sysadmin rule2_name $ ipa hbacrule-add-service --hbacsvcs=sshd rule2_name Rule name: rule2_name Host category: all Enabled: True Users: admin HBAC Services: sshd ------------------------- Number of members added 1 -------------------------- 注意:重要 在在生产环境中开始使用它们之前,请始终测试自定义 HBAC 规则。
46.2.3. 在 IdM CLI 中禁用 HBAC 规则
- 要点:您可以禁用 HBAC 规则,但它只停用规则,而不删除规则。如果禁用了 HBAC 规则,您可以稍后重新启用它。
- 要点:流程
- 列表:使用 ipa hbacrule-disable 命令。例如,要禁用 allow_all 规则: $ ipa hbacrule-disable allow_all ------------------------------ Disabled HBAC rule "allow_all" ------------------------------
- 命令/配置摘录:
$ ipa hbacrule-disable allow_all ------------------------------ Disabled HBAC rule "allow_all" ------------------------------- 注意:注意 当您首次配置自定义 HBAC 规则时,禁用 HBAC 规则很有用。要确保新配置不会被默认的 allow_all HBAC 规则覆盖,您必须禁用 allow_all。
46.3. 为自定义 HBAC 服务添加 HBAC 服务条目
- 要点:默认为 HBAC 规则配置了最常见的服务和服务组,但您也可以将任何其他可插拔身份验证模块(PAM)服务配置为 HBAC 服务。这允许您在 HBAC 规则中定义自定义 PAM 服务。这些 PAM 服务文件位于 RHEL 系统上的 etc/pam.d 目录中。
- 注意:注意 将服务添加为 HBAC 服务与向域中添加服务不同。向域中添加服务使其可用于域中的其他资源,但不允许使用 HBAC 规则中的服务。
46.3.1. 在 IdM Web UI 中为自定义 HBAC 服务添加 HBAC 服务条目
- 要点:要添加一个自定义 HBAC 服务条目,请按照以下描述的步骤操作。
- 要点:流程
- 列表:选择 Policy>Host-Based Access Control>HBAC Services。
- 列表:点 Add 添加 HBAC 服务条目。
- 列表:输入服务的名称,然后单击 Add。
46.3.2. 在 IdM CLI 中为自定义 HBAC 服务添加 HBAC 服务条目
- 要点:要添加一个自定义 HBAC 服务条目,请按照以下描述的步骤操作。
- 要点:流程
- 列表:使用 ipa hbacsvc-add 命令。例如,要为 tftp 服务添加一个条目: $ ipa hbacsvc-add tftp ------------------------- Added HBAC service "tftp" ------------------------- Service name: tftp
- 命令/配置摘录:
$ ipa hbacsvc-add tftp ------------------------- Added HBAC service "tftp" ------------------------- Service name: tftp46.4. 添加 HBAC 服务组
- 要点:HBAC 服务组可以简化 HBAC 规则管理。例如,您可以添加整个服务组,而不是将单个服务添加到 HBAC 规则中。
46.4.1. 在 IdM WebUI 中添加 HBAC 服务组
- 要点:要在 IdM WebUI 中添加 HBAC 服务组,请按照以下概述的步骤操作。
- 要点:流程
- 列表:选择 Policy>Host-Based Access Control>HBAC Service Groups。
- 列表:点 Add 添加 HBAC 服务组。
- 列表:输入服务组的名称,然后点 Edit。
- 列表:在服务组配置页面中,点 Add 将 HBAC 服务添加为组的成员。
46.4.2. 在 IdM CLI 中添加 HBAC 服务组
- 要点:要在 IdM CLI 中添加 HBAC 服务组,请按照以下概述的步骤操作。
- 要点:流程
- 列表:在终端中使用 ipa hbacsvcgroup-add 命令来添加 HBAC 服务组。例如,要添加名为 login 的组: $ ipa hbacsvcgroup-add Service group name: login -------------------------------- Added HBAC service group "login" -------------------------------- Service group name: login
- 列表:使用 ipa hbacsvcgroup-add-member 命令将 HBAC 服务添加为组的成员。例如,将 sshd 服务添加到 login 组中: $ ipa hbacsvcgroup-add-member Service group name: login [member HBAC service]: sshd Service group name: login Member HBAC service: sshd ------------------------- Number of members added 1 -------------------------
- 命令/配置摘录:
$ ipa hbacsvcgroup-add Service group name: login -------------------------------- Added HBAC service group "login" -------------------------------- Service group name: login
$ ipa hbacsvcgroup-add-member Service group name: login [member HBAC service]: sshd Service group name: login Member HBAC service: sshd ------------------------- Number of members added 1 -------------------------46.5. 其他资源
- 列表:确保使用 Ansible playbook 的基于主机的访问控制规则在 IdM 中存在
第 47 章 使用 CLI 配置会话记录
- 要点:了解如何使用系统安全服务守护进程(SSSD)配置用户会话记录,以及如何使用 tlog 命令行工具管理和回放这些记录。
47.1. 会话记录概述和组件
- 要点:会话记录捕获并保存用户终端活动。这提供了所有命令、输出和错误消息的详细、不可更改的记录,您可以使用它来审核、故障排除和调查安全事件。
- 要点:SSSD 强制执行您定义的记录策略,tlog 工具处理实际记录和回放。
- 列表:tlog 工具 tlog 工具提供用于记录和回放终端 I/O 的工具。tlog-rec-session 作为中间登录 shell 的功能,并在用户终端和 shell 间捕获所有数据。所有 tlog 记录都采用 JSON 格式。您可以使用 tlog-play 回放记录的会话。请注意,由于安全原因,默认禁用了终端输入记录。有关详细配置选项,请查看系统中的 /etc/tlog/tlog-rec-session.conf 文件和 tlog-rec-session.conf (5) 手册页。
- 列表:SSSD SSSD 提供了一组管理对远程目录和身份验证机制访问的守护进程。当您配置会话记录时,SSSD 使用 tlog-rec-session 程序覆盖用户的默认 shell。
- 列表:您可以为 root 用户配置会话记录,但 root 用户有禁用或绕过记录过程的权限,从而使会话记录不可靠进行审计。
- 列表:GNOME 图形会话中的终端会话不会被记录。这是因为图形会话中的所有终端共享一个审计会话 ID,这样可防止 tlog 区分它们并正确捕获记录。
- 列表:查看日志时可能会出现日志记录循环。记录的用户查看系统日志或 /var/log/messages,它会生成新的日志,这些日志随后会被记录并显示,从而导致大量输出的循环。 要防止日志记录循环,请实时查看日志并过滤出创建循环的日志条目: journalctl -f | grep -v 'tlog-rec-session' 您还可以配置 tlog 来限制输出。详情请查看 tlog-rec-session.conf 手册页。
- 列表:您必须在目标主机上配置会话记录以进行远程执行。例如,如果您要在用户使用 ssh 连接到远程系统时记录用户的会话,请在其连接的远程系统中配置记录。
- 命令/配置摘录:
journalctl -f | grep -v 'tlog-rec-session'47.2. 通过 CLI 启用并配置带有 SSSD 的会话记录
- 要点:您可以从命令行为特定用户和组配置和启用会话记录。
- 要点:当您配置会话记录时,您可以通过将 scope 选项设置为以下值之一来定义要记录哪些用户或组:
- 列表:none 不记录会话
- 列表:some 仅记录指定的用户和组
- 列表:all 记录所有用户
- 列表:以 # 命令提示符开头的命令需要 sudo 或 root 用户访问提供管理特权。有关如何配置 sudo 访问权限的详情,请参考 启用非特权用户来运行某些命令。
- 列表:您使用 SSSD 进行身份验证。
- 列表:安装 tlog 软件包: # dnf install tlog
- 命令/配置摘录:
# dnf install tlog
# vi /etc/sssd/conf.d/sssd-session-recording.conf47.3. 回放会话记录
- 要点:系统日志存储会话记录。默认情况下,它会将它们保存在内存中,因此除非您配置持久性存储,否则会丢失重启时的记录。
- 要点:您可以使用 tlog-play 工具直接从系统日志中回放记录。或者,您可以安装 cockpit-session-recording 软件包来管理和回放 RHEL web 控制台中的记录。
- 列表:已记录终端会话。
- 列表:可选:列出记录的会话: $ journalctl COMM=tlog-rec-session
- 列表:回放特定的会话: # tlog-play --reader=journal --journal-id=<recorded_session_id> 有关更多高级选项,如更改回放速度或快速转发,请参阅系统中的 tlog-play 手册页。
- 列表:安装 Web 控制台附加组件,并创建自定义页面
- 命令/配置摘录:
$ journalctl COMM=tlog-rec-session
# tlog-play --reader=journal --journal-id=<recorded_session_id>第 48 章 管理用户和主机的公共 SSH 密钥
- 要点:SSH (Secure Shell)是一种协议,它使用客户端-服务器架构在两个系统之间提供安全通信。SSH 允许用户远程登录到服务器主机系统,还允许一台主机访问另一台主机。
48.1. 关于 SSH 密钥格式
- 要点:IdM 接受以下两种 SSH 密钥格式:
- 要点:请注意,IdM 会在将 RFC 4253 样式的密钥保存到 IdM LDAP 服务器之前,自动将它们钥转换为 OpenSSH 样式的密钥。
- 列表:OpenSSH 样式密钥
- 列表:原始 RFC 4253 样式密钥
- 列表:主机公钥位于 known_hosts 文件中。
- 列表:用户公钥位于 authorized_keys 文件中。
- 列表:RFC 4716
- 列表:RFC 4253
- 命令/配置摘录:
host.example.com,1.2.3.4 ssh-rsa AAA...ZZZ==
"ssh-rsa ABCD1234...== ipaclient.example.com"48.2. 关于 IdM 和 OpenSSH
- 要点:在 IdM 服务器或客户端安装过程中,作为安装脚本的一部分:
- 要点:如果您在客户端安装过程中启用了 SSH 服务,则在 SSH 服务第一次启动时会创建一个 RSA 密钥。
- 列表:已在 IdM 客户端机器上配置了 OpenSSH 服务器和客户端。
- 列表:SSSD 被配置为在缓存中存储并检索用户和主机 SSH 密钥。这允许 IdM 充当 SSH 密钥的通用和集中的存储库。
- 列表:使用 --ssh-trust-dns 选项,将 OpenSSH 配置为自动信任存储密钥指纹的 IdM DNS 记录。
- 列表:禁用 OpenSSH 并防止安装脚本使用 --no-sshd 选项配置 OpenSSH 服务器。
- 列表:使用 --no-dns-sshfp 选项防止主机创建带有其自身 DNS 条目的 DNS SSHFP 记录。
- 注意:注意 当您运行 ipa-client-install 安装脚本将机器添加为 IdM 客户端时,会使用两个 SSH 密钥 RSA 和 DSA 创建客户端。
48.3. 生成 SSH 密钥
- 要点:您可以使用 OpenSSH ssh-keygen 工具生成 SSH 密钥。
- 要点:流程
- 列表:要生成 RSA SSH 密钥,请运行以下命令: $ ssh-keygen -t rsa -C user@example.com Generating public/private rsa key pair. 请注意,如果生成主机密钥,请将 user@example.com 替换为所需的主机名,如 server.example.com,1.2.3.4。
- 列表:指定要保存密钥的文件的位置,或者按 enter 键接受显示的默认位置。 Enter file in which to save the key (/home/user/.ssh/id_rsa): 请注意,如果生成主机密钥,请将密钥保存到与用户的 ~/.ssh/ 目录不同的位置,这样您不会覆盖任何现有的密钥。例如 /home/user/.ssh/host_keys。
- 列表:为您的私钥指定密码短语,或者按 enter 将密码短语留空。 Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: SHA256:ONxjcMX7hJ5zly8F8ID9fpbqcuxQK+ylVLKDMsJPxGA user4@example.co…
- 命令/配置摘录:
$ ssh-keygen -t rsa -C user@example.com Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):48.4. 管理用户的公共 SSH 密钥
- 要点:身份管理允许您将公共 SSH 密钥上传到用户条目。有权访问相应私有 SSH 密钥的用户可以使用 SSH 登录到 IdM 机器,而无需使用 Kerberos 凭证。请注意,如果用户从没有私有 SSH 密钥文件的机器登录,则用户仍然可以通过提供 Kerberos 凭据来进行身份验证。
48.4.1. 使用 IdM Web UI 上传用户的 SSH 密钥
- 要点:身份管理允许您将公共 SSH 密钥上传到用户条目。有权访问相应私有 SSH 密钥的用户可以使用 SSH 登录到 IdM 机器,而无需使用 Kerberos 凭证。
- 要点:先决条件
- 列表:管理 IdM Web UI 或用户管理员角色的管理员特权。
- 列表:登录到 IdM Web UI。
- 列表:转至 Identity>Users 选项卡。
- 列表:单击要编辑的用户的名称。
- 列表:在 Account Settings 部分中,单击 SSH 公钥 添加按钮。
- 列表:将 Base 64 编码的公钥字符串粘贴到 SSH 公钥 字段中。
48.4.2. 使用 IdM CLI 上传用户的 SSH 密钥
- 要点:身份管理允许您将公共 SSH 密钥上传到用户条目。有权访问相应私有 SSH 密钥的用户可以使用 SSH 登录到 IdM 机器,而无需使用 Kerberos 凭证。
- 要点:先决条件
- 列表:管理 IdM CLI 的管理员特权或用户管理员角色。
- 列表:使用 --sshpubkey 选项运行 ipa user-mod 命令,来将 base64 编码的公钥上传到用户条目。 $ ipa user-mod user --sshpubkey="ssh-rsa AAAAB3Nza...SNc5dv== client.example.com" 请注意,在这个示例中,您将密钥类型、密钥和主机名标识符上传到用户条目。
- 列表:要上传多个密钥,请多次使用 --sshpubkey。例如,要上传两个 SSH 密钥: --sshpubkey="AAAAB3Nza...SNc5dv==" --sshpubkey="RjlzYQo...ZEt0TAo="
- 列表:要使用命令重定向,并指向包含密钥的文件而不是手动粘贴密钥字符串,请使用以下命令: $ ipa user-mod user --sshpubkey="$(cat ~/.ssh/id_rsa.pub)" --sshpubkey="$(cat ~/.ssh/id_rsa2.pub)"
- 列表:运行 ipa user-show 命令来验证 SSH 公钥是否与指定的用户关联: $ ipa user-show user User login: user First name: user Last name: user Home directory: /home/user Login shell: /bin/sh Principal name: user@IPA.TEST Principal alias: user@IPA.TEST Email address: user@ipa.test UID: 1118800019 GID: 1118800019 SSH public key fingerprint:…
- 命令/配置摘录:
$ ipa user-mod user --sshpubkey="ssh-rsa AAAAB3Nza...SNc5dv== client.example.com"
--sshpubkey="AAAAB3Nza...SNc5dv==" --sshpubkey="RjlzYQo...ZEt0TAo="48.4.3. 使用 IdM Web UI 删除用户的 SSH 密钥
- 要点:按照以下流程,在 IdM Web UI 中从用户配置文件中删除 SSH 密钥。
- 要点:先决条件
- 列表:管理 IdM Web UI 或用户管理员角色的管理员特权。
- 列表:登录到 IdM Web UI。
- 列表:转至 Identity>Users 选项卡。
- 列表:单击要编辑的用户的名称。
- 列表:在 帐户设置 部分下,在 SSH 公钥 下,单击您要删除的密钥旁边的 Delete。
- 列表:点页面顶部的 Save。
48.4.4. 使用 IdM CLI 删除用户的 SSH 密钥
- 要点:按照以下流程,使用 IdM CLI 从用户配置文件中删除 SSH 密钥。
- 要点:先决条件
- 列表:管理 IdM CLI 的管理员特权或用户管理员角色。
- 列表:要删除分配给用户帐户的所有 SSH 密钥,请在 ipa user-mod 命令中添加 --sshpubkey 选项,而不指定任何密钥: $ ipa user-mod user --sshpubkey=
- 列表:要只删除特定的 SSH 密钥或密钥,请使用 --sshpubkey 选项指定您要保留的密钥,省略您要删除的密钥。
- 列表:运行 ipa user-show 命令来验证 SSH 公钥是否不再与指定的用户关联: $ ipa user-show user User login: user First name: user Last name: user Home directory: /home/user Login shell: /bin/sh Principal name: user@IPA.TEST Principal alias: user@IPA.TEST Email address: user@ipa.test UID: 1118800019 GID: 1118800019 Account disabled: False …
- 命令/配置摘录:
$ ipa user-mod user --sshpubkey=
$ ipa user-show user User login: user First name: user Last name: user Home directory: /home/user Login shell: /bin/sh Principal name: user@IPA.TEST Principal alias: user@IPA.TEST Email address: user@ipa.test UID: 1118800019 GID: 1118800019 Account disabled: False Password: False Member of groups: ipausers Subordinate ids: 3167b7cc-8497-4ff2-ab4b-6fcb3cb1b047 Kerberos keys available: False48.5. 管理主机的公共 SSH 密钥
- 要点:OpenSSH 使用公钥来验证主机。一台机器尝试访问另一台机器,并显示其密钥对。主机第一次验证时,目标机器上的管理员必须手动批准请求。然后,机器将主机的公钥存储在 known_hosts 文件中。每当远程机器尝试再次访问目标机器时,目标机器会检查其 known_hosts 文件,然后将访问权限自动授予批准的主机。
48.5.1. 使用 IdM Web UI 上传主机的 SSH 密钥
- 要点:身份管理允许您将公共 SSH 密钥上传到主机条目。OpenSSH 使用公钥来验证主机。
- 要点:先决条件
- 列表:管理 IdM Web UI 或用户管理员角色的管理员特权。
- 列表:您可以从 ~/.ssh/known_hosts 文件检索主机的密钥。例如: server.example.com,1.2.3.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApvjBvSFSkTU0WQW4eOweeo0DZZ08F9Ud21xlLy6FOhzwpXFGIyxvXZ52+siHBHbbqGL5+14N7UvElruyslIHx9LYUR/pPKSMXCGyboLy5aTNl5OQ5EHwrhVnFDIKXkvp45945R7SKYCUtRumm0Iw6wq0XD4o+ILeVbV3wmcB1bXs36ZvC/M6riefn9PcJmh6vNCvIsbMY6S+FhkWUTTiOXJjUD…
- 列表:从密钥文件复制公钥。完整的密钥条目的格式是 host name,IP type key==。仅需要 key==,但您可以存储整个条目。要使用条目中的所有元素,请重新安排该条目,以便其具有顺序 type key== [host name,IP]。 # cat /home/user/.ssh/host_keys.pub ssh-rsa AAAAB3NzaC1yc2E...tJG1PK2Mq++wQ== server.example.com,1.2.3.4
- 列表:登录到 IdM Web UI。
- 列表:进入 Identity>Hosts 选项卡。
- 列表:单击要编辑的主机名称。
- 命令/配置摘录:
server.example.com,1.2.3.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApvjBvSFSkTU0WQW4eOweeo0DZZ08F9Ud21xlLy6FOhzwpXFGIyxvXZ52+siHBHbbqGL5+14N7UvElruyslIHx9LYUR/pPKSMXCGyboLy5aTNl5OQ5EHwrhVnFDIKXkvp45945R7SKYCUtRumm0Iw6wq0XD4o+ILeVbV3wmcB1bXs36ZvC/M6riefn9PcJmh6vNCvIsbMY6S+FhkWUTTiOXJjUDYRLlwM273FfWhzHK+SSQXeBp/zIn1gFvJhSZMRi9HZpDoqxLbBB9QIdIw6U4MIjNmKsSI/ASpkFm2GuQ7ZK9KuMItY2AoCuIRmRAdF8iYNHBTXNfFurGogXwRDjQ==
# cat /home/user/.ssh/host_keys.pub ssh-rsa AAAAB3NzaC1yc2E...tJG1PK2Mq++wQ== server.example.com,1.2.3.448.5.2. 使用 IdM CLI 上传主机的 SSH 密钥
- 要点:身份管理允许您将公共 SSH 密钥上传到主机条目。OpenSSH 使用公钥来验证主机。当使用 host-add 或稍后修改条目创建主机时,主机 SSH 密钥被添加到 IdM 中的主机条目中。
- 要点:请注意,RSA 和 DSA 主机密钥由 ipa-client-install 命令创建,除非在安装脚本中明确禁用了 SSH 服务。
- 列表:管理 IdM 或用户管理员角色的管理员特权。
- 列表:使用 --sshpubkey 选项运行 host-mod 命令,将 base64 编码的公钥上传到主机条目。 因为添加主机密钥会更改主机的 DNS Secure Shell 指纹(SSHFP)记录,因此请使用 --updatedns 选项更新主机的 DNS 条目。例如: $ ipa host-mod --sshpubkey="ssh-rsa RjlzYQo==" --updatedns host1.example.com 实际密钥通常以等号(=)结束,但会更长。
- 列表:要上传多个密钥,请输入多个 --sshpubkey 命令行参数: --sshpubkey="RjlzYQo==" --sshpubkey="ZEt0TAo==" 请注意,一个主机可以有多个公钥。
- 列表:上传主机密钥后,将 SSSD 配置为使用身份管理作为其身份域之一,并设置 OpenSSH 以使用 SSSD 工具管理主机密钥,如 配置 SSSD 来为 OpenSSH 服务提供缓存。
- 列表:运行 ipa host-show 命令来验证 SSH 公钥是否与指定主机关联: $ ipa host-show client.ipa.test ... SSH public key fingerprint: SHA256:qGaqTZM60YPFTngFX0PtNPCKbIuudwf1D2LqmDeOcuA client@IPA.TEST (ssh-rsa) ...
- 命令/配置摘录:
$ ipa host-mod --sshpubkey="ssh-rsa RjlzYQo==" --updatedns host1.example.com
--sshpubkey="RjlzYQo==" --sshpubkey="ZEt0TAo=="48.5.3. 使用 IdM Web UI 删除主机的 SSH 密钥
- 要点:您可以在主机密钥过期或者不再有效后删除主机密钥。按照以下步骤,使用 IdM Web UI 删除单个主机密钥。
- 要点:先决条件
- 列表:管理 IdM Web UI 的管理员特权或主机管理员角色。
- 列表:登录到 IdM Web UI。
- 列表:进入 Identity>Hosts 选项卡。
- 列表:单击要编辑的主机名称。
- 列表:在 Host Settings 部分下,单击您要删除的 SSH 公钥旁边的 Delete。
- 列表:点页面顶部的 Save。
48.5.4. 使用 IdM CLI 删除主机的 SSH 密钥
- 要点:您可以在主机密钥过期或者不再有效后删除主机密钥。按照以下步骤,使用 IdM CLI 删除单个主机密钥。
- 要点:先决条件
- 列表:管理 IdM CLI 的管理员特权或主机管理员角色。
- 列表:要删除分配给主机帐户的所有 SSH 密钥,请在 ipa host-mod 命令中添加 --sshpubkey 选项,而不指定任何密钥: $ kinit admin $ ipa host-mod --sshpubkey= --updatedns host1.example.com 请注意,最好使用 --updatedns 选项来更新主机的 DNS 条目。 如果上传的密钥中不包括类型,则 IdM 将自动从密钥确定密钥类型。
- 列表:运行 ipa host-show 命令来验证 SSH 公钥是否不再与指定主机关联: $ ipa host-show client.ipa.test Host name: client.ipa.test Platform: x86_64 Operating system: 4.18.0-240.el8.x86_64 Principal name: host/client.ipa.test@IPA.TEST Principal alias: host/client.ipa.test@IPA.TEST Password: False Member of host-groups: ipaservers Roles: hel…
- 命令/配置摘录:
$ kinit admin $ ipa host-mod --sshpubkey= --updatedns host1.example.com
$ ipa host-show client.ipa.test Host name: client.ipa.test Platform: x86_64 Operating system: 4.18.0-240.el8.x86_64 Principal name: host/client.ipa.test@IPA.TEST Principal alias: host/client.ipa.test@IPA.TEST Password: False Member of host-groups: ipaservers Roles: helpdesk Member of netgroups: test Member of Sudo rule: test2 Member of HBAC rule: test Keytab: True Managed by: client.ipa.test, server.ipa.test Users allowed to retrieve keytab: user1, user2, user3第 49 章 配置域名解析顺序来解析较短的 AD 用户名
- 要点:默认情况下,您必须指定格式为 user_name@domain.com 或 domain.com\user_name 的 完全限定名称,以便从 Active Directory(AD)环境中解析和验证用户和组。了解如何配置 IdM 服务器和客户端来解析简短的 AD 用户名和组名称。
49.1. 域解析顺序的工作方式
- 要点:在具有 Active Directory(AD)信任的 Identity Management(IdM)环境中,红帽建议您通过指定完全限定名称来解析和验证用户和组。例如:
- 要点:默认情况下,如果您使用 简短名称 格式执行用户和组查找,如 ad_username,IdM 只会搜索 IdM 域,且无法找到 AD 用户和组。要使用短名称解析 AD 用户或组,请通过 设置域解析顺序选项来更改 IdM 搜索多个域的顺序。
- 列表:<idm_username>@idm.example.com 适用于 idm.example.com 域中的 IdM 用户
- 列表:用于 ad.example.com 域的 AD 用户的 <ad_username>@ad.example.com
- 列表:本地 /etc/sssd/sssd.conf 配置。
- 列表:ID 视图配置。
- 列表:全局 IdM 配置。
- 列表:如果主机上的 SSSD 配置包含 default_domain_suffix 选项,并且您要向不使用此选项指定的域发出请求,则必须使用完全限定的用户名。
- 注意:重要 不要在 IdM 客户端或 IdM 服务器中使用 full_name_format SSSD 选项。为这个选项使用非默认值会更改用户名的显示方式,并可能会破坏 IdM 环境中的查找。
49.2. 在 IdM 服务器中设置全局域解析顺序
- 要点:此流程为 IdM 域中的所有客户端设置域解析顺序。这个示例按以下顺序设置搜索用户和组的域解析顺序:
- 要点:先决条件
- 列表:Active Directory(AD)root 域 ad.example.com
- 列表:AD 子域 子域1.ad.example.com
- 列表:IdM 域 idm.example.com
- 列表:您已使用 AD 环境配置了信任关系。
- 列表:使用 ipa config-mod --domain-resolution-order 命令列出按您首选的顺序搜索的域。使用冒号(:)分隔域。 [user@server ~]$ ipa config-mod --domain-resolution-order='ad.example.com:subdomain1.ad.example.com:idm.example.com' Maximum username length: 32 Home directory base: /home ... Domain Resolution Order: ad.example.com:subdomain1.ad.example.com:idm.…
- 列表:验证您是否可以仅使用简短名称从 ad.example.com 域检索用户的用户信息。 [root@client ~]# id <ad_username> uid=1916901102(ad_username) gid=1916900513(domain users) groups=1916900513(domain users)
- 命令/配置摘录:
[user@server ~]$ ipa config-mod --domain-resolution-order='ad.example.com:subdomain1.ad.example.com:idm.example.com' Maximum username length: 32 Home directory base: /home ... Domain Resolution Order: ad.example.com:subdomain1.ad.example.com:idm.example.com ...
[root@client ~]# id <ad_username> uid=1916901102(ad_username) gid=1916900513(domain users) groups=1916900513(domain users)49.3. 为 IdM 服务器中的 ID 视图设置域解析顺序
- 要点:此流程为可应用于一组特定 IdM 服务器和客户端的 ID 视图设置域解析顺序。这个示例为 IdM 主机 client1.idm.example.com 创建名为 ADsubdomain1_first 的 ID 视图,并设置按照以下顺序搜索用户和组的域解析顺序:
- 要点:先决条件
- 列表:Active Directory(AD)子域 subdomain1.ad.example.com
- 列表:AD root 域 ad.example.com
- 列表:IdM 域 idm.example.com
- 列表:您已使用 AD 环境配置了信任关系。
- 列表:创建 ID 视图,并设置 the -domain-resolution-order 选项。 [user@server ~]$ ipa idview-add ADsubdomain1_first --desc "ID view for resolving AD subdomain1 first on client1.idm.example.com" --domain-resolution-order subdomain1.ad.example.com:ad.example.com:idm.example.com --------------------------------- Added ID View "ADsubdomain1…
- 列表:将 ID 视图应用到 IdM 主机。 [user@server ~]$ ipa idview-apply ADsubdomain1_first --hosts client1.idm.example.com ----------------------------------- Applied ID View "ADsubdomain1_first" ----------------------------------- hosts: client1.idm.example.com --------------------------------------------- Number of hosts the ID View …
- 命令/配置摘录:
[user@server ~]$ ipa idview-add ADsubdomain1_first --desc "ID view for resolving AD subdomain1 first on client1.idm.example.com" --domain-resolution-order subdomain1.ad.example.com:ad.example.com:idm.example.com --------------------------------- Added ID View "ADsubdomain1_first" --------------------------------- ID View Name: ADsubdomain1_first Description: ID view for resolving AD subdomain1 first on client1.idm.example.com Domain Resolution Order: subdomain1.ad.example.com:ad.example.com:idm.example.com
[user@server ~]$ ipa idview-apply ADsubdomain1_first --hosts client1.idm.example.com ----------------------------------- Applied ID View "ADsubdomain1_first" ----------------------------------- hosts: client1.idm.example.com --------------------------------------------- Number of hosts the ID View was applied to: 1 ---------------------------------------------- 注意:注意 ID 视图中设置的域解析顺序覆盖全局域解析顺序,但它不会覆盖 SSSD 配置在本地设置的任何域解析顺序。
49.4. 使用 Ansible 创建一个具有域解析顺序的 ID 视图
- 要点:您可以使用 ansible-freeipa idview 模块在身份管理(IdM)部署中添加、修改和删除 ID 视图。例如,您可以创建一个带有域解析顺序的 ID 视图,来启用短名称表示法。
- 要点:短名称表示法使用短登录替换活动目录(AD)中的完整用户名,如 aduser05@ad.example.com,在本例中,使用 aduser05 替换。这意味着,当使用 SSH 登录到 IdM 客户端时,aduser05 可以输入 ssh aduser05@client.idm.example.com ,而不是 ssh aduser05@ad.example.com@client.idm.example.com。这同样适用于其他命令,如 id。
- 列表:定义一个冒号分开的域的字符串,用于短名称限定。在示例中,字符串是 ad.example.com:idm.example.com。
- 列表:创建一个 ID 视图,其指示 SSSD 首先在字符串中标识的第一个域中搜索用户名。在示例中,这是 ad.example.com。
- 列表:将 ID 视图应用到特定的主机。在示例中,这是 testhost.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 软件包。
- 命令/配置摘录:
--- - name: Playbook to add idview and apply it to an IdM client hosts: ipaserver vars_files: - /home/<user_name>/MyPlaybooks/secret.yml become: false gather_facts: false tasks: - name: Add idview and apply it to testhost.idm.example.com ipaidview: ipaadmin_password: "{{ ipaadmin_password }}" name: test_idview host: testhost.idm.example.com domain_resolution_order: "ad.example.com:ipa.example.com"
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-id-view-with-domain-resolution-order.yml- 注意:注意 您只能将一个 ID 视图应用到一个 IdM 客户端。应用新的 ID 视图会自动删除以前的 ID 视图(如果适用)。
49.5. 在 IdM 客户端上在 SSSD 中设置域解析顺序
- 要点:此流程在 IdM 客户端上的 SSSD 配置中设置域解析顺序。这个示例将 IdM 主机 client2.idm.example.com 配置为按以下顺序搜索用户和组:
- 要点:先决条件
- 列表:Active Directory(AD)子域 subdomain1.ad.example.com
- 列表:AD root 域 ad.example.com
- 列表:IdM 域 idm.example.com
- 列表:您已使用 AD 环境配置了信任关系。
- 列表:在文本编辑器中打开 /etc/sssd/sssd.conf 文件。
- 列表:在文件的 [sssd] 部分中设置 domain_resolution_order 选项。 domain_resolution_order = subdomain1.ad.example.com, ad.example.com, idm.example.com
- 命令/配置摘录:
domain_resolution_order = subdomain1.ad.example.com, ad.example.com, idm.example.com
[root@client2 ~]# systemctl restart sssd- 注意:注意 本地 SSSD 配置中的域解析顺序覆盖任何全局和 ID 视图域解析顺序。
49.6. 其他资源
- 列表:使用 ID 视图来覆盖 IdM 客户端上的用户属性值
第 50 章 在 IdM 中使用 AD 用户主体名称启用身份验证
- 该章节主要为下一级主题的入口。
50.1. IdM 信任的 AD 林中的用户主体名称
- 要点:作为身份管理(IdM)管理员,您可以允许 AD 用户使用其他用户主体名称 (UPN)访问 IdM 域中的资源。UPN 是 AD 用户以 user_name@KERBEROS-REALM 格式通过 进行身份验证的替代用户登录。作为 AD 管理员,您可以为 user_name 和 KERBEROS-REALM 设置备选值,因为您可以在 AD 林中配置额外的 Kerberos 别名和 UPN 后缀。
- 要点:例如,如果公司使用 Kerberos 域 AD.EXAMPLE.COM,用户的默认 UPN 为 user@ad.example.com。要允许您的用户使用其电子邮件地址(如 user@example.com )登录,您可以在 AD 中将 EXAMPLE.COM 配置为替代的 UPN。如果贵公司最近进行了合并,并且希望为用户提供统一的登录命名空间,备选 UPN(也称为企业 UPN)特别方便。
- 列表:如何在 AD 林根目录中编写 UPN 后缀设置脚本
- 列表:如何手动修改 AD 用户条目并绕过任何 UPN 后缀验证
- 列表:信任控制器和信任代理
- 注意:注意 要为用户配置 UPN 后缀,红帽建议使用执行错误验证的工具,如 Active Directory 域和 Trust 实用程序。 红帽建议不要通过低级修改来配置 UPN,例如使用 ldapmodify 命令为用户设置 userPrincipalName 属性,因为 Active Directory 不验证这些操作。
50.2. 确保 AD UPN 在 IdM 中是最新的
- 要点:在可信 Active Directory(AD)林中添加或删除用户主体名称(UPN)后缀后,刷新 IdM 服务器上的可信林的信息。
- 要点:先决条件
- 列表:IdM 管理员凭证。
- 列表:输入 ipa trust-fetch-domains 命令。请注意,预计会出现一个看似为空的输出: [root@ipaserver ~]# ipa trust-fetch-domains Realm-Name: ad.example.com ------------------------------- No new trust domains were found ------------------------------- ---------------------------- Number of entries returned 0 ----------------------------
- 列表:输入 ipa trust-show 命令,以验证服务器是否已获取新的 UPN。在提示时指定 AD 域的名称: [root@ipaserver ~]# ipa trust-show Realm-Name: ad.example.com Realm-Name: ad.example.com Domain NetBIOS name: AD Domain Security Identifier: S-1-5-21-796215754-1239681026-23416912 Trust direction: One-way trust Trust type: Active Directory domain UPN suffixe…
- 命令/配置摘录:
[root@ipaserver ~]# ipa trust-fetch-domains Realm-Name: ad.example.com ------------------------------- No new trust domains were found ------------------------------- ---------------------------- Number of entries returned 0 ----------------------------
[root@ipaserver ~]# ipa trust-show Realm-Name: ad.example.com Realm-Name: ad.example.com Domain NetBIOS name: AD Domain Security Identifier: S-1-5-21-796215754-1239681026-23416912 Trust direction: One-way trust Trust type: Active Directory domain UPN suffixes: example.com50.3. 为 AD UPN 身份验证问题收集故障排除数据
- 要点:按照以下流程,从活动目录(AD)环境和 IdM 环境收集有关用户主体名称(UPN)配置的故障排除数据。如果您的 AD 用户无法使用备用 UPN 登录,您可以使用此信息缩小故障排除工作范围。
- 要点:先决条件
- 列表:您必须登录到 IdM Trust Controller 或 Trust Agent,才能从 AD 域控制器检索信息。
- 列表:您需要 root 权限才能修改以下配置文件,并重新启动 IdM 服务。
- 列表:在文本编辑器中打开 /usr/share/ipa/smb.conf.empty 配置文件。
- 列表:将以下内容添加到该文件中。 [global] log level = 10
- 列表:保存并关闭 /usr/share/ipa/smb.conf.empty 文件。
- 列表:在文本编辑器中打开 /etc/ipa/server.conf 配置文件。如果没有该文件,请创建一个。
- 命令/配置摘录:
[global] log level = 10
[global] debug = True第 51 章 启用 AD 用户管理 IdM
- 该章节主要为下一级主题的入口。
51.1. AD 用户的 ID 覆盖
- 要点:您可以集中管理 POSIX 环境中的 Active Directory(AD)用户和组到 POSIX 环境中的 Identity Management(IdM)资源访问,方法是作为 IdM 组的成员为 AD 用户添加 ID 用户覆盖。
- 要点:ID 覆盖是一种记录,描述了特定的活动目录用户或组属性在特定 ID 视图(本例中为 Default Trust View )中应该是什么样子。使用这个功能,IdM LDAP 服务器可以将 IdM 组的访问控制规则应用到 AD 用户。
- 列表:为活动目录用户使用 ID 视图
- 注意:注意 目前,IdM 中所选的功能可能仍对 AD 用户不可用。例如,以 IdM admins 组中的 AD 用户身份为 IdM 用户设置密码可能会失败。
- 注意:重要 不要将 AD 用户的 ID 覆盖用于 IdM 中的 sudo 规则。AD 用户的 ID 覆盖只代表 AD 用户的 POSIX 属性,而不是 AD 用户本身。
51.2. 使用 ID 覆盖来启用 AD 用户管理 IdM
- 要点:按照以下流程,为 AD 用户创建和使用 ID 覆盖,来为该用户授予与 IdM 用户相同的权利。在此过程中,可在配置为信任控制器或信任代理的 IdM 服务器中工作。
- 要点:先决条件
- 列表:设定了一个正常工作的 IdM 环境。详情请参阅 安装身份管理。
- 列表:您的 IdM 环境与 AD 之间设置了有效信任。
- 列表:作为 IdM 管理员,为 Default Trust View 中的 AD 用户创建一个 ID 覆盖。例如,要为用户 ad_user@ad.example.com 创建 ID 覆盖: # kinit admin # ipa idoverrideuser-add 'default trust view' ad_user@ad.example.com
- 列表:将 Default Trust View 中的 ID 覆盖添加为 IdM 组的成员。这必须是非 POSIX 组,因为它与活动目录进行交互。 如果问题中的组是 IdM 角色的成员,则 ID 覆盖代表的 AD 用户在使用 IdM API 时获得角色授予的所有权限,包括命令行界面和 IdM Web UI。 例如,要将 ad_user@ad.example.com 用户的 ID 覆盖添加到 IdM admins 组中: # ipa group-add-member admins --idoverrideusers=ad_user@ad.example.com
- 列表:或者,您可以在角色中添加 ID 覆盖,如 User Administrator 角色: # ipa role-add-member 'User Administrator' --idoverrideusers=ad_user@ad.example.com
- 列表:为活动目录用户使用 ID 视图
- 命令/配置摘录:
# kinit admin # ipa idoverrideuser-add 'default trust view' ad_user@ad.example.com
# ipa group-add-member admins --idoverrideusers=ad_user@ad.example.com51.3. 验证 AD 用户是否可以在 IdM CLI 中执行正确的命令
- 要点:此流程检查 Active Directory(AD)用户可以登录到 Identity Management(IdM)命令行界面(CLI),并运行适合其角色的命令。
- 要点:销毁 IdM 管理员的当前 Kerberos ticket:
- 列表:销毁 IdM 管理员的当前 Kerberos ticket: # kdestroy -A 注意 Kerberos ticket 的破坏是必需的,因为 MIT Kerberos 中的 GSSAPI 实施首选项从目标服务域选择凭证,本例中为 IdM 域。这意味着,如果使用了一个凭证缓存集合(名为 KCM:, KEYRING:, 或 DIR: 类型的凭证缓存),则会使用之前获取的 admin 或任何其他 IdM 主体的凭证来访问 IdM API 而不是使用 AD 用户的凭证。
- 列表:获取已为其创建 ID 覆盖的 AD 用户的 Kerberos 凭证: # kinit ad_user@AD.EXAMPLE.COM Password for ad_user@AD.EXAMPLE.COM:
- 列表:测试 AD 用户的 ID 覆盖是否因 IdM 组成员资格而获得与该组中的任何 IdM 用户相同的权限。如果 AD 用户的 ID 覆盖已添加到 admins 组中,AD 用户可以在 IdM 中创建组: # ipa group-add some-new-group ---------------------------- Added group "some-new-group" ---------------------------- Group name: some-new-group GID: 1997000011
- 命令/配置摘录:
# kdestroy -A
# kinit ad_user@AD.EXAMPLE.COM Password for ad_user@AD.EXAMPLE.COM:- 注意:注意 Kerberos ticket 的破坏是必需的,因为 MIT Kerberos 中的 GSSAPI 实施首选项从目标服务域选择凭证,本例中为 IdM 域。这意味着,如果使用了一个凭证缓存集合(名为 KCM:, KEYRING:, 或 DIR: 类型的凭证缓存),则会使用之前获取的 admin 或任何其他 IdM 主体的凭证来访问 IdM API 而不是使用 AD 用户的凭证。
51.4. 使用 Ansible 启用 AD 用户来管理 IdM
- 要点:您可以使用 ansible-freeipa idoverrideuser 和 group 模块从可信 AD 域中为活动目录(AD)用户创建一个用户 ID 覆盖,并授予该用户与 IdM 用户相同的权限。该流程使用 Default Trust View ID 视图的示例,其中将 ad_user@AD.EXAMPLE.COM ID 覆盖添加到第一个 playbook 任务中。在下一个 playbook 任务中 ,ad_user@AD.EXAMPLE.COM ID 覆盖作为成员添加到 IdM admins 组中。因此,AD 管理员可以管理 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 文件的密码的文件。
- 列表:清单文件中的 ipaserver 主机被配置为信任控制器或信任代理。
- 命令/配置摘录:
--- - name: Enable AD administrator to act as a FreeIPA admin hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure idoverride for ad_user@ad.example.com in 'Default Trust View' ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: "Default Trust View" anchor: ad_user@ad.example.com
- name: Add the AD administrator as a member of admins ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: admins idoverrideuser: - ad_user@ad.example.com第 52 章 使用外部身份提供者向 IdM 进行身份验证
- 要点:您可以将用户与支持 OAuth 2 设备授权流的外部身份提供者(IdP)关联。
- 要点:当这些用户与 SSSD 进行身份验证时,它们会在外部 IdP 执行身份验证和授权后收到 Kerberos 票据的 RHEL 身份管理(IdM)单点登录功能。
- 列表:使用 ipa idp-* 命令添加、修改和删除对外部 IdP 的引用。
- 列表:使用 ipa user-mod --user-auth-type=idp 命令为用户启用 IdP 身份验证。 支持的内容
- 列表:启用了 键盘互动 验证方法通过 SSH 远程登录,它允许调用可插拔式身份验证模块 (PAM) 库。
- 列表:通过 logind 服务,使用控制台本地登录。
- 列表:使用 kinit 实用程序检索 Kerberos ticket-granting ticket (TGT)。 当前不支持的内容
- 列表:直接登录到 IdM WebUI。要登录到 IdM WebUI,您必须首先获取一个 Kerberos ticket。
52.1. 将 IdM 连接到外部 IdP 的好处
- 要点:作为管理员,您可能想要允许存储在外部身份源(如云服务供应商)中的用户访问连接到 Identity Management (IdM) 环境的 RHEL 系统。要达到此目的,您可以将这些用户的 Kerberos 票据的身份验证和授权过程委托给该外部实体。
- 要点:您可以使用此功能扩展 IdM 的功能,并允许存储在外部身份提供者(IdP) 中的用户访问由 IdM 管理的 Linux 系统。
52.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。
52.3. 创建一个到外部身份提供者的引用
- 要点:要将外部身份提供者(IdP)连接到您的身份管理(IdM)环境,请在 IdM 中创建 IdP 引用。完成此流程,来根据 Keycloak 模板创建一个到 IdP 的名为 my-keycloak-idp 的引用。有关更多参考模板,请参阅 IdM 中对不同外部 IdP 的引用示例。
- 要点:先决条件
- 列表:您已将 IdM 作为 OAuth 应用程序注册到外部 IdP,并获取了客户端 ID。
- 列表:您可以作为 IdM admin 帐户进行身份验证。
- 列表:在 IdM 服务器中作为 IdM 管理员进行身份验证。 [root@server ~]# kinit admin
- 列表:根据 Keycloak 模板,创建一个到 IdP 的名为 my-keycloak-idp 的引用,其中 --base-url 选项指定到 Keycloak 服务器的 URL,格式为 server-name.$DOMAIN:$PORT/prefix。 [root@server ~]# ipa idp-add my-keycloak-idp \ --provider keycloak --organization main \ --base-url keycloak.idm.example.com:8443/auth \ --client-id id13778 ----------------------------------…
- 列表:验证 ipa idp-show 命令的输出显示您创建的 IdP 引用。 [root@server ~]# ipa idp-show my-keycloak-idp
- 列表:IdM 中到不同外部 IdP 的引用示例
- 命令/配置摘录:
[root@server ~]# kinit admin
[root@server ~]# ipa idp-add my-keycloak-idp \ --provider keycloak --organization main \ --base-url keycloak.idm.example.com:8443/auth \ --client-id id13778 ------------------------------------------------ Added Identity Provider reference "my-keycloak-idp" ------------------------------------------------ Identity Provider reference name: my-keycloak-idp Authorization URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/auth Device authorization URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/auth/device Token URI: https://keycloak.idm.example.com:8443/auth/realms/main…52.4. IdM 中到不同外部 IdP 的引用示例
- 要点:下表列出了在 IdM 中创建到不同 IdP 的引用的 ipa idp-add 命令的示例。
- 要点:其他资源
- 列表:创建一个到外部身份提供者的引用
- 列表:在 IdM 中管理外部身份提供者的 ipa idp-* 命令的选项
- 列表:ipa idp-* 命令中的 --provider 选项
- 列表:将 IdM 配置为使用 Google 作为外部 IdP (红帽知识库)
- 列表:将 IdM 配置为使用 Entra ID (Azure AD)作为外部 IdP (红帽知识库)
- 列表:将 IdM 配置为使用 GitHub 作为外部 IdP (红帽知识库)
- 注意:注意 Keycloak 17 及更新版本的 Quarkus 版本已删除 URI 的 /auth/ 部分。如果您在部署中使用 Keycloak 的非Quarkus 分发,请在 --base-url 选项中包含 /auth/。
- 表格样本(共 6 行):
- 身份供应商 | 重要选项 | 命令示例
- Microsoft Identity Platform、Azure AD | --provider microsoft --organization | # ipa idp-add my-azure-idp \ --provider microsoft \ --organization main \ --client-id <azure_client_id>
- Google | --provider google | # ipa idp-add my-google-idp \ --provider google \ --client-id <google_client_id>
- GitHub | --provider github | # ipa idp-add my-github-idp \ --provider github \ --client-id <github_client_id>
52.5. 在 IdM 中管理外部身份提供者的 ipa idp-* 命令的选项
- 要点:以下示例演示了如何根据不同的 IdP 模板配置到外部 IdP 的引用。使用以下选项指定设置:
- 要点:其他资源
- 列表:创建一个到外部身份提供者的引用
- 列表:IdM 中到不同外部 IdP 的引用示例
- 列表:ipa idp-* 命令中的 --provider 选项
52.6. 管理对外部 IdP 的引用
- 要点:创建到外部身份提供者(IdP) 的引用后,您可以找到、显示、修改和删除该引用。本例演示了如何管理对名为 keycloak-server1 的外部 IdP 的引用。
- 要点:先决条件
- 列表:您可以作为 IdM admin 帐户进行身份验证。
- 列表:您已在 IdM 中创建了到外部 IdP 的引用。请参阅创建对外部身份提供程序的引用。
- 列表:在 IdM 服务器中作为 IdM 管理员进行身份验证。 [root@server ~]# kinit admin
- 列表:管理 IdP 参考。 查找 IdP 参考,其条目包括字符串 keycloak : [root@server ~]# ipa idp-find keycloak 显示名为 my-keycloak-idp 的 IdP 参考: [root@server ~]# ipa idp-show my-keycloak-idp 要修改 IdP 参考,请使用 ipa idp-mod 命令。例如,要更改名为 my-keycloak-idp 的 IdP 参考的 secret,请指定要提示输入 secret 的 --secret 选项: [root@server ~]# ipa idp-mod my-keycloak-idp --secret 删除名为 …
- 列表:查找 IdP 参考,其条目包括字符串 keycloak : [root@server ~]# ipa idp-find keycloak
- 列表:显示名为 my-keycloak-idp 的 IdP 参考: [root@server ~]# ipa idp-show my-keycloak-idp
- 命令/配置摘录:
[root@server ~]# kinit admin
[root@server ~]# ipa idp-find keycloak52.7. 启用 IdM 用户通过外部 IdP 进行身份验证
- 要点:要使 IdM 用户能够通过外部身份提供者(IdP)进行身份验证,请将之前创建的外部 IdP 引用与用户帐户关联。这个示例将外部 IdP 引用 keycloak-server1 与用户 idm-user-with-external-idp 相关联。
- 要点:先决条件
- 列表:您已在 IdM 中创建了到外部 IdP 的引用。请参阅创建对外部身份提供程序的引用。
- 列表:修改 IdM 用户条目,将 IdP 引用与用户帐户关联: [root@server ~]# ipa user-mod idm-user-with-external-idp \ --idp my-keycloak-idp \ --idp-user-id idm-user-with-external-idp@idm.example.com \ --user-auth-type=idp --------------------------------- Modified user "idm-user-with-external-idp" --------------------------------- User login: …
- 列表:验证该用户的 ipa user-show 命令的输出是否显示对 IdP 的引用: [root@server ~]# ipa user-show idm-user-with-external-idp User login: idm-user-with-external-idp First name: Test Last name: User1 Home directory: /home/idm-user-with-external-idp Login shell: /bin/sh Principal name: idm-user-with-external-idp@idm.example.com Principal a…
- 命令/配置摘录:
[root@server ~]# ipa user-mod idm-user-with-external-idp \ --idp my-keycloak-idp \ --idp-user-id idm-user-with-external-idp@idm.example.com \ --user-auth-type=idp --------------------------------- Modified user "idm-user-with-external-idp" --------------------------------- User login: idm-user-with-external-idp First name: Test Last name: User1 Home directory: /home/idm-user-with-external-idp Login shell: /bin/sh Principal name: idm-user-with-external-idp@idm.example.com Principal alias: idm-user-with-external-idp@idm.example.com Email address: idm-user-with-external-idp@idm.example.com UID: 35000003 GID: 35000003 User authenti…
[root@server ~]# ipa user-show idm-user-with-external-idp User login: idm-user-with-external-idp First name: Test Last name: User1 Home directory: /home/idm-user-with-external-idp Login shell: /bin/sh Principal name: idm-user-with-external-idp@idm.example.com Principal alias: idm-user-with-external-idp@idm.example.com Email address: idm-user-with-external-idp@idm.example.com ID: 35000003 GID: 35000003 User authentication types: idp External IdP configuration: keycloak External IdP user identifier: idm-user-with-external-idp@idm.example.com Account disabled: False Password: False Member of groups: ipausers Kerberos keys avail…52.8. 以外部 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 的引用。请参阅创建对外部身份提供程序的引用。
- 列表:您已与用户帐户关联了一个外部 IdP 参考。请参阅启用 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.COM52.9. 以外部 IdP 用户身份通过 SSH 登录到 IdM 客户端
- 要点:要以外部身份提供者(IdP) 用户的身份通过 SSH 登录到 IdM 客户端,请在命令行上开始登录过程。出现提示时,在与 IdP 关联的网站上执行身份验证过程,并在 Identity Management (IdM) 客户端上完成该过程。
- 要点:先决条件
- 列表:您已在 IdM 中创建了到外部 IdP 的引用。请参阅创建对外部身份提供程序的引用。
- 列表:您已与用户帐户关联了一个外部 IdP 参考。请参阅启用 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) = 15252.10. ipa idp-* 命令中的 --provider 选项
- 要点:以下身份提供者 (IdP) 支持 OAuth 2.0 设备授权流:
- 要点:当使用 ipa idp-add 命令创建对其中一个外部 IdP 的引用时,您可以使用 --provider 选项指定 IdP 类型,它扩展至额外的选项,如下所述:
- 列表:Microsoft Identity Platform,包括 Azure AD
- 列表:Google
- 列表:GitHub
- 列表:Keycloak,包括 Red Hat Single Sign-On (SSO)
- 列表:Okta
- 列表:预填充的 IdP 模板
- 命令/配置摘录:
[root@client ~]# ipa idp-add MySSO --provider keycloak \ --org main --base-url keycloak.domain.com:8443/auth \ --client-id <your-client-id>
[root@client ~]# ipa idp-add MyOkta --provider okta --base-url dev-12345.okta.com --client-id <your-client-id>- 表格样本(共 8 行):
- 选项 | 值
- --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
52.11. 其他资源
- 列表:使用 Ansible 将 IdM 用户的身份验证委派给外部身份提供者
第 53 章 在 IdM 中使用受限委托
- 要点:受限委托使一个服务可以代表您访问其他服务。您只授予一个服务的权限,而不是为所有凭证提供完全访问权限。
53.1. 身份管理中的受限委托
- 要点:用户到代理 (S4U2proxy) 扩展的服务为代表用户的另一服务获取服务票据。此功能称为受限委托。第二个服务通常是在用户的授权上下文下代表第一个服务执行某些工作的代理。使用受限委托无需用户委派其完整票据授予票 (TGT)。
- 要点:身份管理 (IdM) 通常使用 Kerberos S4U2proxy 功能来允许 Web 服务器框架代表用户获取 LDAP 服务票据。IdM-AD 信任系统也使用受限委托来获取 cifs 主体。
- 列表:在运行 web 控制台服务的 RHEL 主机上以超级用户权限运行命令,而无需再次进行身份验证。
- 列表:使用 SSH 访问远程主机并访问主机上的服务,而无需再次进行身份验证。
- 列表:S4U2proxy
- 列表:服务受限委托
53.2. 在 web 控制台中为 SSH 登录配置智能卡验证
- 要点:在 RHEL web 控制台中登录到用户帐户后,您可以使用 SSH 协议连接到远程机器。您可以使用受限委托功能来使用 SSH,而无需再次进行身份验证。
- 要点:在示例流程中,web 控制台会话在 myhost.idm.example.com 主机上运行,并将控制台配置为代表经过身份验证的用户使用 SSH 访问 remote.idm.example.com 主机。
- 列表:您已在 myhost.idm.example.com 上获得了 IdM admin ticket-granting ticket (TGT)。
- 列表:您有访问 remote.idm.example.com 的 root 权限。
- 列表:运行 Web 控制台的主机是 IdM 域的成员。
- 列表:在 Terminal 页面中,验证 web 控制台是否在用户会话中为 User to Proxy (S4U2proxy) Kerberos ticket 创建一个服务: $ klist … Valid starting Expires Service principal 05/20/25 09:19:06 05/21/25 09:19:06 HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM …
- 列表:创建委派规则可访问的目标主机列表: 创建服务委托目标: $ ipa servicedelegationtarget-add cockpit-target 将目标主机添加到委派目标: $ ipa servicedelegationtarget-add-member cockpit-target \ --principals=host/remote.idm.example.com@IDM.EXAMPLE.COM
- 列表:创建服务委托目标: $ ipa servicedelegationtarget-add cockpit-target
- 命令/配置摘录:
$ klist … Valid starting Expires Service principal 05/20/25 09:19:06 05/21/25 09:19:06 HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM …
$ ipa servicedelegationtarget-add cockpit-target53.3. 使用 Ansible 为 web 控制台中的 SSH 登录配置智能卡验证
- 要点:在 RHEL web 控制台中登录到用户帐户后,您可以使用 SSH 协议连接到远程机器。您可以使用 servicedelegationrule 和 servicedelegationtarget Ansible 模块为受限委托功能配置 Web 控制台,这将启用 SSH 连接,而无需再次进行身份验证。
- 要点:在示例流程中,web 控制台会话在 myhost.idm.example.com 主机上运行,并将它配置为代表经过身份验证的用户使用 SSH 访问 remote.idm.example.com 主机。
- 列表:您已在 myhost.idm.example.com 上获得了 IdM admin ticket-granting ticket (TGT)。
- 列表:您有访问 remote.idm.example.com 的 root 权限。
- 列表:运行 Web 控制台的主机是 IdM 域的成员。
- 列表:您已配置了 Ansible 控制节点以满足以下要求: 您已安装 ansible-freeipa 软件包。 示例假设您在 ~/MyPlaybooks/ 目录中创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。 示例假定 secret.yml Ansible vault 将 admin 密码存储在 ipaadmin_password 变量中。
- 列表:您已安装 ansible-freeipa 软件包。
- 列表:示例假设您在 ~/MyPlaybooks/ 目录中创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
- 命令/配置摘录:
$ cd ~/MyPlaybooks/
$ ansible-vault create secret.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>53.4. 配置 Web 控制台,以允许使用智能卡进行身份验证的用户运行 sudo,而无需要求再次进行身份验证
- 要点:登录到 RHEL web 控制台上的用户帐户后,作为身份管理(IdM)系统管理员,您可能需要使用超级用户权限运行命令。您可以使用 受限委托 功能在系统上运行 sudo,而无需再次进行身份验证。
- 要点:按照以下流程,将 Web 控制台配置为使用受限的委托。在以下示例中,Web 控制台会话运行在myhost.idm.example.com主机上。
- 列表:您已获得 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@…
- 列表:创建可以通过委派规则访问的目标主机列表: 创建服务委托目标: $ ipa servicedelegationtarget-add cockpit-target 将目标主机添加到委派目标: $ ipa servicedelegationtarget-add-member cockpit-target \ --principals=host/myhost.idm.example.com@IDM.EXAMPLE.COM
- 命令/配置摘录:
$ 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
$ ipa servicedelegationtarget-add cockpit-target53.5. 使用 Ansible 配置 Web 控制台,允许用户使用智能卡进行身份验证的用户运行 sudo,而无需再次进行身份验证
- 要点:登录到 RHEL web 控制台上的用户帐户后,作为身份管理(IdM)系统管理员,您可能需要使用超级用户权限运行命令。您可以使用 受限委托 功能在系统上运行 sudo,而无需再次进行身份验证。
- 要点:按照以下流程,使用 ipaservicedelegationrule 和 ipaservicedelegationtarget ansible-freeipa 模块将 Web 控制台配置为使用受限的委托。在以下示例中,Web 控制台会话运行在myhost.idm.example.com主机上。
- 列表:您已通过使用智能卡向 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/53.6. 其他资源
- 列表:在 web 控制台中管理远程系统
第 54 章 在 IdM 中使用基于资源的受限委托
- 要点:您可以使用基于资源的受限委托(RBCD)允许访问服务。使用 RBCD 可以在资源级别上进行精细控制。访问权限可以由委派凭据的服务的所有者来设置。例如,这在身份管理(IdM)和活动目录(AD)之间的集成中很有用。
- 要点:自 2019 起,当目标和代理服务都属于不同的林时,Microsoft AD 强制使用 RBCD。
54.1. IdM 中基于资源的受限委托
- 要点:RBCD 允许更好地控制访问委派。本章论述了 RBCD 和常规受限委托之间的主要区别。
- 要点:基于资源的受限委托(RBCD)与常规受限委托在多个方面有所不同:
- 列表:粒度:在 RBCD 中,委托在资源级别上指定。
- 列表:访问授权责任:在 RBCD 中,访问是由服务所有者,而不是 Kerberos 管理员控制的。
- 注意:重要 目前,只有 IdM 域中的服务才能使用 RBCD 规则进行配置。如果目标服务是 AD 域的一部分,则只能在 AD 端授予权限。因为 AD 域控制器无法解析 IdM 服务信息来创建规则,这目前还不支持。
54.2. 使用 RBCD 委托对服务的访问
- 要点:要使用 RBCD 将访问权限委派给服务,请在运行该服务的主机上添加一条规则。这个示例流程描述了如何将用户凭据委托给带有 Kerberos 服务 HTTP/client.example.test 的 web 应用程序的文件服务器 nfs/client.example.test。您可以在 client.example.test 主机上执行此操作,因为主机始终管理在其上运行的服务。
- 要点:先决条件
- 列表:您可以访问 client.example.test 主机的 /etc/krb5.keytab 文件。
- 列表:nfs/client.example.test 服务 keytab 存在。
- 列表:HTTP/client.example.test 的 keytab /path/to/web-service.keytab 存在。
- 列表:在 client.example.test 主机上,获取一个 Kerberos 票据: # kinit -k
- 列表:定义 RBCD ACL: # ipa service-add-delegation nfs/client.example.test HTTP/client.example.test ------------------------------------------------------- Added new resource delegation to the service principal "nfs/client.example.test@EXAMPLE.TEST" ------------------------------------------------------- Principal name: nfs/c…
- 列表:查看 NFS 服务,以验证委托规则是否存在: # ipa service-show nfs/client.example.test Principal name: nfs/client.example.test@EXAMPLE.TEST Principal alias: nfs/client.example.test@EXAMPLE.TEST Delegation principal: HTTP/client.example.test@EXAMPLE.TEST Keytab: True Managed by: client.example.test
- 命令/配置摘录:
# kinit -k
# ipa service-add-delegation nfs/client.example.test HTTP/client.example.test ------------------------------------------------------- Added new resource delegation to the service principal "nfs/client.example.test@EXAMPLE.TEST" ------------------------------------------------------- Principal name: nfs/client.example.test@EXAMPLE.TEST Delegation principal: HTTP/client.example.test@EXAMPLE.TEST完整目录
- 配置用户和主机,在组中管理它们,并使用基于主机和基于角色的访问控制规则控制访问
- 对红帽文档提供反馈
- 第 1 章 使用命令行管理用户帐户
- 1.1. 用户生命周期
- 1.2. 使用命令行添加用户
- 1.3. 使用命令行激活用户
- 1.4. 使用命令行保留用户
- 1.5. 使用命令行删除用户
- 1.6. 使用命令行恢复用户
- 1.7. 其他资源
- 第 2 章 使用 IdM Web UI 管理用户帐户
- 2.1. 用户生命周期
- 2.2. 在 Web UI 中添加用户
- 2.3. 在 IdM Web UI 中 stage 用户
- 2.4. 在 Web UI 中禁用用户帐户
- 2.5. 在 Web UI 中启用用户帐户
- 2.6. 在 IdM Web UI 中保留活动的用户
- 2.7. 在 IdM Web UI 中恢复用户
- 2.8. 在 IdM Web UI 中删除用户
- 第 3 章 使用 Ansible playbook 管理用户帐户
- 3.1. 用户生命周期
- 3.2. 使用 Ansible playbook 确保存在一个 IdM 用户
- 3.3. 使用 Ansible playbook 确保存在多个 IdM 用户
- 3.4. 使用 Ansible playbook 确保存在 JSON 文件中的多个 IdM 用户
- 3.5. 确保没有用户使用 Ansible playbook
- 第 4 章 修改 IdM 中的用户和组属性
- 4.1. 默认 IdM 用户属性
- 4.2. 更改默认用户和组模式的注意事项
- 4.3. 在 IdM Web UI 中修改用户对象类
- 4.4. 在 IdM CLI 中修改用户对象类
- 4.5. 在 IdM Web UI 中修改组对象类
- 4.6. 在 IdM CLI 中修改组对象类
- 4.7. IdM 中的默认用户和组群属性
- 4.8. 在 IdM Web UI 中查看和修改用户和组群配置
- 4.9. 在 IdM CLI 中查看和修改用户和组群配置
- 4.10. 其他资源
- 第 5 章 在 IdM 中管理用户密码
- 5.1. 谁可以更改 IdM 用户密码以及如何去做
- 5.2. 在 IdM Web UI 中更改用户密码
- 5.3. 在 IdM Web UI 中重置另一个用户的密码
- 5.4. 重置目录管理器用户密码
- 5.5. 在 IdM CLI 中更改您的用户密码或重置另一个用户的密码
- 5.6. 用于更改用户密码的其他命令
- 5.7. 在 IdM 中启用密码重置,而不会在下一次登录时提示用户更改密码
- 5.8. 检查 IdM 用户帐户是否已被锁住
- 5.9. 在 IdM 中密码失败后解锁用户帐户
- 5.10. 为 IdM 中的用户启用最后一次成功 Kerberos 验证的跟踪
- 第 6 章 定义 IdM 密码策略
- 6.1. 什么是密码策略
- 6.2. IdM 中的密码策略
- 6.3. IdM 中的密码策略优先级
- 6.4. 使用 WebUI 或 CLI 在 IdM 中添加新密码策略
- 6.4.1. 在 IdM WebUI 中添加新密码策略
- 6.4.2. 在 IdM CLI 中添加新密码策略
- 6.5. IdM 中的附加密码策略选项
- 6.6. 将其他密码策略选项应用到 IdM 组
- 6.7. 其他资源
- 第 7 章 管理过期密码通知
- 7.1. 什么是过期的密码通知工具
- 7.2. 安装过期的密码通知工具
- 7.3. 运行 EPN 工具,向密码即将过期的用户发送电子邮件
- 7.4. 启用 ipa-epn.timer ,向密码即将过期的所有用户发送电子邮件
- 7.5. 修改过期密码通知电子邮件模板
- 第 8 章 为 IdM 客户端上的 IdM 用户授予 sudo 访问权限
- 8.1. IdM 客户端上的 sudo 访问权限
- 8.2. 使用 CLI 向 IdM 客户端上的 IdM 用户授予 sudo 访问权限
- 8.3. 使用 CLI 在 IdM 客户端上授予 sudo 访问 AD 用户的权限
- 8.4. 使用 IdM Web UI 向 IdM 客户端上的 IdM 用户授予 sudo 访问权限
- 8.5. 在 CLI 上创建 sudo 规则,以作为 IdM 客户端上的服务帐户运行命令
- 8.6. 在 IdM Web UI 中创建一个 sudo 规则,该规则在 IdM 客户端上以服务帐户的身份运行命令
- 8.7. 在 IdM 客户端上为 sudo 启用 GSSAPI 身份验证
- 8.8. 在 IdM 客户端上为 sudo 启用 GSSAPI 身份验证,并强制实施 Kerberos 身份验证指标
- 8.9. SSSD 选项控制对 PAM 服务的 GSSAPI 身份验证
- 8.9.1. SSSD GSSAPI 配置示例
- 8.10. sudo 的 GSSAPI 身份验证故障排除
- 8.11. 其他资源
- 第 9 章 使用 ldapmodify 在外部管理 IdM 用户
- 9.1. 在外部管理 IdM 用户帐户的模板
- 9.2. 在外部管理 IdM 组帐户的模板
- 9.3. 以互动方式使用 ldapmodify 命令
- 9.4. 使用 ldapmodify 保留 IdM 用户
- 第 10 章 使用 ldapsearch 命令搜索 IdM 条目
- 10.1. 使用 ldapsearch 命令
- 10.2. 使用 ldapsearch 过滤器
- 10.3. 其他资源
- 第 11 章 为用户的外部调配配置 IdM
- 11.1. 为 stage 用户帐户的自动激活准备 IdM 帐户
- 11.2. 配置 IdM stage用户帐户的自动激活
- 11.3. 添加 LDIF 文件中定义的 IdM stage 用户
- 11.4. 使用 ldapmodify 直接从 CLI 添加 IdM stage 用户
- 11.5. 其他资源
- 第 12 章 为用户、主机和服务管理 Kerberos 主体别名
- 12.1. 添加一个 Kerberos 主体别名
- 12.2. 删除一个 Kerberos 主体别名
- 12.3. 添加一个 Kerberos 企业主体别名
- 12.4. 删除 Kerberos 企业主体别名
- 第 13 章 使用 PAC 信息增强 Kerberos 安全性
- 13.1. IdM 中使用特权属性证书 (PAC)
- 13.2. 在 IdM 中启用安全标识符 (SID)
- 第 14 章 管理 Kerberos 票据策略
- 14.1. IdM KDC 的角色
- 14.2. IdM Kerberos 票据策略类型
- 14.3. Kerberos 认证指示符
- 14.4. 为 IdM 服务强制执行身份验证指标
- 14.4.1. 创建 IdM 服务条目及其 Kerberos keytab
- 14.4.2. 使用 IdM CLI 将身份验证指示符与 IdM 服务相关联
- 14.4.3. 使用 IdM Web UI 将验证指标与 IdM 服务关联
- 14.4.4. 为 IdM 服务检索 Kerberos 服务票据
- 14.4.5. 其他资源
- 14.5. 配置全局票据生命周期策略
- 14.6. 根据身份验证指标配置全局票据策略
- 14.7. 为用户配置默认的票据策略
- 14.8. 为用户配置单独的身份验证指标票据策略
- 14.9. krbtpolicy-mod 命令的身份验证指标选项
- 第 15 章 IdM 中的 Kerberos PKINIT 身份验证
- 15.1. 默认 PKINIT 配置
- 15.2. 显示当前的 PKINIT 配置
- 15.3. 在 IdM 中配置 PKINIT
- 15.4. 其他资源
- 第 16 章 维护 IdM Kerberos keytab 文件
- 16.1. Identity Management 如何使用 Kerberos keytab 文件
- 16.2. 验证 Kerberos keytab 文件是否与 IdM 数据库同步
- 16.3. IdM Kerberos keytab 文件内容列表
- 16.4. 查看 IdM 主密钥的加密类型
- 第 17 章 在 IdM 环境中启用 passkey 身份验证
- 17.1. 先决条件
- 17.2. 注册 passkey 设备
- 17.3. 身份验证策略
- 17.4. 以 passkey 用户身份检索 IdM 票据授予票据
- 第 18 章 在 IdM 中使用 KDC 代理
- 18.1. 配置 IdM 客户端以使用 KKDCP
- 18.2. 验证 IdM 服务器上是否启用了 KKDCP
- 18.3. 在 IdM 服务器上禁用 KKDCP
- 18.4. 在 IdM 服务器上重新启用 KKDCP
- 18.5. 配置 KKDCP 服务器 I
- 18.6. 配置 KKDCP 服务器 II
- 第 19 章 使用 CLI 管理 IdM 中的自助服务规则
- 19.1. IdM 中的自助服务访问控制
- 19.2. 使用 CLI 创建自助服务规则
- 19.3. 使用 CLI 编辑自助服务规则
- 19.4. 使用 CLI 删除自助服务规则
- 第 20 章 使用 IdM Web UI 管理自助服务规则
- 20.1. 使用 IdM Web UI 创建自助服务规则
- 20.2. 使用 IdM Web UI 编辑自助服务规则
- 20.3. 使用 IdM Web UI 删除自助服务规则
- 第 21 章 使用 Ansible playbook 管理 IdM 中的自助服务规则
- 21.1. 使用 Ansible 确保存在自助服务规则
- 21.2. 使用 Ansible 确保缺少自助服务规则
- 21.3. 使用 Ansible 确保自助服务规则具有特定属性
- 21.4. 使用 Ansible 确保自助服务规则没有特定属性
- 第 22 章 在 IdM CLI 中管理用户组
- 22.1. IdM 中的不同组类型
- 22.2. 直接和间接组成员
- 22.3. 使用 IdM CLI 添加用户组
- 22.4. 使用 IdM CLI 搜索用户组
- 22.5. 使用 IdM CLI 删除用户组
- 22.6. 使用 IdM CLI 将成员添加到用户组中
- 22.7. 添加没有用户私有组的用户
- 22.7.1. 没有用户私有组的用户
- 22.7.2. 在全局启用私有组时添加没有用户私有组的用户
- 22.7.3. 对所有用户全局禁用用户私有组
- 22.7.4. 当全局禁用用户私有组时添加用户
- 22.8. 使用 IdM CLI 将用户或组作为成员管理者添加到 IdM 用户组中
- 22.9. 使用 IdM CLI 查看组成员
- 22.10. 使用 IdM CLI 从用户组中删除成员
- 22.11. 使用 IdM CLI 从 IdM 用户组中删除作为成员管理者的用户或组
- 22.12. 为 IdM 中的本地和远程组启用组合并
- 22.13. 其他资源
- 第 23 章 在 IdM Web UI 中管理用户组
- 23.1. 使用 IdM Web UI 添加用户组
- 23.2. 使用 IdM Web UI 删除用户组
- 23.3. 使用 IdM Web UI 将成员添加到用户组中
- 23.4. 使用 Web UI 将用户或组作为成员管理者添加到 IdM 用户组中
- 23.5. 使用 IdM Web UI 查看组成员
- 23.6. 使用 IdM Web UI 从用户组中删除成员
- 23.7. 使用 Web UI 从 IdM 用户组中删除作为成员管理者的用户或组
- 第 24 章 使用 Ansible playbook 管理用户组
- 24.1. 使用 Ansible playbook 确保存在 IdM 组和组成员
- 24.2. 使用 Ansible 在一个任务中添加多个 IdM 组
- 24.3. 使用 Ansible 启用 AD 用户来管理 IdM
- 24.4. 使用 Ansible playbook 确保 IdM 用户组中存在成员管理器
- 24.5. 使用 Ansible playbook 确保 IdM 用户组中没有成员管理者
- 第 25 章 使用 IdM CLI 自动化组成员资格
- 25.1. 自动化组成员资格的好处
- 25.2. 自动成员规则
- 25.3. 使用 IdM CLI 添加自动成员规则
- 25.4. 使用 IdM CLI 将条件添加到自动成员规则中
- 25.5. 使用 IdM CLI 查看现有的自动成员规则
- 25.6. 使用 IdM CLI 删除自动成员规则
- 25.7. 使用 IdM CLI 从自动成员规则中删除条件
- 25.8. 使用 IdM CLI 将自动成员规则应用到现有条目
- 25.9. 使用 IdM CLI 配置默认的自动成员组
- 第 26 章 使用 IdM Web UI 自动化组成员资格
- 26.1. 使用 IdM Web UI 添加自动成员规则
- 26.2. 使用 IdM Web UI 向自动成员规则中添加条件
- 26.3. 使用 IdM Web UI 查看现有的自动成员规则和条件
- 26.4. 使用 IdM Web UI 删除自动成员规则
- 26.5. 使用 IdM Web UI 从自动成员规则中删除条件
- 26.6. 使用 IdM Web UI 将自动成员规则应用到现有条目
- 26.6.1. 为所有用户或主机重建自动成员资格
- 26.6.2. 只为单个用户或主机重建自动成员资格
- 26.7. 使用 IdM Web UI 配置默认的用户组
- 26.8. 使用 IdM Web UI 配置默认的主机组
- 第 27 章 使用 Ansible 在 IdM 中自动化组成员资格
- 27.1. 使用 Ansible 确保 IdM 用户组的自动成员规则存在
- 27.2. 使用 Ansible 确保指定的条件在 IdM 用户组自动成员规则中存在
- 27.3. 使用 Ansible 确保条件在 IdM 用户组自动成员规则中不存在
- 27.4. 使用 Ansible 确保 IdM 用户组的自动成员规则不存在
- 27.5. 使用 Ansible 确保 IdM 主机组自动成员规则中存在条件
- 第 28 章 将权限委托给用户组,来使用 IdM CLI 管理用户
- 28.1. 委托规则
- 28.2. 使用 IdM CLI 创建委托规则
- 28.3. 使用 IdM CLI 查看现有的委托规则
- 28.4. 使用 IdM CLI 修改委托规则
- 28.5. 使用 IdM CLI 删除委托规则
- 第 29 章 将权限委托给用户组,来使用 IdM Web UI 管理用户
- 29.1. 使用 IdM WebUI 创建委托规则
- 29.2. 使用 IdM WebUI 查看现有的委托规则
- 29.3. 使用 IdM WebUI 修改委托规则
- 29.4. 使用 IdM WebUI 删除委托规则
- 第 30 章 将权限委托到用户组,以使用 Ansible playbook 管理用户
- 30.1. 使用 Ansible 确保存在委托规则
- 30.2. 使用 Ansible 确保没有委托规则
- 30.3. 使用 Ansible 确保委托规则具有特定属性
- 30.4. 使用 Ansible 确保委托规则没有特定的属性
- 第 31 章 使用 CLI 在 IdM 中管理基于角色的访问控制
- 31.1. IdM 中的基于角色的访问控制
- 31.1.1. IdM 中的权限
- 31.1.2. 默认管理的权限
- 31.1.3. IdM 中的特权
- 31.1.4. IdM 中的角色
- 31.1.5. Identity Management 中的预定义角色
- 31.2. 在 CLI 中管理 IdM 权限
- 31.3. 现有权限的命令选项
- 31.4. 在 CLI 中管理 IdM 特权
- 31.5. 现有权限的命令选项
- 31.6. 在 CLI 中管理 IdM 角色
- 31.7. 现有角色的命令选项
- 31.1. IdM 中的基于角色的访问控制
- 第 32 章 使用 IdM Web UI 管理基于角色的访问控制
- 32.1. 在 IdM Web UI 中管理权限
- 32.2. 在 IdM Web UI 中管理特权
- 32.3. 在 IdM Web UI 中管理角色
- 第 33 章 在 IdM 中使用 Ansible playbook 管理基于角色的访问控制
- 33.1. 其他资源
- 第 34 章 使用 Ansible playbook 管理 RBAC 特权
- 34.1. 其他资源
- 第 35 章 使用 Ansible playbook 在 IdM 中管理 RBAC 权限
- 35.1. 其他资源
- 第 36 章 使用 ID 视图来覆盖 IdM 客户端上的用户属性值
- 36.1. ID 视图
- 36.2. ID 视图对 SSSD 性能的潜在负面影响
- 36.3. ID 视图可以覆盖的属性
- 36.4. 获取 ID 视图命令的帮助信息
- 36.5. 使用 ID 视图来覆盖特定主机上 IdM 用户的登录名称
- 36.6. 修改 IdM ID 视图
- 36.7. 添加 ID 视图来覆盖 IdM 客户端上的 IdM 用户主目录
- 36.8. 将 ID 视图应用到 IdM 主机组
- 36.9. 将 NIS 域迁移到身份管理
- 36.10. 使用 Ansible 覆盖特定主机上 IdM 用户的登录名称和主目录
- 36.11. 使用 Ansible 配置在 IdM 客户端上启用 SSH 密钥登录的 ID 视图
- 36.12. 使用 Ansible 为用户 ID 提供对 IdM 客户端上本地声卡的覆盖访问
- 36.13. 使用 Ansible 确保具有特定 UID 的 IdM 用户 在 ID 视图中存在
- 36.14. 使用 Ansible 确保 IdM 用户可以使用两个证书登录到 IdM 客户端
- 36.15. 使用 Ansible 授予 IdM 组访问 IdM 客户端上声卡的权限
- 第 37 章 为活动目录用户使用 ID 视图
- 37.1. Default Trust View 是如何工作的
- 37.2. 通过修改 Default Trust View 为 AD 用户定义全局属性
- 37.3. 对带有 ID 视图的 IdM 客户端上的 AD 用户覆盖 Default Trust View 属性
- 第 38 章 手动调整 ID 范围
- 38.1. ID 范围
- 38.2. 自动 ID 范围分配
- 38.3. 在服务器安装过程中手动分配 IdM ID 范围
- 38.4. 添加新的 IdM ID 范围
- 38.5. IdM ID 范围中的安全性和相对标识符的角色
- 38.6. 自动检测和修复 ID 范围问题
- 38.7. 使用 Ansible 添加新的本地 IdM ID 范围
- 38.8. 删除对 AD 的信任后删除 ID 范围
- 38.9. 显示当前分配的 DNA ID 范围
- 38.10. 手动 ID 范围分配
- 38.11. 手动分配 DNA ID 范围
- 38.12. 为旧的系统兼容性启用最多 Linux 的最大限制
- 第 39 章 手动管理 subID 范围
- 39.1. 使用 IdM CLI 生成子 subID 范围
- 39.2. 使用 IdM WebUI 接口生成 subID 范围
- 39.3. 使用 IdM CLI 查看有关 IdM 用户的 subID 信息
- 39.4. 使用 getsubid 命令列出 subID 范围
- 第 40 章 在 IdM CLI 中管理主机
- 40.1. IdM 中的主机
- 40.2. 主机注册
- 40.3. 主机注册所需的用户权限
- 40.4. IdM 主机和用户的注册和身份验证:比较
- 40.5. 主机操作
- 40.6. IdM LDAP 中的主机条目
- 40.6.1. 主机条目配置属性
- 40.7. 从 IdM CLI 添加 IdM 主机条目
- 40.8. 从 IdM CLI 删除主机条目
- 40.9. 禁用和重新启用主机条目
- 40.9.1. 禁用主机
- 40.9.2. 重新启用主机
- 40.10. 委托对主机和服务的访问
- 40.10.1. 委托服务管理
- 40.10.2. 委托主机管理
- 40.10.3. 访问委托的服务
- 40.11. 其他资源
- 第 41 章 从 Web UI 添加主机条目
- 第 42 章 使用 Ansible playbook 管理主机
- 42.1. 使用 Ansible playbook 确保存在带有 FQDN 的 IdM 主机条目
- 42.2. 使用 Ansible playbook 确保存在含有 DNS 信息的 IdM 主机条目
- 42.3. 使用 Ansible playbook 确保存在带有随机密码的多个 IdM 主机条目
- 42.4. 使用 Ansible playbook 确保存在具有多个 IP 地址的 IdM 主机条目
- 42.5. 使用 Ansible playbook 确保没有 IdM 主机条目
- 第 43 章 使用 IdM CLI 管理主机组
- 43.1. IdM 中的主机组
- 43.2. 使用 CLI 查看 IdM 主机组
- 43.3. 使用 CLI 创建 IdM 主机组
- 43.4. 使用 CLI 删除 IdM 主机组
- 43.5. 使用 CLI 添加 IdM 主机组成员
- 43.6. 使用 CLI 删除 IdM 主机组成员
- 43.7. 使用 CLI 添加 IdM 主机组成员管理者
- 43.8. 使用 CLI 删除 IdM 主机组成员管理者
- 第 44 章 使用 IdM Web UI 管理主机组
- 44.1. 在 IdM Web UI 中查看主机组
- 44.2. 在 IdM Web UI 中创建主机组
- 44.3. 在 IdM Web UI 中删除主机组
- 44.4. 在 IdM Web UI 中添加主机组成员
- 44.5. 在 IdM Web UI 中删除主机组成员
- 44.6. 使用 Web UI 添加 IdM 主机组成员管理者
- 44.7. 使用 Web UI 删除 IdM 主机组成员管理者
- 第 45 章 使用 ansible playbook 管理主机组
- 第 46 章 配置基于主机的访问控制规则
- 46.1. 使用 WebUI 在 IdM 域中配置 HBAC 规则
- 46.1.1. 在 IdM WebUI 中创建 HBAC 规则
- 46.1.2. 在 IdM WebUI 中测试 HBAC 规则
- 46.1.3. 在 IdM WebUI 中禁用 HBAC 规则
- 46.2. 使用 CLI 在 IdM 域中配置 HBAC 规则
- 46.2.1. 在 IdM CLI 中创建 HBAC 规则
- 46.2.2. 在 IdM CLI 中测试 HBAC 规则
- 46.2.3. 在 IdM CLI 中禁用 HBAC 规则
- 46.3. 为自定义 HBAC 服务添加 HBAC 服务条目
- 46.3.1. 在 IdM Web UI 中为自定义 HBAC 服务添加 HBAC 服务条目
- 46.3.2. 在 IdM CLI 中为自定义 HBAC 服务添加 HBAC 服务条目
- 46.4. 添加 HBAC 服务组
- 46.4.1. 在 IdM WebUI 中添加 HBAC 服务组
- 46.4.2. 在 IdM CLI 中添加 HBAC 服务组
- 46.5. 其他资源
- 46.1. 使用 WebUI 在 IdM 域中配置 HBAC 规则
- 第 47 章 使用 CLI 配置会话记录
- 47.1. 会话记录概述和组件
- 47.2. 通过 CLI 启用并配置带有 SSSD 的会话记录
- 47.3. 回放会话记录
- 第 48 章 管理用户和主机的公共 SSH 密钥
- 48.1. 关于 SSH 密钥格式
- 48.2. 关于 IdM 和 OpenSSH
- 48.3. 生成 SSH 密钥
- 48.4. 管理用户的公共 SSH 密钥
- 48.4.1. 使用 IdM Web UI 上传用户的 SSH 密钥
- 48.4.2. 使用 IdM CLI 上传用户的 SSH 密钥
- 48.4.3. 使用 IdM Web UI 删除用户的 SSH 密钥
- 48.4.4. 使用 IdM CLI 删除用户的 SSH 密钥
- 48.5. 管理主机的公共 SSH 密钥
- 48.5.1. 使用 IdM Web UI 上传主机的 SSH 密钥
- 48.5.2. 使用 IdM CLI 上传主机的 SSH 密钥
- 48.5.3. 使用 IdM Web UI 删除主机的 SSH 密钥
- 48.5.4. 使用 IdM CLI 删除主机的 SSH 密钥
- 第 49 章 配置域名解析顺序来解析较短的 AD 用户名
- 49.1. 域解析顺序的工作方式
- 49.2. 在 IdM 服务器中设置全局域解析顺序
- 49.3. 为 IdM 服务器中的 ID 视图设置域解析顺序
- 49.4. 使用 Ansible 创建一个具有域解析顺序的 ID 视图
- 49.5. 在 IdM 客户端上在 SSSD 中设置域解析顺序
- 49.6. 其他资源
- 第 50 章 在 IdM 中使用 AD 用户主体名称启用身份验证
- 50.1. IdM 信任的 AD 林中的用户主体名称
- 50.2. 确保 AD UPN 在 IdM 中是最新的
- 50.3. 为 AD UPN 身份验证问题收集故障排除数据
- 第 51 章 启用 AD 用户管理 IdM
- 51.1. AD 用户的 ID 覆盖
- 51.2. 使用 ID 覆盖来启用 AD 用户管理 IdM
- 51.3. 验证 AD 用户是否可以在 IdM CLI 中执行正确的命令
- 51.4. 使用 Ansible 启用 AD 用户来管理 IdM
- 第 52 章 使用外部身份提供者向 IdM 进行身份验证
- 52.1. 将 IdM 连接到外部 IdP 的好处
- 52.2. IdM 如何通过外部 IdP 融合登录
- 52.3. 创建一个到外部身份提供者的引用
- 52.4. IdM 中到不同外部 IdP 的引用示例
- 52.5. 在 IdM 中管理外部身份提供者的 ipa idp-* 命令的选项
- 52.6. 管理对外部 IdP 的引用
- 52.7. 启用 IdM 用户通过外部 IdP 进行身份验证
- 52.8. 以外部 IdP 用户身份检索 IdM 票据授予票据
- 52.9. 以外部 IdP 用户身份通过 SSH 登录到 IdM 客户端
- 52.10. ipa idp-* 命令中的 --provider 选项
- 52.11. 其他资源
- 第 53 章 在 IdM 中使用受限委托
- 53.1. 身份管理中的受限委托
- 53.2. 在 web 控制台中为 SSH 登录配置智能卡验证
- 53.3. 使用 Ansible 为 web 控制台中的 SSH 登录配置智能卡验证
- 53.4. 配置 Web 控制台,以允许使用智能卡进行身份验证的用户运行 sudo,而无需要求再次进行身份验证
- 53.5. 使用 Ansible 配置 Web 控制台,允许用户使用智能卡进行身份验证的用户运行 sudo,而无需再次进行身份验证
- 53.6. 其他资源
- 第 54 章 在 IdM 中使用基于资源的受限委托
- 54.1. IdM 中基于资源的受限委托
- 54.2. 使用 RBCD 委托对服务的访问
