搜索

Linux 域身份、身份验证和策略指南

download PDF
Red Hat Enterprise Linux 7

在 Linux 环境中使用红帽身份管理

Florian Delehaye

Red Hat Customer Content Services

Marc Muehlfeld

Red Hat Customer Content Services

Filip Hanzelka

Red Hat Customer Content Services

Lucie Maňásková

Red Hat Customer Content Services

Aneta Šteflová Petrová

Red Hat Customer Content Services

Tomáš Čapek

Red Hat Customer Content Services

Ella Deon Ballard

Red Hat Customer Content Services

摘要

用户和机器的身份和策略管理是大部分企业环境的核心功能。身份管理提供了一种创建身份域的方法,允许机器注册域,并立即访问单点登录和身份验证服务所需的身份信息,以及管理授权和访问权限的策略设置。
除了本指南外,您还可以在以下指南中找到有关 Red Hat Enterprise Linux Identity Management 的其他功能和服务的文档:

系统级身份验证指南

系统级身份验证指南 记录了用于在本地系统上配置身份验证的不同应用程序和服务,包括 authconfig 实用程序、系统安全服务守护进程(SSSD)服务、可插拔验证模块(PAM)框架、Kerberos、certmonger 实用程序和单点登录(SSO)以用于应用程序。

Windows 集成指南

Windows 集成指南 文档如何使用身份管理将 Linux 域与 Microsoft Windows Active Directory (AD)集成。除其他主题外,该指南涵盖了直接和间接 AD 集成的各个方面,使用 SSSD 访问通用 Internet 文件系统(CIFS)和域系统。


部分 I. 红帽身份管理概述

这部分解释了 Red Hat Identity Management 的目的。它还提供有关 身份管理域 的基本信息,包括属于域的客户端和服务器计算机。

第 1 章 红帽身份管理简介

1.1. 红帽身份管理的目标

红帽身份管理(IdM)为在基于 Linux 的域中管理身份存储、身份验证、策略和授权策略提供集中和统一的方式。IdM 可显著降低单独管理不同服务以及在不同机器上使用不同工具的管理开销。
IdM 是一个用于中央化身份、策略和授权的软件解决方案,它支持:
  • Linux 操作系统环境的高级特性
  • 统一大型的 Linux 机器组
  • 与 Active Directory 的原生集成
IdM 创建一个基于 Linux 并由 Linux 控制的域:
  • IdM 基于现有的原生 Linux 工具和协议构建。它有自己的进程和配置,但其底层的技术已在 Linux 系统中广泛使用,并被 Linux 管理员信任。
  • IdM 服务器和客户端是 Red Hat Enterprise Linux 机器。但是,即使 IdM 不支持 Windows 客户端,它也允许与 Active Directory 环境集成。
    注意
    本指南描述了仅在 Linux 环境中使用 IdM。有关与 Active Directory 集成的更多信息,请参阅《 Windows 集成指南 》。
    有关 Samba 套件的详情,允许将 Linux 计算机集成到 Active Directory 环境中,请参阅 Windows 集成指南中的 使用 Samba 进行 Active Directory 集成 章节。如果您使用 Samba 作为服务器,请注意,将服务器集成到 IdM 域中,并验证连接到 IdM 或可信 Active Directory 域的用户。

1.1.1. IdM 的优势分支示例

使用几个 Linux 服务器管理身份和策略
没有 IdM:每个服务器都会单独管理。所有密码都保存在本地机器上。IT 管理员管理每台计算机上的用户,单独设置身份验证和授权策略,并且维护本地密码。
使用 IdM:IT 管理员可以:
  • 在一个中央位置管理用户的身份:IdM 服务器
  • 同时对多个机器统一应用策略
  • 使用基于主机的访问控制、委托和其他规则为用户设置不同的访问级别
  • 集中管理权限升级规则
  • 定义如何挂载主目录
企业单点登录
没有 IdM:用户登录系统,每次访问服务或应用时都会提示输入密码。这些密码可能有所不同,用户必须记住使用哪个凭证。
使用 IdM:用户登录系统后,他们可以访问多个服务和应用程序,而无需重复请求其凭据。它包括:
  • 提高可用性
  • 降低以不安全方式写入或保存密码的安全风险
  • 提高用户的生产率
管理一个混合了 Linux 和 Windows 的环境
没有 IdM:Windows 系统在 Active Directory 林中管理,但开发、生产和其他团队具有许多 Linux 系统。Linux 系统不包含在 Active Directory 环境中。
使用 IdM:IT 管理员可以:
  • 使用原生 Linux 工具管理 Linux 系统
  • 将 Linux 系统与 Windows 系统集成,从而保留集中式用户存储
  • 轻松扩展 Linux 基础
  • 单独管理 Linux 和 Active Directory 机器,使 Linux 和 Windows 管理员能够直接控制其环境

1.1.2. 将身份管理与标准 LDAP 目录进行比较

标准 LDAP 目录(如红帽目录服务器)是一个通用用途目录:可以自定义,以适应广泛的用例。
  • Schema:一种可针对大量条目(如用户、计算机、网络实体、物理设备或设施)自定义的灵活方案。
  • 通常用作:用于存储其他应用的数据的后端目录,如在 Internet 上提供服务的业务应用程序。
身份管理(IdM)具有特定目的:管理身份以及与这些身份相关的身份验证和授权策略。
  • Schema:定义一组与其目的相关的特定条目的特定架构,如用于用户身份或机器身份的条目。
  • 通常,身份和验证服务器用于在企业或项目边界内管理身份。
红帽目录服务器和 IdM 的底层目录服务器技术是相同的。但是,IdM 被优化来管理身份。这限制了其一般的可扩展性,但也带来了一些好处:更简单的配置、更好的资源管理自动化和更高的管理身份的效率。
其它资源

1.2. Identity Management Domain

身份管理(IdM)域由共享相同配置、策略和身份存储的一组计算机组成。共享属性允许域中的计算机互相了解并共同操作。
从 IdM 的角度来看,域包括以下类型的机器:
  • 作为域控制器的 IdM 服务器
  • IdM 客户端,它们注册到服务器中
IdM 服务器也是注册到其自身的 IdM 客户端:服务器计算机提供与客户端相同的功能。
IdM 支持 Red Hat Enterprise Linux 机器作为 IdM 服务器和客户端。
注意
本指南描述了在 Linux 环境中使用 IdM。有关与 Active Directory 集成的更多信息,请参阅《 Windows 集成指南 》。

1.2.1. 身份管理服务器

IdM 服务器充当身份和策略信息的中央存储库。它们也托管域成员使用的服务。IdM 提供了一组管理工具来集中管理所有 IdM 关联服务:IdM Web UI 和命令行工具。
有关安装 IdM 服务器的详情请参考 第 2 章 安装和卸载身份管理服务器
为了支持冗余和负载平衡,数据和配置可以从 IdM 服务器复制到另一个 IdM 服务器:初始服务器 的副本。您可以配置服务器及其副本,以便为客户端提供不同的服务。有关 IdM 副本的详情,请参考 第 4 章 安装和卸载身份管理副本
1.2.1.1. IdM 服务器托管的服务
以下大多数服务并没严格要求安装到 IdM 服务器上。例如,可以在 IdM 域外的外部服务器上安装证书认证机构(CA)、DNS 服务器或网络时间协议(NTP)服务器等服务。
Kerberos: krb5kdckadmin
IdM 使用 Kerberos 协议来支持单点登录。使用 Kerberos ,用户只需提供一次正确的用户名和密码,就可以访问 IdM 服务,而系统不需要再次提示输入凭证。
  • Kerberos 分为两个部分:
    • krb5kdc 服务是 Kerberos 身份验证服务和密钥分发中心(KDC)守护进程。
    • kadmin 服务是 Kerberos 数据库管理程序。
    有关 Kerberos 的工作原理,请参阅 系统级身份验证指南中的 使用 Kerberos
  • 有关如何在 IdM 中使用 Kerberos 进行身份验证的详情请参考 第 5.2 节 “使用 Kerberos 登录 IdM”
  • 有关在 IdM 中管理 Kerberos 的详情请参考 第 29 章 管理 Kerberos 域
LDAP 目录服务器: dirsrv
IdM 内部 LDAP 目录服务器实例 存储所有 IdM 信息,如与 Kerberos、用户帐户、主机条目、服务、策略等相关的信息。
LDAP 目录服务器实例基于 与红帽目录服务器 相同的技术。但是,它被调优为特定于 IdM 的任务。
注意
本指南将这个组件称为 Directory Server。
证书颁发机构: pki-tomcatd
集成的 证书颁发机构(CA) 基于与 Red Hat Certificate System 相同的技术。pki 是用于访问证书系统服务的命令行界面。
注意
本指南在处理实施过程和证书认证机构时将此组件指代为证书系统,在处理实施提供的服务时作为认证机构。
有关红帽认证系统(独立红帽产品)的信息,请参阅红帽认证系统的 产品文档。
域名系统(DNS): 命名
IdM 使用 DNS 进行动态服务发现。IdM 客户端安装工具可使用 DNS 的信息来自动配置客户端机器。客户端注册到 IdM 域后,它使用 DNS 来定位域中的 IdM 服务器和服务。
Red Hat Enterprise Linux 中的 DNS ( 域名系统)协议的 BIND (Berkeley 互联网 名称域)实现包括 命名的 DNS 服务器。named-pkcs11 是构建了对 PKCS the 加密标准的原生支持的 BIND DNS 服务器版本。
网络时间协议: ntpd
许多服务要求服务器和客户端在特定差异内具有相同的系统时间。例如,Kerberos 票据使用时间戳来确定其有效期并防止重播攻击。如果服务器和客户端之间的时间偏移超出允许范围,Kerberos 票据将无效。
默认情况下,IdM 使用 网络时间协议(NTP) 通过 ntpd 服务通过网络同步时钟。使用 NTP 时,中央服务器充当权威时钟,客户端会同步时间以匹配服务器时钟。IdM 服务器在服务器安装过程中配置为 IdM 域的 NTP 服务器。
注意
在虚拟机上安装的 IdM 服务器中运行 NTP 服务器可能会导致某些环境中的时间同步不准确。为避免潜在的问题,不要在虚拟机上安装的 IdM 服务器中运行 NTP。有关虚拟机上 NTP 服务器可靠性的更多信息,请参阅 此知识库解决方案
Apache HTTP 服务器: httpd
Apache HTTP Web 服务器 提供了 IdM Web UI,还管理证书颁发机构和其他 IdM 服务之间的通信。
Samba/ Winbind: smbwinbind
Samba 在红帽企业 Linux 中实施服务器消息块(SMB)协议,也称为通用 Internet 文件系统(CIFS)协议。通过 smb 服务,SMB 协议可让您访问服务器上的资源,如文件共享和共享打印机。如果您使用 Active Directory(AD)环境配置了信任,Winbind 服务将管理 IdM 服务器和 AD 服务器之间的通信。
  • 如需更多信息,请参阅 系统管理员指南中的 Samba
  • 如需更多信息,请参阅 系统级身份验证指南中的 Winbind
一次性密码(OTP)身份验证: ipa-otpd
一次性密码(OTP) 是仅由一个会话的身份验证令牌生成的密码,作为双因素身份验证的一部分。OTP 身份验证在 Red Hat Enterprise Linux 中是通过 ipa-otpd 服务实现的。
custodia: ipa-custodia
custodia 是 Secrets 服务提供商,它存储和共享对密码、密钥、令牌和证书等机密资料的访问。
OpenDNSSEC: ipa-dnskeysyncd
OpenDNSSEC 是一个 DNS 管理器,自动化了跟踪 DNS 安全扩展(DNSSEC)密钥和区域签名的过程。ipa-dnskeysyncd servuce 管理 IdM 目录服务器和 OpenDNSSEC 之间的同步。

图 1.1. 身份管理服务器:统一服务

身份管理服务器:统一服务

1.2.2. 身份管理客户端

IdM 客户端是配置为在 IdM 域中运行的机器。它们与 IdM 服务器交互以访问域资源。例如,它们属于服务器上配置的 Kerberos 域,接收服务器发布的证书和票据,并使用其他集中式服务进行身份验证和授权。
IdM 客户端不需要专用的客户端软件作为域的一部分进行交互。它只需要正确配置某些服务和库,如 Kerberos 或 DNS。此配置指示客户端机器使用 IdM 服务。
有关安装 IdM 客户端的详情请参考 第 3 章 安装和卸载身份管理客户端
1.2.2.1. IdM 客户端托管的服务
系统安全服务守护进程: sssd
系统安全服务守护进程(SSSD) 是管理用户身份验证和缓存凭证的客户端应用。
缓存可让本地系统在 IdM 服务器不可用或客户端离线时能够继续正常的身份验证操作。
如需更多信息,请参阅 系统级身份验证 指南中的 配置 SSSD。SSSD 还支持 Windows Active Directory(AD)。有关在 AD 中使用 SSSD 的更多信息,请参阅 Windows 集成指南中的Active Directory 用作 SSSD 的身份提供程序
certmonger
certmonger 服务监控并更新客户端上的证书。它可以为系统上的服务请求新的证书。
如需更多信息,请参阅 系统级身份验证指南中的 使用证书

图 1.2. IdM 服务间的交互

IdM 服务间的交互

部分 II. 安装身份管理

本节解释了如何规划 身份管理 部署以及如何安装 身份管理服务器、客户端和副本。

第 2 章 安装和卸载身份管理服务器

身份管理 (IdM) 服务器 是一个域控制器:它定义和管理 IdM 域。要设置 IdM 服务器,您必须:
  1. 安装所需的软件包
  2. 使用设置脚本配置机器
红帽强烈建议在您的域中设置多个域控制器,以实现负载平衡和冗余。这些额外的服务器是初始 master IdM 服务器 的副本
本章论述了安装第一个初始 IdM 服务器。有关从初始服务器安装副本的详情请参考 第 4 章 安装和卸载身份管理副本

2.1. 安装服务器的先决条件

2.1.1. 最低硬件要求

要运行身份管理(IdM),服务器至少需要以下硬件配置:
  • 1(虚拟)CPU 内核
  • 2 GB RAM
    即使您可以安装较少的 RAM 的 IdM,某些操作(如更新 IdM)至少需要 4 GB RAM。
  • 10 GB 硬盘
重要
根据数据库中存储的数据量,IdM 需要更多资源,特别是更多 RAM。详情请查看 第 2.1.2 节 “硬件建议”。所需的硬件资源还依赖于其他因素,如服务器的生产工作负载或者配置了与 Active Directory 的信任。

2.1.2. 硬件建议

对于性能调整,RAM 是最重要的硬件。要确定您需要的 RAM 量,请考虑以下建议:
  • 对于 10,000 用户和 100 组:至少 3 GB RAM 和 1 GB 交换空间
  • 对于 100,000 个用户和 50,000 个组:至少 16 GB RAM 和 4 GB swap 空间
注意
基本用户条目或具有证书的简单主机条目的大小约为 5 - 10 KiB。
对于较大的部署,增加 RAM 比增加磁盘空间更为有效,因为许多数据都存储在缓存中。
要提高性能,您可以调优底层目录服务器以提高性能。详情请查看 红帽目录服务器性能调优指南

2.1.3. 系统要求

Red Hat Enterprise Linux 7 支持身份管理。在干净的系统中安装 IdM 服务器,而无需为 DNS、Kerberos 或 Directory Server 等服务配置任何自定义配置。
重要
出于性能和稳定性的原因,红帽建议您不要在 IdM 服务器上安装其他应用程序或服务。例如,IdM 服务器可能会对系统完成,特别是当 LDAP 对象的数量很高时。另外,IdM 会在系统中集成,如果第三方应用程序更改了 IdM 依赖于的配置文件,IdM 可能会中断。
IdM 服务器安装覆盖了系统文件来设置 IdM 域。IdM 将原始系统文件备份到 /var/lib/ipa/sysrestore/
名称服务缓存守护进程(NSCD)要求
红帽建议在身份管理机器上禁用 NSCD。另外,如果没有禁用 NSCD,则只为 SSSD 不缓存的映射启用 NSCD。
NSCD 和 SSSD 服务都执行缓存,当系统同时同时使用这两个服务时,可能会出现问题。有关如何避免 NSCD 和 SSSD 之间冲突的信息,请参阅 系统级身份验证指南
必须在系统中启用 IPv6
IdM 服务器必须在内核中启用 IPv6 协议。请注意,Red Hat Enterprise Linux 7 系统中默认启用 IPv6。
注意
IdM 不需要在您要注册为客户端的主机的内核中启用 IPv6 协议。例如,如果您的内部网络仅使用 IPv4 协议,您可以将系统安全服务守护进程(SSSD)配置为仅使用 IPv4 与 IdM 服务器通信。您可以将以下行插入到 /etc/sssd/sssd.conf 文件的 [domain/_NAME_] 部分中:
lookup_family_order = ipv4_only
有关 lookup_family_order 的更多信息,请参阅 sssd.conf (5) 手册页。

2.1.4. 在 FIPS 环境中安装服务器的先决条件

在使用 Red Hat Enterprise Linux 7.4 及更新的版本设置的环境中:
  • 您可以在启用了联邦信息处理标准(FIPS)模式的系统中配置新的 IdM 服务器或副本。安装脚本自动检测启用了 FIPS 的系统,并在没有管理员干预的情况下配置 IdM。
    要在操作系统中启用 FIPS,请参阅 安全指南 中的启用 FIPS 模式
    重要
    您不能:
    • 在之前禁用 FIPS 模式的现有 IdM 服务器上启用 FIPS 模式。
    • 当使用禁用 FIPS 模式的现有 IdM 服务器时,以 FIPS 模式安装副本。
在使用 Red Hat Enterprise Linux 7.3 及更早版本设置的环境中:
  • IdM 不支持 FIPS 模式。在安装 IdM 服务器或副本前禁用您的系统 FIPS,并在安装后不要启用它。
有关 FIPS 模式的详情,请参阅 安全指南 中的 联邦信息处理标准(FIPS )。

2.1.5. 主机名和 DNS 配置

警告
请非常小心,并确保:
  • 您有一个经过测试和功能的 DNS 服务可用
  • 服务配置正确
此要求适用于具有集成 DNS 服务的 IdM 服务器以及在没有 DNS 的情况下安装的 IdM 服务器。DNS 记录对于几乎所有 IdM 域功能至关重要,包括运行 LDAP 目录服务、Kerberos 和 Active Directory 集成。
请注意,在安装后无法更改主 DNS 域和 Kerberos 域。
不要使用单标签域名,例如 .company : IdM 域必须由一个或多个子域和一个顶级域组成,如 example.comcompany.example.com
服务器主机必须正确配置 DNS,无论 DNS 服务器是在 IdM 中集成还是外部托管。
身份管理需要将单独的 DNS 域用于服务记录。为了避免 DNS 级别( 主 IdM DNS 域 )冲突,名称为 IdM Kerberos 名称小写版本的 DNS 域无法与其他系统(如其它 IdM 或 AD 域)共享
主 IdM DNS 域必须包含其自身用于标准 IdM 服务的 SRV 记录。所需的记录有:
  • _kerberos._tcp.domain_name 和 _kerberos._ udp.domain_name的 SRV 记录
  • _ldap._tcp.domain_name的 SRV 记录
  • _kerberos.domain_name的 TXT 记录
当注册的客户端通过 ipa 命令行工具查找 IdM 提供的服务或介质服务时,它会在 /etc/ipa/default.conf 文件中查找由 xmlrpc_uri 参数指定的服务器。如果需要,它还会查找同一文件中域参数中提供的 IdM DNS 域名,并查询该域的 _ldap._tcp.domain_name SRV 记录,以标识正在查找的服务器。如果 /etc/ipa/default.conf 文件中没有给出的域,客户端仅联系文件的 xmlrpc_uri 参数中设置的服务器。
请注意,IdM 客户端和服务器的主机名不需要是主 DNS 域的一部分。但是,在使用 Active Directory(AD)的信任环境中,IdM 服务器的主机名必须是 IdM 拥有的域(与 IdM 域关联的域),而不是 AD 拥有的域(与可信 AD 域关联的域)。从信任的角度来看,此关联通过 Realm 域进行管理
有关使用 Active Directory DNS 域的主机名配置用户访问 IdM 客户端的详情,请参考 Windows 集成指南中的 Active Directory DNS 域中的 IdM 客户端
验证服务器主机名
主机名必须是完全限定域名,如 server.example.com
重要
不要使用单标签域名,例如 .company:IdM 域必须由一个或多个子域和一个顶层域组成,如 example.com 或 company.example.com。
完全限定域名必须满足以下条件:
  • 它是一个有效的 DNS 名称,即只允许数字、字母字符和连字符(-)。主机名中的其他字符(如下划线(_))会导致 DNS 失败。
  • 都是小写。不允许使用大写字母。
  • 完全限定域名不能解析到环回地址。它必须解析到计算机的公共 IP 地址,而不是 127.0.0.1
有关其他推荐的命名实践,请参阅 Red Hat Enterprise Linux 安全指南中的 推荐命名实践
要验证机器的主机名,请使用 hostname 工具:
[root@server ~]# hostname
server.example.com
hostname 的输出不能是 localhostlocalhost6
验证转发和反向 DNS 配置
  1. 获取服务器的 IP 地址。ip addr show 命令显示 IPv4 和 IPv6 地址:
    • IPv4 地址显示在以 inet 开头的行上。在以下示例中,配置的 IPv4 地址为 192.0.2.1
    • IPv6 地址显示在以 inet6 开头的行中。只有范围为 global 的 IPv6 地址与此流程相关。在以下示例中,返回的 IPv6 地址为 2001:DB8::1111
    [root@server ~]# ip addr show
    ...
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    	link/ether 00:1a:4a:10:4e:33 brd ff:ff:ff:ff:ff:ff
    	inet 192.0.2.1/24 brd 192.0.2.255 scope global dynamic eth0
    		valid_lft 106694sec preferred_lft 106694sec
    	inet6 2001:DB8::1111/32 scope global dynamic
     		valid_lft 2591521sec preferred_lft 604321sec
    	inet6 fe80::56ee:75ff:fe2b:def6/64 scope link
    	       valid_lft forever preferred_lft forever
    
  2. 使用 dig 工具并添加主机名,验证转发 DNS 配置。
    1. 运行 dig +short server.example.com A 命令。返回的 IPv4 地址必须与 ip addr show 返回的 IP 地址匹配:
      [root@server ~]# dig +short server.example.com A
      192.0.2.1
      
    2. 运行 dig +short server.example.com AAAA 命令。如果命令返回地址,它必须与 ip addr show 返回的 IPv6 地址匹配:
      [root@server ~]# dig +short server.example.com AAAA
      2001:DB8::1111
      
      注意
      如果没有为 AAAA 记录返回任何输出,它不会指出配置不正确;没有输出仅表示服务器计算机的 DNS 中未配置 IPv6 地址。如果您不打算在网络中使用 IPv6 协议,则可以继续进行安装。
  3. 使用 dig 工具并添加 IP 地址,验证反向 DNS 配置(PTR 记录)。
    1. 运行 dig +short -x IPv4 address 命令。服务器主机名必须显示在命令输出中。例如:
      [root@server ~]# dig +short -x 192.0.2.1
      server.example.com
      
    2. 如果上一步中的 dig +short -x server.example.com AAAA 命令返回 IPv6 地址,则使用 dig 查询 IPv6 地址。同样,必须在命令输出中显示服务器主机名。例如:
      [root@server ~]# dig +short -x 2001:DB8::1111
      server.example.com
      
      注意
      如果上一步中的 dig +short server.example.com AAAA 没有显示任何 IPv6 地址,查询 AAAA 记录不会输出任何内容。在这种情况下,这是正常的行为,不代表配置不正确。
    如果显示不同的主机名或主机名,即使上一步中的 dig +short server.example.com 返回 IP 地址,这表示反向 DNS 配置不正确。
验证 DNS Forwarders 的标准合规性
当使用集成的 DNS 配置 IdM 时,建议使用 DNS 安全扩展 (DNSSEC)记录验证。通过验证来自其他服务器的已签名 DNS 记录,您可以防止 IdM 安装被欺骗地址。但是,DNSSEC 验证不是成功安装 IdM 的硬要求。
IdM 安装程序默认启用 DNSSEC 记录验证。要成功进行 DNSSEC 验证,务必要让 DNSSEC 正确配置的转发器已正确配置。在安装过程中,IdM 会检查全局转发器,如果转发器不支持 DNSSEC,则转发器上将禁用 DNSSEC 验证。
要验证您要与 IdM DNS 服务器使用的所有 DNS 转发器是否符合 DNS(EDNS0)和 DNSSEC 标准扩展机制
$ dig +dnssec @IP_address_of_the_DNS_forwarder . SOA
命令显示的预期输出包含以下信息:
  • 状态:NOERROR
  • 标记: ra
  • EDNS 标志: do
  • RRSIG 记录必须在 ANSWER 部分中存在
如果输出中缺少其中任何一个项目,请检查 DNS 转发器的文档,并验证是否支持并启用了 EDNS0 和 DNSSEC。在最新版本的 BIND 服务器中,dnssec-enable yes; 选项必须在 /etc/named.conf 文件中设置。
例如,预期的输出如下:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48655
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096

;; ANSWER SECTION:
. 31679 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2015100701 1800 900 604800 86400
. 31679 IN RRSIG SOA 8 0 86400 20151017170000 20151007160000 62530 . GNVz7SQs [...]
/etc/hosts 文件
重要
不要手动修改 /etc/hosts 文件。如果修改了 /etc/hosts,请确保其内容符合以下规则:
以下是正确配置了 /etc/hosts 文件的示例。它正确列出主机的 IPv4 和 IPv6 localhost 条目,后跟 IdM 服务器 IP 地址和主机名作为第一个条目。请注意,IdM 服务器主机名不能是 localhost 条目的一部分。
127.0.0.1	localhost.localdomain	localhost
::1		localhost6.localdomain6	localhost6
192.0.2.1	server.example.com	server
2001:DB8::1111	server.example.com	server

2.1.6. 端口要求

IdM 使用多个端口与其服务通信。这些端口必须处于打开状态,且可供 IdM 使用。它们不能被其他服务使用或受防火墙阻止。
所需端口列表
表 2.1. 身份管理端口
服务 端口 协议
HTTP/HTTPS 80, 443 TCP
LDAP/LDAPS 389, 636 TCP
Kerberos 88, 464 TCP 和 UDP
DNS 53 TCP 和 UDP
NTP 123 UDP
注意
不要担心 IdM 使用端口 80 和 389。
  • 端口 80(HTTP)用于提供在线证书状态协议(OCSP)响应和证书撤销列表(CRL)。二者均经过数字签名,因此可防止中间人攻击。
  • 端口 389(LDAP)使用 STARTTLS 和 GSSAPI 进行加密。
此外,IdM 可以侦听端口 8080,某些安装中也侦听端口 8443 和 749。但是,这三个端口仅在内部使用:尽管 IdM 保持开放,但不需要从外部访问它们。建议您不要打开端口 8080、8443 和 749,而是让端口被防火墙阻止。
firewalld 服务列表
表 2.2. firewalld 服务
服务名称 详情请查看:
freeipa-ldap /usr/lib/firewalld/services/freeipa-ldap.xml
freeipa-ldaps /usr/lib/firewalld/services/freeipa-ldaps.xml
dns /usr/lib/firewalld/services/dns.xml
打开所需端口
  1. 确保 firewalld 服务正在运行。
    • 查看 firewalld 当前是否正在运行:
      # systemctl status firewalld.service
    • 启动 firewalld 并将其配置为在系统引导时自动启动:
      # systemctl start firewalld.service
      # systemctl enable firewalld.service
  2. 使用 firewall-cmd 工具打开所需的端口。选择以下选项之一:
    1. 使用 firewall-cmd --add-port 命令在防火墙中添加各个端口。例如,要在默认区中打开端口:
      # firewall-cmd --permanent --add-port={80/tcp,443/tcp,list_of_ports}
    2. 使用 firewall-cmd --add-service 命令在防火墙中添加 firewalld 服务。例如,要在默认区中打开端口:
      # firewall-cmd --permanent --add-service={freeipa-ldap,list_of_services}
    有关使用 firewall-cmd 在系统上打开端口的详情,请参考 安全指南中的使用 CLI 或 firewall-cmd(1) man page 中的 Runtime 和 Permanent Configuration 中的修改设置
  3. 重新载入 firewall-cmd 配置以确保修改立即生效:
    # firewall-cmd --reload
    请注意,在生产环境的系统上重新载入 firewalld 可能会导致 DNS 连接超时。另请参阅《 安全指南》的使用 CLI 修改运行时和永久 配置中 的设置。如果需要,为了避免超时的风险并在运行的系统上永久保留修改,请使用 firewall-cmd 命令的 --runtime-to-permanent 选项,例如:
    # firewall-cmd --runtime-to-permanent --add-port={80/tcp,443/tcp,389/tcp,636/tcp,88/tcp,88/udp,464/tcp,464/udp,53/tcp,53/udp,123/udp}
  4. 可选。要验证端口现在是否可用,请使用 nctelnetnmap 工具连接到端口或运行端口扫描。
注意
请注意,您还必须为传入和传出流量打开基于网络的防火墙。

2.2. 安装 IdM 服务器所需的软件包

安装没有集成 DNS 服务的服务器所需的软件包:
# yum install ipa-server
安装具有集成 DNS 服务的服务器所需的软件包:
# yum install ipa-server ipa-server-dns
注意
要确定 DNS 是否适合您的用例,请参阅 第 2.3.1 节 “确定使用集成 DNS”
ipa-server 软件包会自动安装其他必需的软件包作为依赖项,例如:
  • 389-DS-base 用于目录服务器 LDAP 服务
  • Kerberos 服务的 krb5-server 软件包
  • 各种特定于 IdM 的工具

2.3. 安装 IdM 服务器:简介

注意
以下部分中的安装过程和示例不是相互排斥的:您可以组合它们来实现所需的结果。例如,您可以安装具有集成 DNS 的服务器,并使用外部托管的 root CA 安装。
ipa-server-install 工具安装和配置 IdM 服务器。
在安装服务器前,请查看以下部分:
ipa-server-install 工具提供了一个非互动安装模式,它允许自动和无人值守的服务器设置。详情请查看 第 2.3.7 节 “非临时安装服务器”
ipa-server-install 安装脚本在 /var/log/ipaserver-install.log 中创建一个日志文件。如果安装失败,日志可帮助您辨别问题。

2.3.1. 确定使用集成 DNS

IdM 支持安装具有集成 DNS 或没有集成 DNS 的服务器。
带有集成 DNS 服务的 IdM 服务器
IdM 提供的集成 DNS 服务器并非旨在用作通用 DNS 服务器。它只支持与 IdM 部署和维护相关的功能。它不支持一些高级 DNS 功能。
红帽强烈建议 IdM 集成的 DNS 在 IdM 部署中的基本用法:当 IdM 服务器也管理 DNS 时,DNS 和原生 IdM 工具之间的紧密集成启用了自动化一些 DNS 记录管理。
请注意,即使 IdM 服务器被用作主 DNS 服务器,其他外部 DNS 服务器仍然可以用作从属服务器。
例如,如果您的环境已在使用其他 DNS 服务器,如 Active Directory 集成的 DNS 服务器,则只能将 IdM 主域委派给 IdM 集成的 DNS。您不需要将 DNS 区域迁移到 IdM 集成的 DNS。
注意
如果您需要在 Subject 备用名称 (SAN) 扩展中使用 IP 地址的 IdM 客户端发布证书,则必须使用 IdM 集成 DNS 服务。
要安装具有集成 DNS 的服务器,请参阅 第 2.3.3 节 “使用集成的 DNS 安装服务器”
没有集成 DNS 服务的 IdM 服务器
外部 DNS 服务器用于提供 DNS 服务。考虑在这些情况下在没有 DNS 的情况下安装 IdM 服务器:
  • 如果您需要超出 IdM DNS 范围的高级 DNS 功能
  • 在具有良好 DNS 基础架构的环境中,允许您使用外部 DNS 服务器
要在没有集成 DNS 的情况下安装服务器,请参阅 第 2.3.4 节 “安装没有集成的 DNS 的服务器”
重要
请确定您的系统满足 第 2.1.5 节 “主机名和 DNS 配置” 中描述的 DNS 要求。
集成或外部 DNS 的维护要求
使用集成的 DNS 服务器时,大部分 DNS 记录维护都是自动化的。您只需要:
  • 设置从父域到 IdM 服务器的正确委托
    例如,如果 IdM 域名是 ipa.example.com,则必须从 example.com 域正确委托。
    注意
    您可以使用以下命令验证委托:
    # dig @IP_address +norecurse +short ipa.example.com. NS
    ip_address 是管理 example.com DNS 域的服务器的 IP 地址。如果委派正确,命令列出安装了 DNS 服务器的 IdM 服务器。
在使用外部 DNS 服务器时,您必须:
  • 在 DNS 服务器中手动创建新域
  • 使用 IdM 安装程序生成的来自区域文件中的记录手动填充新域
  • 在安装或删除副本后手动更新记录,以及在服务配置中的任何更改后手动更新记录,例如在配置了 Active Directory 信任后
防止 DNS 简化攻击
IdM 集成的 DNS 服务器的默认配置允许所有客户端向 DNS 服务器发出递归查询。如果您的服务器部署到具有不受信任的客户端的网络中,请更改服务器配置以仅限制对授权客户端的递归。[1]
要确保只允许授权的客户端发出递归查询,请将适当的访问控制列表(ACL)语句添加到服务器上的 /etc/named.conf 文件中。例如:
acl authorized { 192.0.2.0/24; 198.51.100.0/24; };
options {
  allow-query { any; };
  allow-recursion { authorized; };
};

2.3.2. 确定要使用的 CA 配置

IdM 支持安装带有集成 IdM 证书颁发机构(CA)或没有 CA 的服务器。
带有集成 IdM CA 的服务器
这是适合大多数部署的默认配置。证书系统使用 CA 签名证书 在 IdM 域中创建和签署证书。
警告
红帽强烈建议将 CA 服务安装到多台服务器中。有关安装包括 CA 服务的初始服务器副本的详情请参考 第 4.5.4 节 “使用 CA 安装副本”
如果您只在一个服务器中安装 CA,则在 CA 服务器失败时可能会丢失 CA 配置且无法恢复。详情请查看 第 B.2.6 节 “恢复丢失的 CA 服务器”
IdM CA 签名证书可以是 root CA,也称为 自签名,或者可由外部 CA 签名。
IdM CA 是 root CA
这是默认配置。
外部 CA 是 root CA
IdM CA 属于外部 CA。但是,IdM 域的所有证书仍由证书系统实例颁发。
外部 CA 可以是企业 CA 或第三方 CA,如 Verisign 或 Thawte。外部 CA 可以是 root CA 或从属 CA。IdM 域中发布的证书可能会受到外部 root CA 或中间 CA 证书为属性(如有效周期或可发布证书的域)设置的限制。
要使用外部托管 root CA 安装服务器,请参阅 第 2.3.5 节 “使用外部 CA 作为 Root CA 安装服务器”
没有 CA 的服务器
当基础架构中的限制不允许使用服务器安装证书服务时,此配置选项适用于非常罕见的情况。
安装前,您必须从第三方颁发机构请求这些证书:
  • LDAP 服务器证书和私钥
  • Apache 服务器证书和私钥
  • 发布 LDAP 和 Apache 服务器证书的 CA 完整 CA 证书链
警告
在没有集成 IdM CA 的情况下管理证书会带来重大维护负担。例如,您必须手动管理 IdM 服务器的 Apache Web 服务器和 LDAP 服务器证书。这包括:
  • 创建和上传证书.
  • 监控证书的过期日期.请注意,如果您在没有集成 CA 的情况下安装了 IdM,certmonger 服务不会跟踪证书。
  • 在证书过期前续订证书以避免中断.
要安装没有集成 CA 的服务器,请参阅 第 2.3.6 节 “在没有 CA 的情况下安装”
注意
如果您在没有 CA 的情况下安装 IdM 域,您可以随后安装 CA 服务。要将 CA 安装到现有的 IdM 域,请参阅 第 26.8 节 “在现有 IdM 域中安装 CA”

2.3.3. 使用集成的 DNS 安装服务器

注意
如果您不确定适合哪些 DNS 或 CA 配置,请参阅 第 2.3.1 节 “确定使用集成 DNS”第 2.3.2 节 “确定要使用的 CA 配置”
要安装具有集成 DNS 的服务器,请在安装过程中提供以下信息:
DNS forwarders
支持以下 DNS 转发器设置:
  • 一个或多个转发器(非互动安装中的 --forwarder 选项)
  • 没有转发器(非互动安装中的 --no-forwarders 选项)
如果您不确定是否使用 DNS 转发,请参阅 第 33.6 节 “管理 DNS 转发”
反向 DNS 区域
支持以下反向 DNS 区域设置:
  • 自动检测需要在 IdM DNS 中创建反向区域(互动安装中的默认设置,非交互式安装中的 --auto-reverse 选项)
  • 没有反向区域自动检测(互动安装中的 --no-reverse 选项)
请注意,如果设置了 -- auto-reverse 选项,则 --allow-zone- overlap 选项将被忽略。使用选项的组合:
$ ipa-server-install --auto-reverse --allow-zone-overlap
因此,不会 创建可与现有 DNS 区域重叠的反向区域,例如在另一个 DNS 服务器上。
对于非交互式安装,还要添加 --setup-dns 选项。

例 2.1. 使用集成的 DNS 安装服务器

这个过程安装服务器:
  • 带有集成的 DNS
  • 集成 IdM CA 作为 root CA,这是默认 CA 配置
  1. 运行 ipa-server-install 工具。
    # ipa-server-install
  2. 此脚本提示配置集成的 DNS 服务。输入 yes
    Do you want to configure integrated DNS (BIND)? [no]: yes
  3. 该脚本会提示输入几个必要的设置。
    • 要接受括号中的默认值,请按 Enter 键。
    • 要提供与建议的默认值不同的值,请输入所需的值。
    Server host name [server.example.com]:
    Please confirm the domain name [example.com]:
    Please provide a realm name [EXAMPLE.COM]:
    警告
    红帽强烈建议 Kerberos 域名与主 DNS 域名相同,且所有字母都使用大写。例如,如果主 DNS 域是 ipa.example.com,请将 IPA.EXAMPLE.COM 用于 Kerberos 域名。
    不同的命名实践将阻止您使用 Active Directory 信任,并可能导致其他负面影响。
  4. 输入目录服务器超级用户 cn=Directory Manager 以及 admin IdM 系统用户帐户的密码。
    Directory Manager password:
    IPA admin password:
  5. 此脚本提示 DNS 转发器。
    Do you want to configure DNS forwarders? [yes]:
    • 要配置 DNS 正向解析器,请输入 yes,然后按照命令行中的说明进行操作。
      安装过程会将正向解析器 IP 地址添加到安装的 IdM 服务器的 /etc/named.conf 文件中。
      • 有关转发策略默认设置,请查看 ipa-dns-install(1) man page 中的 --forward-policy 描述。
      • 详情请查看 “forward 策略”一节
    • 如果您不想使用 DNS 正向解析,请输入 no
  6. 脚本会提示检查是否需要配置与服务器关联的 IP 地址的任何 DNS 反向(PTR)记录。
    Do you want to search for missing reverse zones? [yes]:
    如果您运行搜索并发现丢失了反向区,脚本会询问您是否创建反向区以及 PTR 记录。
    Do you want to create reverse zone for IP 192.0.2.1 [yes]:
    Please specify the reverse zone name [2.0.192.in-addr.arpa.]:
    Using reverse zone(s) 2.0.192.in-addr.arpa.
    注意
    使用 IdM 管理反向区是可选的。您可以改为使用外部 DNS 服务来实现这一目的。
  7. 输入 yes 以确认服务器配置。
    Continue to configure the system with these values? [no]: yes
  8. 安装脚本现在配置服务器。等待操作完成。
  9. 将父域中的 DNS 委托程序添加到 IdM DNS 域。例如,如果 IdM DNS 域是 ipa.example.com,请在 example.com 父域中添加一个名称服务器(NS)记录。
    重要
    每次安装 IdM DNS 服务器时,必须重复此步骤。
该脚本建议您备份 CA 证书并确保所需的网络端口已打开。有关 IdM 端口要求以及如何打开这些端口的说明的详情,请参考 第 2.1.6 节 “端口要求”
测试新服务器:
  1. 使用 admin 凭据向 Kerberos 域进行身份验证。这将验证 管理员 是否已正确配置,并且 Kerberos 域可以访问。
    # kinit admin
  2. 运行一个命令,如 ipa user-find。在新服务器上,命令会输出唯一配置的用户: admin
    # ipa user-find admin
    --------------
    1 user matched
    --------------
    User login: admin 
    Last name: Administrator 
    Home directory: /home/admin 
    Login shell: /bin/bash 
    UID: 939000000 
    GID: 939000000 
    Account disabled: False 
    Password: True 
    Kerberos keys available: True 
    ----------------------------
    Number of entries returned 1
    ----------------------------

2.3.4. 安装没有集成的 DNS 的服务器

注意
如果您不确定适合哪些 DNS 或 CA 配置,请参阅 第 2.3.1 节 “确定使用集成 DNS”第 2.3.2 节 “确定要使用的 CA 配置”
要安装没有集成 DNS 的服务器,请在没有任何与 DNS 相关的选项的情况下运行 ipa-server-install 工具。

例 2.2. 安装没有集成的 DNS 的服务器

这个过程安装服务器:
  • 没有集成的 DNS
  • 集成 IdM CA 作为 root CA,这是默认 CA 配置
  1. 运行 ipa-server-install 工具。
    # ipa-server-install
  2. 此脚本提示配置集成的 DNS 服务。按 Enter 键选择默认的 no 选项。
    Do you want to configure integrated DNS (BIND)? [no]:
  3. 该脚本会提示输入几个必要的设置。
    • 要接受括号中的默认值,请按 Enter 键。
    • 要提供与建议的默认值不同的值,请输入所需的值。
    Server host name [server.example.com]:
    Please confirm the domain name [example.com]:
    Please provide a realm name [EXAMPLE.COM]:
    警告
    红帽强烈建议 Kerberos 域名与主 DNS 域名相同,且所有字母都使用大写。例如,如果主 DNS 域是 ipa.example.com,请将 IPA.EXAMPLE.COM 用于 Kerberos 域名。
    不同的命名实践将阻止您使用 Active Directory 信任,并可能导致其他负面影响。
  4. 输入目录服务器超级用户 cn=Directory Manager 以及 admin IdM 系统用户帐户的密码。
    Directory Manager password:
    IPA admin password:
  5. 输入 yes 以确认服务器配置。
    Continue to configure the system with these values? [no]: yes
  6. 安装脚本现在配置服务器。等待操作完成。
  7. 安装脚本生成包含 DNS 资源记录的文件:下面示例输出中的 /tmp/ipa.system.records.UFRPto.db 文件。将这些记录添加到现有的外部 DNS 服务器中。更新 DNS 记录的过程因特定的 DNS 解决方案而异。
    ...
    Restarting the KDC
    Please add records in this file to your DNS system: /tmp/ipa.system.records.UFRBto.db
    Restarting the web server
    ...
    重要
    在将 DNS 记录添加到现有 DNS 服务器之前,服务器安装不会完成。
该脚本建议您备份 CA 证书并确保所需的网络端口已打开。有关 IdM 端口要求以及如何打开这些端口的说明的详情,请参考 第 2.1.6 节 “端口要求”
测试新服务器:
  1. 使用 admin 凭据向 Kerberos 域进行身份验证。这将验证 管理员 是否已正确配置,并且 Kerberos 域可以访问。
    # kinit admin
  2. 运行一个命令,如 ipa user-find。在新服务器上,命令会输出唯一配置的用户: admin
    # ipa user-find admin
    --------------
    1 user matched
    --------------
    User login: admin 
    Last name: Administrator 
    Home directory: /home/admin 
    Login shell: /bin/bash 
    UID: 939000000 
    GID: 939000000 
    Account disabled: False 
    Password: True 
    Kerberos keys available: True 
    ----------------------------
    Number of entries returned 1
    ----------------------------

2.3.5. 使用外部 CA 作为 Root CA 安装服务器

注意
如果您不确定适合哪些 DNS 或 CA 配置,请参阅 第 2.3.1 节 “确定使用集成 DNS”第 2.3.2 节 “确定要使用的 CA 配置”
要安装服务器并使用外部 CA 作为 root CA 链,请使用 ipa-server-install 工具传递这些选项:
  • --external-ca 指定您要使用外部 CA。
  • --external-ca-type 指定外部 CA 的类型。详情请查看 ipa-server-install(1) man page。
在证书系统实例配置过程中,该工具会打印证书签名请求(CSR)的位置: /root/ipa.csr:
...

Configuring certificate server (pki-tomcatd): Estimated time 3 minutes 30 seconds
  [1/8]: creating certificate server user
  [2/8]: configuring certificate server instance
The next step is to get /root/ipa.csr signed by your CA and re-run /sbin/ipa-server-install as: /sbin/ipa-server-install --external-cert-file=/path/to/signed_certificate --external-cert-file=/path/to/external_ca_certificate
当发生这种情况时:
  1. 将位于 /root/ipa.csr 中的 CSR 提交给外部 CA。这个过程根据要用作外部 CA 的服务的不同而有所不同。
    重要
    可能需要为证书请求适当的扩展。为身份管理生成的 CA 签名证书必须是有效的 CA 证书。这要求您在基本限制扩展 true 中设置 CA 参数。详情请查看 RFC 5280的基本约束 部分。
  2. 在基础 64 编码 blob 中检索颁发的证书和颁发 CA 的 CA 证书链(Windows CA 的 PEM 文件或 Base_64 证书)。同样,不同的证书服务的进程会有所不同。通常,网页或通知电子邮件中的下载链接允许管理员下载所有需要的证书。
    重要
    确保获取 CA 的完整证书链,而不只是 CA 证书。
  3. 再次运行 ipa-server-install,这次指定新发布的 CA 证书和 CA 链文件的位置和名称。例如:
    # ipa-server-install --external-cert-file=/tmp/servercert20110601.pem --external-cert-file=/tmp/cacert.pem
注意
ipa-server-install --external-ca 命令有时可能会失败,并显示以下错误:
ipa         : CRITICAL failed to configure ca instance Command '/usr/sbin/pkispawn -s CA -f /tmp/configuration_file' returned non-zero exit status 1
Configuration of CA failed
当设置 *_proxy 环境变量时,会发生此失败。有关如何解决这个问题的解决方案,请参阅 第 B.1.1 节 “外部 CA 安装失败”

2.3.6. 在没有 CA 的情况下安装

注意
如果您不确定适合哪些 DNS 或 CA 配置,请参阅 第 2.3.1 节 “确定使用集成 DNS”第 2.3.2 节 “确定要使用的 CA 配置”
要安装没有 CA 的服务器,您必须通过在 ipa-server-install 工具中添加选项来手动提供所需的证书。另外,大多数安装过程与 第 2.3.3 节 “使用集成的 DNS 安装服务器”第 2.3.4 节 “安装没有集成的 DNS 的服务器” 中的相同。
重要
您不能使用自签名第三方服务器证书安装服务器或副本。
安装没有 CA 的 IdM 服务器所需的证书
对于没有 CA 的 IdM 服务器安装,您必须提供以下证书:
  • 使用这些选项提供的 LDAP 服务器证书和私钥:
    • --dirsrv-cert-file 用于 LDAP 服务器证书的证书和私钥文件
    • --dirsrv-pin 用于访问 --dirsrv-cert-file中指定的文件中的私钥的密码
  • 使用这些选项提供的 Apache 服务器证书和私钥:
    • --http-cert-file 用于 Apache 服务器证书的证书和私钥文件
    • --http-pin,用于访问 --http-cert-file中指定的文件中的私钥的密码
  • 发布 LDAP 和 Apache 服务器证书的 CA 的完整 CA 证书链,使用这些选项提供:
    • --dirsrv-cert-file--http-cert-file用于具有完整 CA 证书链或部分证书链的证书文件
      您可以提供在 --dirsrv-cert-file--http-cert-file 选项中指定的以下格式的文件:
      • Privacy-Enhanced Mail(PEM)编码的证书(RFC 7468)。请注意,IdM 安装程序接受串联的 PEM 编码对象。
      • 区分编码规则(DER)
      • PKCS #7 证书链对象
      • PKCS #8 私钥对象
      • PKCS #12 归档
      您可以多次指定 --dirsrv-cert-file--http-cert-file 选项来指定多个文件。
  • 如有必要,完成完整 CA 证书链的证书文件,使用这个选项提供:
    • --ca-cert-file,您可以多次添加这个选项
  • (可选)提供外部 Kerberos 密钥分发中心(KDC)PKINIT 证书的证书文件,使用以下选项提供:
    • --pkinit-cert-file 用于 Kerberos KDC SSL 证书和私钥
    • --PKINIT-pin,密码用于解锁 Kerberos KDC 私钥
    如果您不提供 PKINIT 证书,ipa-server-install 使用带有自签名证书的本地 KDC 来配置 IdM 服务器。详情请查看 第 27 章 IdM 中的 Kerberos PKINIT 身份验证
使用 --dirsrv-cert-file--http-cert-file 提供的文件以及使用 --ca-cert-file 提供的文件必须包含 CA 的完整 CA 证书链,并发出 LDAP 和 Apache 服务器证书。
有关证书文件接受哪些选项的详情,请查看 ipa-server-install(1) man page。
注意
列出的命令行选项与 --external-ca 选项不兼容。
注意
较早版本的身份管理使用 --root-ca-file 选项指定 root CA 证书的 PEM 文件。这不再需要,因为可信 CA 始终是 DS 和 HTTP 服务器证书的签发者。IdM 现在从 --dirsrv-cert-file、--http-cert-file--ca-cert-file 指定的证书自动识别 root CA 证书。

例 2.3. 安装没有 CA 的 IdM 服务器的命令示例

[root@server ~]# ipa-server-install \
    --http-cert-file /tmp/server.crt \
    --http-cert-file /tmp/server.key \
    --http-pin secret \
    --dirsrv-cert-file /tmp/server.crt \
    --dirsrv-cert-file /tmp/server.key \
    --dirsrv-pin secret \
    --ca-cert-file ca.crt

2.3.7. 非临时安装服务器

注意
如果您不确定适合哪些 DNS 或 CA 配置,请参阅 第 2.3.1 节 “确定使用集成 DNS”第 2.3.2 节 “确定要使用的 CA 配置”
非互动安装的最低必需选项为:
  • --ds-password 为目录管理者(DM)(目录服务器超级用户)提供密码
  • --admin-passwordadmin (IdM 管理员)提供密码
  • --realm 提供 Kerberos 领域名
  • --unattended ,让安装进程为主机名和域名选择默认选项
另外,您还可以为这些设置提供自定义值:
  • --hostname 作为服务器主机名
  • --domain 作为域名
您还可以使用 --dirsrv-config-file 参数更改默认目录服务器设置,方法是使用带有自定义值的 LDIF 文件的路径。如需更多信息,请参阅 IdM 现在支持在服务器或副本安装过程中 为 Red Hat Enterprise Linux 7.3 设置独立目录服务器选项
警告
红帽强烈建议 Kerberos 域名与主 DNS 域名相同,且所有字母都使用大写。例如,如果主 DNS 域是 ipa.example.com,请将 IPA.EXAMPLE.COM 用于 Kerberos 域名。
不同的命名实践将阻止您使用 Active Directory 信任,并可能导致其他负面影响。
如需 ipa-server-install 接受的选项的完整列表,请运行 ipa-server-install --help 命令。

例 2.4. 基本安装(不交互)

  1. 运行 ipa-server-install 工具,提供所需的设置。例如,以下命令在没有集成 DNS 的情况下安装服务器,并使用集成 CA:
    # ipa-server-install --realm EXAMPLE.COM --ds-password DM_password --admin-password admin_password --unattended
  2. 设置脚本现在配置服务器。等待操作完成。
  3. 安装脚本生成包含 DNS 资源记录的文件:下面示例输出中的 /tmp/ipa.system.records.UFRPto.db 文件。将这些记录添加到现有的外部 DNS 服务器中。更新 DNS 记录的过程因特定的 DNS 解决方案而异。
    ...
    Restarting the KDC
    Please add records in this file to your DNS system: /tmp/ipa.system.records.UFRBto.db
    Restarting the web server
    ...
    重要
    在将 DNS 记录添加到现有 DNS 服务器之前,服务器安装不会完成。
该脚本建议您备份 CA 证书并确保所需的网络端口已打开。有关 IdM 端口要求以及如何打开这些端口的说明的详情,请参考 第 2.1.6 节 “端口要求”
测试新服务器:
  1. 使用 admin 凭据向 Kerberos 域进行身份验证。这将验证 管理员 是否已正确配置,并且 Kerberos 域可以访问。
    # kinit admin
  2. 运行一个命令,如 ipa user-find。在新服务器上,命令会输出唯一配置的用户: admin
    # ipa user-find admin
    --------------
    1 user matched
    --------------
    User login: admin 
    Last name: Administrator 
    Home directory: /home/admin 
    Login shell: /bin/bash 
    UID: 939000000 
    GID: 939000000 
    Account disabled: False 
    Password: True 
    Kerberos keys available: True 
    ----------------------------
    Number of entries returned 1
    ----------------------------


[1] 详情请查看 DNS Amplification Attacks 页面。

2.4. 卸载 IdM 服务器

注意
在域级别 0 中,这个过程不同。请参阅 第 D.3.6 节 “删除副本”
先决条件
  • 在卸载充当证书颁发机构(CA)、密钥恢复机构(KRA)或 DNS 安全扩展(DNSSEC)服务器的服务器之前,请确保这些服务正在域的另一个服务器上运行。
    警告
    删除充当 CA、KRA 或 DNSSEC 服务器的最后一个副本可能会严重破坏身份管理功能。
步骤
卸载 server.example.com
  1. 在另一台服务器上,使用 ipa server-del 命令从拓扑中删除 server.example.com
    [root@another_server ~]# ipa server-del server.example.com
  2. server.example.com 上,使用 ipa-server-install --uninstall 命令:
    [root@server ~]# ipa-server-install --uninstall
  3. 确保指向 server.example.com 的所有名称服务器(NS) DNS 记录已从 DNS 区域中删除。无论您使用由 IdM 还是外部 DNS 管理的集成 DNS,这个均适用。

2.5. 重命名服务器

设置后无法更改 IdM 服务器的主机名。但是,您可以使用其他名称将服务器替换为副本。
  1. 使用 CA 和新的主机名或 IP 地址创建新服务器副本。这在 第 4 章 安装和卸载身份管理副本 中描述。
  2. 停止初始 IdM 服务器实例。
    [root@old_server ~]# ipactl stop
  3. 验证所有其他副本和客户端是否像以前一样工作。
  4. 卸载初始 IdM 服务器,如 所述 第 2.4 节 “卸载 IdM 服务器”

第 3 章 安装和卸载身份管理客户端

本章说明了如何将系统配置为作为注册到服务器的客户端计算机加入身份管理(IdM)域。
注意
有关 IdM 域中客户端和服务器的详情,请参阅 第 1.2 节 “Identity Management Domain”

3.1. 安装客户端的先决条件

DNS 要求
使用适当的 DNS 委派.有关 IdM 中 DNS 要求的详情,请参考 第 2.1.5 节 “主机名和 DNS 配置”
不要更改客户端上的 resolv.conf 文件。
端口要求
IdM 客户端连接到 IdM 服务器上的多个端口,以与其服务通信。这些端口必须在 IdM 服务器上 以进入方向打开。有关 IdM 需要的端口的更多信息,请参阅 第 2.1.6 节 “端口要求”
在客户端上,以传出方向打开这些端口。如果您使用的防火墙不过滤传出数据包,如 firewalld,这些端口已在传出方向中可用。
名称服务缓存守护进程(NSCD)要求
红帽建议在身份管理机器上禁用 NSCD。另外,如果没有禁用 NSCD,则只为 SSSD 不缓存的映射启用 NSCD。
NSCD 和 SSSD 服务都执行缓存,当系统同时同时使用这两个服务时,可能会出现问题。有关如何避免 NSCD 和 SSSD 之间冲突的信息,请参阅 系统级身份验证指南

3.1.1. 安装 IdM 客户端的 RHEL 支持版本

IdM 服务器在最新的 RHEL 7 次要版本中运行的身份管理(IdM)部署支持在最新次版本中运行的客户端:
  • RHEL 7
    RHEL 8
    RHEL 9
注意
如果您计划使 IdM 部署 FIPS 兼容,则 {RH} 强烈建议您将环境迁移到 RHEL 9。RHEL 9 是为 FIPS 140-3 认证的第一个主要 RHEL 版本。

3.1.2. 在 FIPS 环境中安装客户端的先决条件

在使用 Red Hat Enterprise Linux 7.4 及更新的版本设置的环境中:
  • 您可以在启用了联邦信息处理标准(FIPS)模式的系统上配置新的客户端。安装脚本自动检测启用了 FIPS 的系统,并在没有管理员干预的情况下配置 IdM。
    要在操作系统中启用 FIPS,请参阅 安全指南 中的启用 FIPS 模式
在使用 Red Hat Enterprise Linux 7.3 及更早版本设置的环境中:
  • IdM 不支持 FIPS 模式。在安装 IdM 客户端前禁用系统中的 FIPS,且不会在安装后启用它。
有关 FIPS 模式的详情,请参阅 安全指南 中的 联邦信息处理标准(FIPS )。

3.2. 安装客户端所需的软件包

安装 ipa-client 软件包:
# yum install ipa-client
ipa-client 软件包会自动安装其他必需的软件包作为依赖项,如系统安全服务守护进程(SSSD)软件包。

3.3. 安装客户端

ipa-client-install 工具安装并配置 IdM 客户端。安装过程要求您提供可用于注册客户端的凭证。支持以下验证方法:
授权注册客户端的用户凭证,如 admin
默认情况下,ipa-client-install 需要这个选项。请参阅 第 3.3.1 节 “交互式安装客户端” 以获得示例。
要直接向 ipa-client-install 提供用户凭证,请使用 --principal--password 选项。
服务器上预生成的随机、一次性密码
要使用此验证方法,请在 ipa-client-install 选项中添加 --random 选项。请参阅 例 3.1 “使用 Random 密码以非交互方式安装客户端”
来自之前的报名登记的主体
要使用此身份验证方法,请将 --keytab 选项添加到 ipa-client-install。详情请查看 第 3.8 节 “将客户端重新注册到 IdM 域”
详情请查看 ipa-client-install(1) man page。
以下小节记录了基本安装场景。有关使用 ipa-client-install 和接受选项的完整列表的详情,请查看 ipa-client-install(1) man page。

3.3.1. 交互式安装客户端

以下流程在提示用户在需要时输入时安装客户端。用户提供授权将客户端注册到域中的用户凭据,如 admin 用户。
  1. 运行 ipa-client-install 工具。
    添加 --enable-dns-updates 选项,如果适用,请使用客户端机器的 IP 地址更新 DNS 记录:
    • 客户端注册的 IdM 服务器已安装了集成的 DNS
    • 网络上的 DNS 服务器接受使用 GSS-TSIG 协议的 DNS 条目更新
    添加 --no-krb5-offline-passwords 选项以禁用在 SSSD 缓存中存储 Kerberos 密码。
  2. 安装脚本会尝试自动获取所有必需的设置。
    1. 如果您的系统上正确设置了 DNS 区域和 SRV 记录,脚本会自动发现所有需要的值并打印它们。输入 yes 以确认。
      Client hostname: client.example.com
      Realm: EXAMPLE.COM
      DNS Domain: example.com
      IPA Server: server.example.com
      BaseDN: dc=example,dc=com
      
      Continue to configure the system with these values? [no]: yes
      如果要使用不同值安装系统,请取消当前安装。然后再次运行 ipa-client-install,并使用命令行选项指定所需的值。
      详情请查看 ipa-client-install(1) man page 中的 DNS 自动发现 部分。
    2. 如果脚本自动获取一些设置,它会提示您输入这些值。
      重要
      不要使用单标签域名,例如 .company:IdM 域必须由一个或多个子域和一个顶层域组成,如 example.com 或 company.example.com。
      完全限定域名必须满足以下条件:
      • 它是一个有效的 DNS 名称,即只允许数字、字母字符和连字符(-)。主机名中的其他字符(如下划线(_))会导致 DNS 失败。
      • 都是小写。不允许使用大写字母。
      • 完全限定域名不能解析到环回地址。它必须解析到计算机的公共 IP 地址,而不是 127.0.0.1
      有关其他推荐的命名实践,请参阅 Red Hat Enterprise Linux 安全指南中的 推荐命名实践
  3. 该脚本提示其身份用于注册客户端的用户。默认情况下,这是 admin 用户:
    User authorized to enroll computers: admin
    Password for admin@EXAMPLE.COM
  4. 安装脚本现在配置客户端。等待操作完成。
    Client configuration complete.
  5. 运行 ipa-client-automount 工具,它为 IdM 自动配置 NFS。详情请查看 第 34.2.1 节 “自动配置 NFS”

3.3.2. 以非交互方式安装客户端

对于非互动安装,请使用命令行选项向 ipa-client-install 工具提供所有必需的信息。非互动安装的最低必需选项为:
如果您的系统上正确设置了 DNS 区域和 SRV 记录,脚本会自动发现所有其他必要值。如果脚本无法自动发现这些值,请使用命令行选项提供值。
  • --hostname 为客户端机器指定静态主机名
    重要
    不要使用单标签域名,例如 .company:IdM 域必须由一个或多个子域和一个顶层域组成,如 example.com 或 company.example.com。
    完全限定域名必须满足以下条件:
    • 它是一个有效的 DNS 名称,即只允许数字、字母字符和连字符(-)。主机名中的其他字符(如下划线(_))会导致 DNS 失败。
    • 都是小写。不允许使用大写字母。
    • 完全限定域名不能解析到环回地址。它必须解析到计算机的公共 IP 地址,而不是 127.0.0.1
    有关其他推荐的命名实践,请参阅 Red Hat Enterprise Linux 安全指南中的 推荐命名实践
  • --server 用于指定客户端将要注册的 IdM 服务器的主机名
  • --domain 用于指定客户端将要注册的 IdM 服务器的 DNS 域名
  • --realm 指定 Kerberos 域名
添加 --enable-dns-updates 选项,如果适用,请使用客户端机器的 IP 地址更新 DNS 记录:
  • 客户端注册的 IdM 服务器已安装了集成的 DNS
  • 网络上的 DNS 服务器接受使用 GSS-TSIG 协议的 DNS 条目更新
添加 --no-krb5-offline-passwords 选项以禁用在 SSSD 缓存中存储 Kerberos 密码。
有关 ipa-client-install 接受的选项的完整列表,请查看 ipa-client-install(1) man page。

例 3.1. 使用 Random 密码以非交互方式安装客户端

这个过程会在不提示用户进行任何输入的情况下安装客户端。进程包括在服务器上预生成用于授权注册的一次性密码。
  1. 在现有服务器中:
    1. 以管理员身份登录:
      $ kinit admin
    2. 将新机器作为 IdM 主机添加。在 ipa host-add 命令中使用 --random 选项来生成随机密码。
      $ ipa host-add client.example.com --random
      --------------------------------------------------
      Added host "client.example.com"
      --------------------------------------------------
        Host name: client.example.com
        Random password: W5YpARl=7M.n
        Password: True
        Keytab: False
        Managed by: server.example.com
      当使用生成的密码将机器注册到 IdM 域后,生成的密码将变为无效。注册完成后,它将被一个正确的主机 keytab 替换。
  2. 在您要安装客户端的机器上,运行 ipa-client-install,并使用以下选项:
    • --password 用于 ipa host-add 输出中的随机密码
      注意
      密码通常包含特殊字符。因此,将其括在单引号(')中。
    • --unattended 允许运行安装而无需用户确认
    如果您的系统上正确设置了 DNS 区域和 SRV 记录,脚本会自动发现所有其他必要值。如果脚本无法自动发现这些值,请使用命令行选项提供值。
    例如:
    # ipa-client-install --password 'W5YpARl=7M.n' --domain example.com --server server.example.com --unattended
  3. 运行 ipa-client-automount 工具,它为 IdM 自动配置 NFS。详情请查看 第 34.2.1 节 “自动配置 NFS”

3.4. 通过 Kickstart 设置 IdM 客户端

Kickstart 注册会在安装 Red Hat Enterprise Linux 时自动将新系统添加到 IdM 域。有关 Kickstart 的详情,请查看安装 指南中的 Kickstart 安装
准备 Kickstart 客户端安装包括以下步骤:

3.4.1. 在 IdM 服务器中预先创建客户端主机条目

  1. 以 admin 用户身份登录:
    $ kinit admin
  2. 在 IdM 服务器上创建主机条目,并为该条目设置一个临时密码:
    $ ipa host-add client.example.com --password=secret
    Kickstart 使用密码在客户端安装过程中进行验证,并在第一次验证尝试后过期。成功安装客户端后,它会使用它的 keytab 进行验证。

3.4.2. 为客户端创建 Kickstart 文件

用于设置 IdM 客户端的 Kickstart 文件必须包含以下内容:
  • 要安装的软件包列表中的 ipa-client 软件包:
    %packages
    @ X Window System
    @ Desktop
    @ Sound and Video
    ipa-client
    ...
  • 安装后说明:
    • 确保已生成 SSH 密钥,然后再注册
    • 运行 ipa-client-install 工具,指定:
      例如:
      %post --log=/root/ks-post.log
      
      # Generate SSH keys to ensure that ipa-client-install uploads them to the IdM server
      /usr/sbin/sshd-keygen
      
      # Run the client install script
      /usr/sbin/ipa-client-install --hostname=client.example.com --domain=EXAMPLE.COM --enable-dns-updates --mkhomedir -w secret --realm=EXAMPLE.COM --server=server.example.com
    对于非交互式安装,还要添加 --unattended 选项。
    要让客户端安装脚本为机器请求证书:
    • --request-cert 选项添加到 ipa-client-install
    • 将 kickstart chroot 环境中的 getcertipa-client-install 工具的系统总线地址设置为 /dev/null。要做到这一点,请在 ipa-client-install 指令前将这些行添加到安装后指令文件中:
      # env DBUS_SYSTEM_BUS_ADDRESS=unix:path=/dev/null getcert list
      # env DBUS_SYSTEM_BUS_ADDRESS=unix:path=/dev/null ipa-client-install
    注意
    红帽建议不要在 kickstart 注册前启动 sshd 服务。在注册客户端前启动 sshd 会自动生成 SSH 密钥,但使用上述脚本是首选的解决方案。
    有关详细信息,请参阅 安装指南中的 安装后脚本
有关使用 Kickstart 的详情,请参考安装 指南中如何执行 Kickstart 安装有关 Kickstart 文件示例,请参阅 示例 Kickstart 配置。

3.5. 客户端安装后注意事项

3.5.1. 删除优先级管理配置

ipa-client-install 脚本不会从 /etc/openldap/ldap.conf/etc/sssd/sssd.conf 文件中删除任何之前的 LDAP 和 SSSD 配置。如果在安装客户端前修改了这些文件中的配置,该脚本会添加新的客户端值,但会将它们注释掉。例如:
BASE   dc=example,dc=com
URI    ldap://ldap.example.com

#URI ldaps://server.example.com # modified by IPA
#BASE dc=ipa,dc=example,dc=com # modified by IPA
应用新的身份管理配置值:
  1. 打开 /etc/openldap/ldap.conf/etc/sssd/sssd.conf
  2. 删除前面的配置。
  3. 取消注释新的身份管理配置。
  4. 依赖于系统范围的 LDAP 配置的服务器进程可能需要重启来应用更改。使用 openldap 库的应用程序通常会在启动时导入配置。

3.6. 测试新客户端

检查客户端是否可以获取有关服务器上定义的用户的信息。例如,检查默认的 admin 用户:
[user@client ~]$ id admin
uid=1254400000(admin) gid=1254400000(admins) groups=1254400000(admins)

3.7. 卸载客户端

卸载客户端会从 IdM 域中删除客户端,以及针对系统服务(如 SSSD)的所有 IdM 特定配置。这会恢复客户端计算机以前的配置。
  1. 运行 ipa-client-install --uninstall 命令:
    # ipa-client-install --uninstall
  2. 从服务器手动删除客户端主机的 DNS 条目。请参阅 第 33.4.6 节 “从 DNS 区域中删除记录”

3.8. 将客户端重新注册到 IdM 域

如果客户端虚拟机已被销毁,并且您仍有其 keytab,您可以重新推出客户端:
注意
您只能重新注册域条目仍然活跃的客户端。如果您卸载了客户端(使用 ipa-client-install --uninstall)或者禁用了其主机条目(使用 ipa host-disable),则无法重新注册它。
在重新注册过程中,IdM 会执行以下操作:
  • 吊销原始主机证书
  • 生成新主机证书
  • 创建新 SSH 密钥
  • 生成一个新的 keytab

3.8.1. 使用管理员帐户以交互方式重新注册客户端

  1. 重新创建具有相同主机名的客户端机器。
  2. 在客户端机器上运行 ipa-client-install --force-join 命令:
    # ipa-client-install --force-join
  3. 该脚本提示其身份用于注册客户端的用户。默认情况下,这是 admin 用户:
    User authorized to enroll computers: admin
    Password for admin@EXAMPLE.COM

3.8.2. 使用客户端 keytab 以非交互方式重新注册客户端

使用客户端 keytab 重新注册适合自动安装,或者在使用管理员密码时不可行的情况下。
  1. 备份原始客户端的 keytab 文件,例如在 /tmp/root 目录中。
  2. 重新创建具有相同主机名的客户端机器。
  3. 重新打开客户端,并使用 --keytab 选项指定 keytab 位置:
    # ipa-client-install --keytab /tmp/krb5.keytab
    注意
    --keytab 选项中指定的 keytab只在进行身份验证以启动注册时才使用。在重新注册过程中,IdM 为客户端生成一个新的 keytab。

3.9. 重命名客户端机器

本节介绍如何重命名 IdM 客户端。该流程涉及:
警告
重新命名客户端是一个手动过程。除非绝对需要更改主机名,否则红帽不推荐这样做。
识别当前服务和密钥选项卡配置
在卸载当前客户端之前,请记下客户端的某些设置。在使用新的主机名重新注册计算机后,您将应用此配置。
  1. 确定在机器上运行哪些服务:
    1. 使用 ipa service-find 命令,并在输出中识别带有证书的服务:
      $ ipa service-find client.example.com
    2. 此外,每个主机都有一个默认 主机服务 ,该服务不会出现在 ipa service-find 输出中。主机服务的服务主体(也称为 主机主体 )是 host /client.example.com
  2. 识别机器所属的所有主机组。
    # ipa hostgroup-find client.example.com
  3. 对于 ipa service-find client.example.com 显示的所有服务主体,请确定 client.example.com 上对应的 keytab 的位置。
    客户端系统上的每个服务都有一个 Kerberos 主体,格式为 service_name/hostname@REALM,如 ldap/client.example.com@EXAMPLE.COM
从 IdM 域中删除客户端机器
  1. 从 IdM 域取消注册客户端计算机。请参阅 第 3.7 节 “卸载客户端”
  2. 对于除 /etc/krb5.keytab 以外的每个识别的 keytab,删除旧的主体:
    [root@client ~]# ipa-rmkeytab -k /path/to/keytab -r EXAMPLE.COM
  3. 在 IdM 服务器上,删除主机条目。这会删除所有服务并吊销为该主机发布的所有证书:
    [root@server ~]# ipa host-del client.example.com
此时,主机已完全从 IdM 中删除。
使用新主机名重新注册客户端
  1. 根据需要重命名机器。
  2. 将计算机重新注册为 IdM 客户端。请参阅 第 3.8 节 “将客户端重新注册到 IdM 域”
  3. 在 IdM 服务器中,为 “识别当前服务和密钥选项卡配置”一节 中指定的每个服务添加新的 keytab。
    [root@server ~]# ipa service-add service_name/new_host_name
  4. 为在 “识别当前服务和密钥选项卡配置”一节 中分配了证书的服务生成证书。您可以做到这一点:

第 4 章 安装和卸载身份管理副本

副本通过克隆现有身份管理服务器的配置来创建。因此,服务器和其副本共享相同的核心配置。副本安装过程复制现有服务器配置,并根据该配置安装副本。
维护多个服务器副本是推荐的备份解决方案,可避免数据丢失,如 "Idup 和 Restore in IdM/IPA"知识库解决方案 中所述。
注意
另一个备份解决方案,它主要用于从副本重建 IdM 部署时,这是 ipa-backup 工具,如 第 9 章 备份和恢复身份管理 所述。

4.1. 解释 IdM 副本

要为大量客户端提供服务可用性和冗余,您可以在一个域中部署多个 IdM 服务器(称为 副本 )。副本是初始 IdM 服务器的克隆,其功能相互相同:它们共享与用户、机器、证书和配置策略相同的内部信息。
但是,环境中只有一个服务器角色每次只能满足两个唯一的服务器角色:
  • CA 续订服务器: 此服务器管理证书颁发机构(CA)子系统证书的续订
  • CRL 生成服务器 :此服务器生成证书撤销列表(CRL)。
默认情况下,安装的第一个 CA 服务器同时满足 CA 续订服务器和 CRL 生成服务器角色。您可以将这些角色过渡到拓扑中的任何其他 CA 服务器,例如,如果您需要停用初始安装的服务器。这两个角色不需要由同一服务器实现。
注意
有关 IdM 拓扑中机器类型的更多信息,请参阅 第 1.2 节 “Identity Management Domain”
复制 是在副本之间复制数据的过程。副本之间的信息使用 多主机复制共享:通过复制 协议加入的所有副本接收更新,因此被视为数据主服务器。

图 4.1. 服务器和副本协议

服务器和副本协议

4.2. Replicas 的部署注意事项

4.2.1. Topology 中的服务器服务分布

IdM 服务器可以运行多个服务,如证书颁发机构(CA)或 DNS。副本可以运行与其从中创建的服务器相同的服务,但这不是必需的。
例如,您可以安装不带 DNS 服务的副本,即使初始服务器运行 DNS。同样,即使初始服务器在没有 DNS 的情况下安装,您也可以将副本设置为 DNS 服务器。

图 4.2. 带有不同服务的副本

带有不同服务的副本
Replicas 上的 CA 服务
如果您设置了一个没有 CA 的副本,它会将证书操作的所有请求转发到拓扑中的 CA 服务器。
警告
红帽强烈建议将 CA 服务安装到多台服务器中。有关安装包括 CA 服务的初始服务器副本的详情请参考 第 4.5.4 节 “使用 CA 安装副本”
如果您只在一个服务器中安装 CA,则在 CA 服务器失败时可能会丢失 CA 配置且无法恢复。详情请查看 第 B.2.6 节 “恢复丢失的 CA 服务器”
如果您在副本中设置 CA,其配置必须镜像初始服务器的 CA 配置。

4.2.2. 副本拓扑建议

红帽建议遵循以下指南:
在单个 IdM 域中配置不超过 60 个副本
红帽保证支持具有 60 个副本或更少副本的环境。
至少配置两个,但每个副本 不超过四个 复制协议
配置额外的复制协议可确保不仅在初始副本和主服务器之间复制信息,而且还在其他副本之间复制。
  • 如果您从服务器 A 创建副本 B,然后从服务器 A 创建副本 C,则副本 B 和 C 不会被直接加入,因此在传播到副本 C 之前,必须首先将来自副本 B 的数据复制到 server A。

    图 4.3. 复制协议中未加入副本 B 和 C

    复制协议中未加入副本 B 和 C
    在副本 B 和副本 C 之间设置额外的复制协议可确保数据直接复制,从而提高数据可用性、一致性、故障转移容错和性能。

    图 4.4. replicas B 和 Cre Joined 在复制协议中

    replicas B 和 Cre Joined 在复制协议中
    有关管理复制协议的详情,请查看 第 6 章 管理复制拓扑
不需要为每个副本配置超过四个复制协议。每个服务器有大量的复制协议不会带来显著的额外好处,因为一个消费者服务器一次只能由一个主服务器更新,因此其他协议同时闲置和等待。此外,配置太多复制协议可能会对整体性能造成负面影响。
注意
ipa topologysuffix-verify 命令检查拓扑是否满足最重要的建议。运行 ipa topologysuffix-verify --help 获取详细信息。
命令要求您指定拓扑后缀。详情请查看 第 6.1 节 “解释复制协议、拓扑后缀和拓扑片段”

图 4.5. 拓扑示例

拓扑示例
4.2.2.1. 紧凑 Cell Topology
最具弹性的拓扑之一是为服务器和单元中有少量服务器的副本创建单元配置:
  • 每个单元都是一个 紧密的单元,所有服务器都有复制协议。
  • 每一服务器与单元 外的其他 服务器都有一个复制协议。这样可确保每个单元松散耦合到域中的其他单元。
达到紧张的单元拓扑:
  • 每个主要办公室、数据中心或本地化都至少有一个 IdM 服务器。最好有两个 IdM 服务器。
  • 每个数据中心不超过 4 个服务器.
  • 在小型办公室中,而不是使用副本,使用 SSSD 将凭据和非站点 IdM 服务器缓存为数据后端。

4.2.3. Hidden Replica Mode

默认情况下,当您设置新副本时,安装程序会在 DNS 中自动创建服务(SRV)资源记录。这些记录可让客户端自动发现副本及其服务。隐藏的副本是一个 IdM 服务器,它具有所有运行的服务并可用。但是,它在 DNS 中没有 SRV 记录,并且 LDAP 服务器角色没有启用。因此,客户端无法使用服务发现来检测这些隐藏的副本。
注意
隐藏的副本功能在 Red Hat Enterprise Linux 7.7 及更新的版本中作为技术预览提供,因此不受支持。
隐藏副本主要针对可能会破坏客户端的专用服务设计。例如,IdM 的完整备份需要关闭 master 或副本中的所有 IdM 服务。因为没有客户端使用隐藏的副本,管理员可以在不影响任何客户端的情况下暂时关闭这个主机上的服务。其他用例包括 IdM API 或 LDAP 服务器上的高负载操作,如大量导入或广泛查询。
要将副本作为隐藏安装,请将 --hidden-replica 参数传递到 ipa-replica-install 命令。有关安装副本的详情,请参考 第 4.5 节 “创建副本:简介”
另外,您可以更改现有副本的状态。详情请查看 第 6.5.3 节 “Hidden Replicas 的降级和升级”

4.3. 安装副本的先决条件

副本的安装要求与 IdM 服务器的安装要求相同。确保副本机器满足 第 2.1 节 “安装服务器的先决条件” 中列出的所有先决条件。
除常规服务器要求外,还必须满足以下条件:
副本必须运行相同或更新版本的 IdM
例如,如果 master 服务器在 Red Hat Enterprise Linux 7 上运行,并使用 IdM 4.4 软件包,则副本还必须在 Red Hat Enterprise Linux 7 或更高版本中运行,并使用 IdM 版本 4.4 或更高版本。这样可确保把配置从服务器正确复制到副本。
重要
IdM 不支持创建比 master 版本更早的版本副本。如果您尝试使用较早版本创建副本,则安装会失败。
副本需要打开其他端口
除了 第 2.1.6 节 “端口要求” 中描述的标准 IdM 服务器端口要求外,请确保还满足以下条件:
  • 在域级别 0 上,在副本设置过程中使 TCP 端口 22 在主服务器上保持打开。需要此端口才能使用 SSH 连接主服务器。
    注意
    有关域级别的详情请参考 第 7 章 显示和提升域级别
  • 如果其中一个服务器正在运行 Red Hat Enterprise Linux 6 并安装了 CA,在副本配置期间和之后还打开 TCP 端口 7389。在纯 Red Hat Enterprise Linux 7 环境中,不需要端口 7389。
有关如何使用 firewall-cmd 工具打开端口的详情,请参考 第 2.1.6 节 “端口要求”

4.4. 安装副本所需的软件包

副本软件包要求与服务器软件包要求相同。请参阅 第 2.2 节 “安装 IdM 服务器所需的软件包”

4.5. 创建副本:简介

ipa-replica-install 工具用于从现有 IdM 服务器安装新副本。逐一安装身份管理副本。不支持同时安装多个副本。
注意
本章论述了 Red Hat Enterprise Linux 7.3 中引入的简化副本安装。这些步骤需要域级别 1(请参阅 第 7 章 显示和提升域级别)。
有关在域级别 0 中安装副本的文档,请参考 ???
您可以安装新副本:
在这两种情况下,您可以通过向 ipa-replica-install 添加选项来自定义副本:请参阅 “使用 ipa-replica-install 为您的用例配置副本”一节
要将副本作为隐藏安装,请将 --hidden-replica 参数传给 ipa-replica-install。有关隐藏副本的详情,请查看 第 4.2.3 节 “Hidden Replica Mode”
重要
如果您要复制的 IdM 服务器与 Active Directory 有信任,在运行 ipa-replica-install 后将副本设置为信任代理。请参阅 Windows 集成指南中的 信任控制器和信任代理
将现有客户端提升到副本
要在现有客户端上安装副本,您必须确保授权提升客户端。要实现这一点,请选择以下之一:
提供特权用户的凭证
默认特权用户为 admin。可以通过多种方式提供用户的凭据。您可以:
  • 让 IdM 提示您以交互方式获取凭证
    注意
    这是提供特权用户的凭据的默认方式。如果在 ipa-replica-install 运行时没有可用的凭证,则安装会自动提示您。
  • 在客户端上运行 ipa-replica-install 之前,以用户身份登录:
    $ kinit admin
  • 将用户的主体名称和密码直接添加到 ipa-replica-install 中:
    # ipa-replica-install --principal admin --admin-password admin_password
将客户端添加到 ipaservers 主机组中
ipaservers 中的成员资格授予机器提升的权限,类似于特权用户的凭证。您无需提供用户的凭据。
在不是客户端的机器上安装副本
当在还没有在 IdM 域中注册的机器上运行时,ipa-replica-install 首先将机器注册为客户端,然后安装副本组件。
要在这种情况下安装副本,请选择以下之一:
提供特权用户的凭证
默认特权用户为 admin。要提供凭证,请将主体名称和密码直接添加到 ipa-replica-install 中:
# ipa-replica-install --principal admin --admin-password admin_password
为客户端提供随机密码
在安装副本之前,您必须在服务器上生成随机密码。在安装过程中,您不需要提供用户的凭据。
默认情况下,副本针对客户端安装程序发现的第一个 IdM 服务器安装。要根据特定服务器安装副本,请在 ipa-replica-install 中添加以下选项:
  • --server 作为服务器的完全限定域名(FQDN)
  • IdM DNS 域的 --domain
使用 ipa-replica-install 为您的用例配置副本
当不带任何选项运行时,ipa-replica-install 只设置基本的服务器服务。要安装其他服务,如 DNS 或证书颁发机构(CA),请在 ipa-replica-install 中添加选项。
警告
红帽强烈建议将 CA 服务安装到多台服务器中。有关安装包括 CA 服务的初始服务器副本的详情请参考 第 4.5.4 节 “使用 CA 安装副本”
如果您只在一个服务器中安装 CA,则在 CA 服务器失败时可能会丢失 CA 配置且无法恢复。详情请查看 第 B.2.6 节 “恢复丢失的 CA 服务器”
例如,使用最显著选项安装副本的场景,请参阅:
您还可以使用 --dirsrv-config-file 参数更改默认目录服务器设置,方法是使用带有自定义值的 LDIF 文件的路径。如需更多信息,请参阅 IdM 现在支持在服务器或副本安装过程中 为 Red Hat Enterprise Linux 7.3 设置独立目录服务器选项
有关配置副本的选项的完整列表,请查看 ipa-replica-install(1) man page。

4.5.1. 使用主机密钥选项卡将客户端提升至副本.

在此过程中,现有的 IdM 客户端使用自己的主机 keytab 来授权提升,从而将现有的 IdM 客户端提升到副本。
此过程不要求您提供管理员或目录管理器(DM)凭证。因此,它更为安全,因为不会在命令行中公开任何敏感信息。
  1. 在现有服务器中:
    1. 以管理员身份登录。
      $ kinit admin
    2. 将客户端机器添加到 ipaservers 主机组中。
      $ ipa hostgroup-add-member ipaservers --hosts client.example.com
        Host-group: ipaservers
        Description: IPA server hosts
        Member hosts: server.example.com, client.example.com
      -------------------------
      Number of members added 1
      -------------------------
      ipaservers 中的成员资格授予机器提升的权限,类似于管理员的凭证。
  2. 在客户端上运行 ipa-replica-install 工具。
    # ipa-replica-install
  3. 另外,如果您正在复制的 IdM 服务器有 Active Directory 信任,请将副本设置为信任代理或信任控制器。详情请参阅 Windows 集成指南中的 信任控制器和信任代理

4.5.2. 使用 Random 密码安装副本

在此过程中,副本会从头开始安装在尚未是 IdM 客户端的机器上。为授权注册,仅使用针对一个客户端注册的、特定于客户端的随机密码。
此过程不要求您提供管理员或目录管理器(DM)凭证。因此,它更为安全,因为不会在命令行中公开任何敏感信息。
  1. 在现有服务器中:
    1. 以管理员身份登录。
      $ kinit admin
    2. 将新机器作为 IdM 主机添加。在 ipa host-add 命令中使用 --random 选项来生成用于副本安装的随机一次性密码。
      $ ipa host-add client.example.com --random
      --------------------------------------------------
      Added host "client.example.com"
      --------------------------------------------------
        Host name: client.example.com
        Random password: W5YpARl=7M.n
        Password: True
        Keytab: False
        Managed by: server.example.com
      当使用生成的密码将机器注册到 IdM 域后,生成的密码将变为无效。注册完成后,它将被一个正确的主机 keytab 替换。
    3. 将机器添加到 ipaservers 主机组中。
      $ ipa hostgroup-add-member ipaservers --hosts client.example.com
        Host-group: ipaservers
        Description: IPA server hosts
        Member hosts: server.example.com, client.example.com
      -------------------------
      Number of members added 1
      -------------------------
      ipaservers 中的成员资格授予设置所需服务器服务所需的机器提升特权。
  2. 在您要安装副本的机器上,运行 ipa-replica-install,并使用 --password 选项提供随机密码。将密码括在单引号(')中,因为它通常包含特殊字符:
    # ipa-replica-install --password 'W5YpARl=7M.n'
  3. 另外,如果您正在复制的 IdM 服务器有 Active Directory 信任,请将副本设置为信任代理或信任控制器。详情请参阅 Windows 集成指南中的 信任控制器和信任代理

4.5.3. 使用 DNS 安装副本

此流程适用于在客户端以及尚不属于 IdM 域的机器上安装副本。详情请查看 第 4.5 节 “创建副本:简介”
  1. 使用以下选项运行 ipa-replica-install
    • --setup-dns 以创建 DNS 区域(如果不存在),并将副本配置为 DNS 服务器
    • 如果您不想使用任何 forwarders,指定 --forwarder 指定 forwarder 或 --no- forwarder
      出于故障转移的原因,需要指定多个正向解析器,请多次使用 --forwarder
    例如:
    # ipa-replica-install --setup-dns --forwarder 192.0.2.1
    注意
    ipa-replica-install 工具接受与 DNS 设置相关的许多其他选项,如 --no-reverse--no-host-dns。有关它们的详情请参考 ipa-replica-install(1) man page。
  2. 如果初始服务器是在启用了 DNS 的情况下创建的,则会使用正确的 DNS 条目自动创建副本。这些条目可确保 IdM 客户端能够发现新服务器。
    如果初始服务器未启用 DNS,请手动添加 DNS 记录。域服务需要以下 DNS 记录:
    • _ldap._tcp
    • _kerberos._tcp
    • _kerberos._udp
    • _kerberos-master._tcp
    • _kerberos-master._udp
    • _ntp._udp
    • _kpasswd._tcp
    • _kpasswd._udp
    这个示例演示了如何验证条目是否存在:
    1. 为 DOMAIN 和 NAMESERVER 变量设置适当的值:
      # DOMAIN=example.com
      # NAMESERVER=replica
    2. 使用以下命令检查 DNS 条目:
      # for i in _ldap._tcp _kerberos._tcp _kerberos._udp _kerberos-master._tcp _kerberos-master._udp _ntp._udp ; do
      dig @${NAMESERVER} ${i}.${DOMAIN} srv +nocmd +noquestion +nocomments +nostats +noaa +noadditional +noauthority
      done | egrep "^_"
      
      _ldap._tcp.example.com. 86400     IN    SRV     0 100 389 server1.example.com.
      _ldap._tcp.example.com. 86400     IN    SRV     0 100 389 server2.example.com.
      _kerberos._tcp.example.com. 86400 IN    SRV     0 100 88  server1.example.com.
      ...
  3. 将父域中的 DNS 委托程序添加到 IdM DNS 域。例如,如果 IdM DNS 域是 ipa.example.com,请在 example.com 父域中添加一个名称服务器(NS)记录。
    重要
    每次安装 IdM DNS 服务器时,必须重复此步骤。
  4. 可选,但推荐.在副本不可用时,手动将其他 DNS 服务器添加为备份服务器。请参阅 第 33.11.1 节 “设置其他名称服务器”。当新副本是您 IdM 域中的第一个 DNS 服务器时,尤其建议这样做。
  5. 另外,如果您正在复制的 IdM 服务器有 Active Directory 信任,请将副本设置为信任代理或信任控制器。详情请参阅 Windows 集成指南中的 信任控制器和信任代理

4.5.4. 使用 CA 安装副本

此流程适用于在客户端以及尚不属于 IdM 域的机器上安装副本。详情请查看 第 4.5 节 “创建副本:简介”
  1. 使用 --setup-ca 选项运行 ipa-replica-install
    [root@replica ~]# ipa-replica-install --setup-ca
  2. setup-ca 选项从初始服务器配置中复制 CA 配置,无论服务器上的 IdM CA 是根 CA 还是从属到外部 CA。
    注意
    有关支持的 CA 配置的详情,请参考 第 2.3.2 节 “确定要使用的 CA 配置”
  3. 另外,如果您正在复制的 IdM 服务器有 Active Directory 信任,请将副本设置为信任代理或信任控制器。详情请参阅 Windows 集成指南中的 信任控制器和信任代理

4.5.5. 从没有 CA 的服务器安装 Replica

此流程适用于在客户端以及尚不属于 IdM 域的机器上安装副本。详情请查看 第 4.5 节 “创建副本:简介”
重要
您不能使用自签名第三方服务器证书安装服务器或副本。
  1. 运行 ipa-replica-install,并通过添加以下选项来提供所需的证书文件:
    • --dirsrv-cert-file
    • --dirsrv-pin
    • --http-cert-file
    • --http-pin
    有关使用这些选项提供的文件的详情,请参考 第 2.3.6 节 “在没有 CA 的情况下安装”
    例如:
    [root@replica ~]# ipa-replica-install \
        --dirsrv-cert-file /tmp/server.crt \
        --dirsrv-cert-file /tmp/server.key \
        --dirsrv-pin secret \
        --http-cert-file /tmp/server.crt \
        --http-cert-file /tmp/server.key \
        --http-pin secret
    注意
    不要添加 --ca-cert-file 选项。ipa-replica-install 工具从主服务器自动获取此部分证书信息。
  2. 另外,如果您正在复制的 IdM 服务器有 Active Directory 信任,请将副本设置为信任代理或信任控制器。详情请参阅 Windows 集成指南中的 信任控制器和信任代理

4.6. 测试新副本

在创建副本后检查复制是否按预期工作:
  1. 在其中一个服务器上创建用户:
    [admin@server1 ~]$ ipa user-add test_user --first=Test --last=User
  2. 确保该用户在其它服务器中可见:
    [admin@server2 ~]$ ipa user-show test_user

4.7. 卸载副本

部分 III. 管理:管理服务器

这部分涵盖了与管理相关的主题,如 管理身份管理 域中服务器之间的 身份管理服务器 和复制,提供 身份管理 拓扑的详细信息,并提供了有关如何更新系统上的 身份管理 软件包的说明。另外,这部分解释了如何在影响 身份管理 部署时手动备份和恢复 身份管理 系统。最后一章详细介绍了不同的内部访问控制机制。

第 5 章 管理 IdM 服务器和服务的基本知识

本章论述了可用于管理 IdM 服务器和服务的身份管理命令行和 UI 工具,包括向 IdM 进行身份验证的方法。

5.1. 启动和停止 IdM 服务器

与 IdM 服务器一起安装多种不同的服务,包括目录服务器、证书颁发机构(CA)、DNS、Kerberos 等。使用 ipactl 工具来停止、启动或重启整个 IdM 服务器,以及所有已安装的服务。
启动整个 IdM 服务器:
# ipactl start
停止整个 IdM 服务器:
# ipactl stop
重启整个 IdM 服务器:
# ipactl restart
如果您只想停止、启动或重启单个服务,请使用 systemctl 工具,如 系统管理员指南 中所述。例如,在自定义目录服务器行为时使用 systemctl 管理单个服务很有用:配置更改需要重启目录服务器实例,但不需要重启所有 IdM 服务。
重要
要重启多个 IdM 域服务,红帽建议使用 ipactl。由于与 IdM 服务器一起安装的服务之间的依赖关系,这些服务启动和停止的顺序至关重要。ipactl 工具确保服务以适当的顺序启动和停止。

5.2. 使用 Kerberos 登录 IdM

IdM 使用 Kerberos 协议来支持单点登录。使用 Kerberos ,用户只需提供一次正确的用户名和密码,就可以访问 IdM 服务,而系统不需要再次提示输入凭证。
默认情况下,只有作为 IdM 域成员的机器才能使用 Kerberos 向 IdM 进行身份验证。但是,也可以为 Kerberos 身份验证配置外部系统;如需更多信息,请参阅 第 5.4.4 节 “配置外部系统以进行 Kerberos 身份验证到 Web UI”
使用 kinit
要从命令行登录到 IdM,请使用 kinit 工具。
注意
要使用 kinit,必须安装 krb5-workstation 软件包。
当不指定用户名时,kinit 会在当前登录到本地系统的用户的用户名下登录到 IdM。例如,如果您在本地系统中以 local_user 身份登录,运行 kinit 会尝试以 local_user IdM 用户身份进行身份验证:
[local_user@server ~]$ kinit
Password for local_user@EXAMPLE.COM:
注意
如果本地用户的用户名与 IdM 中的任何用户条目都不匹配,身份验证尝试会失败。
要以不同的 IdM 用户身份登录,请将所需的用户名作为参数传递给 kinit 工具。例如,要以 admin 用户身份登录:
[local_user@server ~]$ kinit admin
Password for admin@EXAMPLE.COM:
自动获取 Kerberos Tickets
pam_krb5 可插拔验证模块(PAM)和 SSSD 可以配置为在成功登录 IdM 客户端机器上的桌面环境后自动获取用户的 TGT。这样可确保登录后,用户不需要运行 kinit
在 SSSD 中配置了 IdM 作为身份和身份验证供应商的 IdM 系统中,SSSD 在用户使用对应的 Kerberos 主体名称登录后自动获取 TGT。
有关配置 pam_krb5 的详情,请参考 pam_krb5(8) man page。有关 PAM 的常规信息,请参阅 系统级身份验证指南
存储多个 Kerberos 票据
默认情况下,Kerberos 只会将每个登录用户的一个票据存储在凭据缓存中。每当用户运行 kinit 时,Kerberos 会使用新的票据覆盖当前存储的票据。例如,如果您使用 kinituser_A 进行身份验证,则 user_A 的票据将在以 user_B 身份再次进行身份验证后丢失。
要获取并存储用户的另一个 TGT,请设置不同的凭据缓存,这样可确保上一个缓存的内容不会被覆盖。您可以通过以下两种方式之一完成此操作:
  • 运行 export KRB5CCNAME=path_to_different_cache 命令,然后使用 kinit 获取 ticket。
  • 运行 kinit -c path_to_different_cache 命令,然后重置 KRB5CCNAME 变量。
恢复存储在默认凭证缓存中的原始 TGT:
  1. 运行 kdestroy 命令。
  2. 使用 unset $KRB5CCNAME 命令恢复默认凭证缓存位置。
检查当前登录用户
要验证当前存储并用于身份验证的 TGT,请使用 klist 工具来列出缓存的票据。在以下示例中,缓存包含 user_A 的票据,这意味着当前只允许 user_A 访问 IdM 服务:
$ klist
Ticket cache: KEYRING:persistent:0:0
Default principal: user_A@EXAMPLE.COM

Valid starting     	Expires            	Service principal
11/10/2015 08:35:45  	11/10/2015 18:35:45  	krbtgt/EXAMPLE.COM@EXAMPLE.COM

5.3. IdM 命令行实用程序

IdM 的基本命令行脚本名为 ipaipa 脚本是多个子命令的父脚本。这些子命令随后用于管理 IdM。例如,ipa user-add 命令添加一个新用户:
$ ipa user-add user_name
与 UI 中的管理相比,命令行管理具有某些优势;例如,命令行实用程序允许以一致的方式自动执行和重复执行管理任务,而无需人工干预。此外,虽然大多数管理操作都从命令行和 Web UI 中可用,但某些任务只能从命令行执行。
注意
本节仅提供 ipa 子命令的一般信息。其它专用于 IdM 管理区域的部分提供了更多信息。例如,有关使用 ipa 子命令管理用户条目的详情,请参考 第 11 章 管理用户帐户

5.3.1. 获取 ipa 命令的帮助信息

ipa 脚本可以显示关于特定子命令的帮助信息: 主题。要显示可用主题列表,请使用 ipa help topics 命令:
$ ipa help topics

automember         Auto Membership Rule.
automount          Automount
caacl              Manage CA ACL rules.
...
要显示特定主题的帮助信息,请使用 ipa help topic_name 命令。例如,显示有关 自动成员 主题的信息:
$ ipa help automember

Auto Membership Rule.

Bring clarity to the membership of hosts and users by configuring inclusive
or exclusive regex patterns, you can automatically assign a new entries into
a group or hostgroup based upon attribute information.

...

EXAMPLES:

 Add the initial group or hostgroup:
   ipa hostgroup-add --desc="Web Servers" webservers
   ipa group-add --desc="Developers" devel
...
ipa 脚本还可以显示可用的 ipa 命令列表。要做到这一点,请使用 ipa help 命令
$ ipa help commands
automember-add                         Add an automember rule.
automember-add-condition               Add conditions to an automember rule.
...
有关单个 ipa 命令的详细帮助,请在命令中添加 --help 选项。例如:
$ ipa automember-add --help

Usage: ipa [global-options] automember-add AUTOMEMBER-RULE [options]

Add an automember rule.
Options:
  -h, --help            show this help message and exit
  --desc=STR            A description of this auto member rule
...
有关 ipa 工具程序的详情请参考 ipa(1) man page。

5.3.2. 设置值列表

IdM 在列表中存储条目属性。例如:
ipaUserSearchFields: uid,givenname,sn,telephonenumber,ou,title
对属性列表的任何更新都会覆盖上一个列表。例如,尝试通过仅指定此属性来添加单个属性,将之前定义的整个列表替换为单个新属性。因此,在更改属性列表时,您必须指定整个更新列表。
IdM 支持以下提供属性列表的方法:
  • 在同一命令调用中多次使用相同的命令行参数。例如:
    $ ipa permission-add --permissions=read --permissions=write --permissions=delete
  • 将列表括在大括号中,以允许 shell 进行扩展。例如:
    $ ipa permission-add --permissions={read,write,delete}

5.3.3. 使用特殊字符

当在包含特殊字符的 ipa 命令中传递命令行参数时,如 angle 括号(< 和 >)、ampersand (&)、星号或垂直栏(|),您必须使用反斜杠(\)转义这些字符。例如,要转义星号(*):
$ ipa certprofile-show certificate_profile --out=exported\*profile.cfg
包含未转义特殊字符的命令无法按预期工作,因为 shell 无法正确解析这些字符。

5.3.4. 搜索 IdM 条目

列出 IdM 条目
使用 ipa114-find 命令搜索特定类型的 IdM 条目。例如:
  • 要列出所有用户,请执行以下操作:
    $ ipa user-find
    ---------------
    4 users matched
    ---------------
      ...
  • 列出其指定属性包含 关键字的用户组
    $ ipa group-find keyword
    ----------------
    2 groups matched
    ----------------
      ...
    要配置属性 IdM 搜索用户和用户组,请参阅 第 13.5 节 “为用户和组设置搜索属性”
在搜索用户组时,您还可以将搜索结果限制为包含特定用户的组:
$ ipa group-find --user=user_name
您还可以搜索不包含特定用户的组:
$ ipa group-find --no-user=user_name
显示 entry Enicular Entry 的详情
使用 ipa *-show 命令显示特定 IdM 条目的详情。例如:
$ ipa host-show server.example.com
 Host name: server.example.com
 Principal name: host/server.example.com@EXAMPLE.COM
 ...
5.3.4.1. 调整搜索大小和时间限制
某些搜索结果(如查看用户列表)可能会返回大量条目。通过调整这些搜索操作,您可以在运行 ipa thefind 命令时提高整体服务器性能,如 ipa user-find,以及在 web UI 中显示对应的列表时。
搜索大小限制:
  • 定义从客户端、IdM 命令行工具或 IdM Web UI 发送到服务器的请求的最大条目数。
  • 默认值:100 个条目.
搜索时间限制:
  • 定义服务器等待搜索运行的最长时间。搜索达到此限制后,服务器将停止搜索并返回在该时间发现的条目。
  • 默认值:2 秒.
如果您将值设为 -1,IdM 在搜索时不会应用任何限制。
重要
如果设置的搜索大小或时间限制太大,则可能会对服务器性能造成负面影响。
Web UI:调整搜索大小和时间限制
为所有查询在全局范围内调整限制:
  1. 选择 IPA ServerConfiguration
  2. 搜索选项区域中设置所需的值。
  3. 点页面顶部的 Save
命令行:调整搜索大小和时间限制
要在全局范围内调整所有查询的限制,请使用 ipa config-mod 命令,并添加 --searchrecordslimit--searchtimelimit 选项。例如:
$ ipa config-mod --searchrecordslimit=500 --searchtimelimit=5
在命令行中,您还可以仅针对特定查询调整限值。为此,可在命令中添加 --sizelimit--timelimit 选项。例如:
$ ipa user-find --sizelimit=200 --timelimit=120
重要
请注意,使用带有 --searchrecordslimit 或 --searchtimelimit 选项的 ipa config-mod 命令调整大小或时间限制会影响 ipa命令返回的条目数量,如 ipa user-find
除了这些限制外,还会考虑在 Directory 服务器级别上配置的设置,并且可能会实施更严格的限制。有关目录服务器限制的更多信息,请参阅 红帽目录服务器管理指南

5.4. The IdM Web UI

Identity Management Web UI 是一个用于 IdM 管理的 Web 应用。它具有 ipa 命令行工具的大部分功能。因此,用户可以选择是否要从 UI 管理 IdM,还是从命令行管理 IdM。
注意
供登录用户使用的管理操作取决于用户的访问权限。对于具有管理特权的 admin 用户和其他用户,所有管理任务都可用。对于普通用户,只能使用与其自身用户帐户相关的一组有限操作。

5.4.1. 支持的 Web 浏览器

身份管理支持以下浏览器来连接到 Web UI:
  • Mozilla Firefox 38 及更新的版本
  • Google Chrome 46 及更新的版本

5.4.2. 访问 Web UI 和身份验证

Web UI 可以从 IdM 服务器和客户端机器以及 IdM 域外的计算机访问。但是,要从非域机器访问 UI,您必须首先将非 IdM 系统配置为能够连接到 IdM Kerberos 域;如需更多详情,请参阅 第 5.4.4 节 “配置外部系统以进行 Kerberos 身份验证到 Web UI”
5.4.2.1. 访问 Web UI
要访问 Web UI,在浏览器地址栏中输入 IdM 服务器 URL:
https://server.example.com
这会在浏览器中打开 IdM Web UI 登录屏幕。

图 5.1. Web UI 登录屏幕

Web UI 登录屏幕
5.4.2.2. 可用的登录方法
用户可以通过以下方式验证 Web UI:
带有活跃的 Kerberos ticket
如果用户有通过 kinit 工具获取的有效 TGT,请单击 Login 会自动验证用户。请注意,浏览器必须配置正确,以支持 Kerberos 身份验证。
有关获取 Kerberos TGT 的详情请参考 第 5.2 节 “使用 Kerberos 登录 IdM”。有关配置浏览器的详情请参考 第 5.4.3 节 “为 Kerberos 身份验证配置浏览器”
通过提供用户名和密码
要使用用户名和密码进行身份验证,请在 Web UI 登录屏幕中输入用户名和密码。
IdM 还支持一次性密码(OTP)身份验证。如需更多信息,请参阅 第 22.3 节 “一次性密码”
使用智能卡
用户成功进行身份验证后,会打开 IdM 管理窗口。

图 5.2. IdM Web UI 布局

IdM Web UI 布局
5.4.2.3. Web UI 会话长度
当用户使用用户名和密码登录到 IdM Web UI 时,会话长度与在登录操作过程中获得的 Kerberos 票据的过期期限相同。
5.4.2.4. 以 AD 用户身份向 IdM Web UI 进行身份验证
Active Directory(AD)用户可以使用其用户名和密码登录 IdM Web UI。在 Web UI 中,AD 用户只能执行与其自己的用户帐户相关的一组有限操作,这与能够执行与其管理权限相关的管理操作的 IdM 用户不同。
要为 AD 用户启用 Web UI 登录,IdM 管理员必须为 Default Trust View 中的每个 AD 用户定义一个 ID 覆盖。例如:
[admin@server ~]$ ipa idoverrideuser-add 'Default Trust View' ad_user@ad.example.com
有关 AD 中 ID 视图的详情,请参阅 Windows 集成指南中的 在 Active Directory 环境中使用 ID 视图

5.4.3. 为 Kerberos 身份验证配置浏览器

要使用 Kerberos 凭证启用身份验证,您必须将浏览器配置为支持 Kerberos 协商来访问 IdM 域。请注意,如果您的浏览器没有为 Kerberos 身份验证正确配置,则在点 IdM Web UI 登录屏幕上的 Login 后会出现错误消息。

图 5.3. Kerberos 身份验证错误

Kerberos 身份验证错误
您可以通过三种方法为 Kerberos 身份验证配置浏览器:
注意
系统级身份验证指南包括对 Firefox Kerberos 配置进行故障排除。如果 Kerberos 身份验证无法正常工作,请参阅此故障排除指南以了解更多信息。
Web UI 中的自动 Firefox 配置
从 IdM Web UI 自动配置 Firefox:
  1. 在 Web UI 登录屏幕上,单击浏览器配置的链接。
  2. 选择 Firefox 配置的链接,以打开 Firefox 配置页面。
  3. 按照 Firefox 配置页面上的步骤操作。
从命令行自动配置 Firefox
在 IdM 客户端安装过程中,可以从命令行配置 Firefox。要做到这一点,在使用 ipa-client-install 工具安装 IdM 客户端时使用 --configure-firefox 选项:
# ipa-client-install --configure-firefox
configure -firefox 选项创建一个全局配置文件,该文件具有默认 Firefox 设置,可启用单点登录(SSO)的 Kerberos。
手动浏览器配置
手动配置浏览器:
  1. 在 Web UI 登录屏幕上,单击浏览器配置的链接。
  2. 选择 链接以进行手动浏览器配置。
  3. 查看相关说明以配置浏览器并按照步骤操作。

5.4.4. 配置外部系统以进行 Kerberos 身份验证到 Web UI

要从不属于 IdM 域的系统启用 Web UI 的 Kerberos 身份验证,您必须在外部机器上定义 IdM 特定的 Kerberos 配置文件。当您的基础架构包含多个域或重叠域时,在外部系统上启用 Kerberos 身份验证非常有用。
创建 Kerberos 配置文件:
  1. /etc/krb5.conf 文件从 IdM 服务器复制到外部机器。例如:
    # scp /etc/krb5.conf root@externalmachine.example.com:/etc/krb5_ipa.conf
    警告
    不要覆盖外部计算机上的现有的 krb5.conf 文件。
  2. 在外部机器上,将终端会话设置为使用复制的 IdM Kerberos 配置文件:
    $ export KRB5_CONFIG=/etc/krb5_ipa.conf
  3. 在外部机器上配置浏览器,如 第 5.4.3 节 “为 Kerberos 身份验证配置浏览器” 所述。
外部系统上的用户现在可以使用 kinit 工具对 IdM 服务器域进行身份验证。

5.4.5. Web UI 中的代理服务器和端口转发

使用代理服务器访问 Web UI 不需要在 IdM 中进行任何额外的配置。
IdM 服务器不支持端口转发。但是,由于可以使用代理服务器,因此可以使用通过 OpenSSH 和 SOCKS 选项的代理转发来配置与端口转发类似的操作。这可以使用 ssh 工具的 -D 选项进行配置;有关使用 -D 的更多信息,请参阅 ssh(1) man page。

第 6 章 管理复制拓扑

本章论述了如何管理身份管理(IdM)域中服务器之间的复制。
注意
本章论述了 Red Hat Enterprise Linux 7.3 中引入的简化拓扑管理。这些步骤需要域级别 1(请参阅 第 7 章 显示和提升域级别)。
有关在域级别 0 管理拓扑的文档,请参阅 第 D.3 节 “管理副本和复制协议”
有关安装初始副本以及复制的基本信息的详情,请参考 第 4 章 安装和卸载身份管理副本

6.1. 解释复制协议、拓扑后缀和拓扑片段

复制协议
存储在 IdM 服务器上的数据会根据复制协议复制:当两台服务器配置了复制协议时,它们将共享其数据。
复制协议始终为现实:数据从第一个副本复制到另一个副本,另一个副本复制到第一个副本。
注意
拓扑后缀
拓扑后缀 存储复制的数据。IdM 支持两种类型的拓扑后缀:domainca。每个后缀代表一个单独的后端,即一个单独的复制拓扑。
配置复制协议时,它会在两个不同的服务器上加入同一类型的两个拓扑后缀。
后缀:dc=示例,dc=com
后缀包含与域相关的所有数据。
当两个副本在其 后缀之间具有复制协议时,它们共享目录数据,如用户、组和策略。
ca 后缀:o=ipaca
ca 后缀包含证书系统组件的数据。它仅存在于安装有证书颁发机构 (CA) 的服务器上。
当两个副本在其 ca 后缀之间具有复制协议时,它们会共享证书数据。

图 6.1. 拓扑后缀

拓扑后缀
在安装新副本时,ipa-replica-install 脚本会在两台服务器之间设置初始拓扑片段。

例 6.1. 查看拓扑缓冲

ipa topologysuffix-find 命令显示拓扑后缀列表:
$ ipa topologysuffix-find
---------------------------
2 topology suffixes matched
---------------------------
  Suffix name: ca
  Managed LDAP suffix DN: o=ipaca

  Suffix name: domain
  Managed LDAP suffix DN: dc=example,dc=com
----------------------------
Number of entries returned 2
----------------------------
拓扑片段
当两个副本的后缀之间有复制协议时,后缀会形成 拓扑片段。每个拓扑片段由一个 左侧节点 和一个 右节点 组成。节点代表在复制协议中加入的服务器。
IdM 中的拓扑片段始终是双向的。每个片段代表两种复制协议:从服务器 A 到服务器 B,以及从服务器 B 到服务器 A。因此,数据会双向复制。

图 6.2. 拓扑片段

拓扑片段

例 6.2. 查看拓扑分段

ipa topologysegment-find 命令显示为域或 CA 后缀配置的当前拓扑片段。例如,对于域后缀:
$ ipa topologysegment-find
Suffix name: domain
-----------------
1 segment matched
-----------------
  Segment name: server1.example.com-to-server2.example.com
  Left node: server1.example.com
  Right node: server2.example.com
  Connectivity: both
----------------------------
Number of entries returned 1
----------------------------
在本例中,域相关的数据仅在两个服务器之间复制: server1.example.comserver1.example.com
要只显示特定片段的详情,请使用 ipa topologysegment-show 命令:
$ ipa topologysegment-show
Suffix name: domain
Segment name: server1.example.com-to-server2.example.com
  Segment name: server1.example.com-to-server2.example.com
  Left node: server1.example.com
  Right node: server2.example.com
  Connectivity: both

6.2. Web UI:使用拓扑图形管理复制拓扑

访问拓扑图形
Web UI 中的拓扑图显示域中服务器之间的关系:
  1. 选择 IPA ServerTopologyTopology Graph
  2. 如果您对拓扑进行任何没有立即反映在图形中的更改,点 Refresh
自定义拓扑视图
您可以通过拖动鼠标来移动独立拓扑节点:

图 6.3. 移动拓扑图形节点

移动拓扑图形节点
您可以使用鼠标 wheel 缩放并缩小拓扑图形:

图 6.4. 缩放拓扑图形

缩放拓扑图形
您可以通过按鼠标左键移动拓扑图形的 Canvas:

图 6.5. 移动拓扑图形 Canvas

移动拓扑图形 Canvas
解释拓扑图形
加入域复制协议中的服务器通过灰色箭头连接。加入 CA 复制协议的服务器通过蓝色箭头连接。
拓扑图示例:推荐的拓扑图示例
图 6.6 “建议的拓扑示例” 显示四个服务器的一个可能推荐的拓扑之一:每个服务器至少连接到两个其他服务器,多个服务器是 CA 主服务器。

图 6.6. 建议的拓扑示例

建议的拓扑示例
拓扑图示例:禁用拓扑
图 6.7 “不鼓励的拓扑示例:单点故障” 中,server1 是一个单点故障。所有其他服务器都与此服务器具有复制协议,但与其他任何服务器均不具有复制协议。因此,如果 server1 出现故障,所有其他服务器将被隔离。
避免创建如下所示的拓扑:

图 6.7. 不鼓励的拓扑示例:单点故障

不鼓励的拓扑示例:单点故障
有关拓扑建议的详情请参考 第 4.2 节 “Replicas 的部署注意事项”

6.2.1. 在两个服务器之间设置复制

  1. 在拓扑图中,将鼠标悬停在其中一个服务器节点上。

    图 6.8. 域或 CA 选项

    域或 CA 选项
  2. 点击 或圆圈的 ca 部分,具体取决于您要创建的拓扑网类型。
  3. 在鼠标指针下会出现代表新复制协议的新箭头。将鼠标移到其他服务器节点,然后单击该节点。

    图 6.9. 创建新分段

    创建新分段
  4. Add Topology Segment 窗口中,单击 Add 以确认新段的属性。
IdM 在两台服务器之间创建一个新的拓扑片段,它们将它们加入到复制协议中。拓扑图现在显示更新的复制拓扑:

图 6.10. 新片段已创建

新片段已创建

6.2.2. 停止两个服务器之间的复制

  1. 单击代表您要删除的复制协议的箭头。这突出显示了箭头。

    图 6.11. 拓扑片段突出显示

    拓扑片段突出显示
  2. 单击 Delete
  3. Confirmation 窗口中,单击 OK
IdM 删除两个服务器之间的拓扑片段,这将删除其复制协议。拓扑图现在显示更新的复制拓扑:

图 6.12. 拓扑片段已删除

拓扑片段已删除

6.3. 命令行:使用 ipa topology Item 命令管理拓扑

6.3.1. 获得拓扑管理命令的帮助

显示用于管理复制拓扑的所有命令:
$ ipa help topology
要显示特定命令的详细帮助,请使用 --help 选项运行它:
$ ipa topologysuffix-show --help

6.3.2. 在两个服务器之间设置复制

  1. 使用 ipa topologysegment-add 命令创建两个服务器的拓扑网段。出现提示时,提供:
    • 所需的拓扑后缀: domainca
      注意
      如果要在 ca 后缀之间创建网段,则两个服务器都必须安装 CA。请参阅 第 26.8 节 “在现有 IdM 域中安装 CA”
    • 左节点和右侧节点,代表两个服务器
    • (可选)片段的自定义名称
    例如:
    $ ipa topologysegment-add
    Suffix name: domain
    Left node: server1.example.com
    Right node: server2.example.com
    Segment name [server1.example.com-to-server2.example.com]: new_segment
    ---------------------------
    Added segment "new_segment"
    ---------------------------
      Segment name: new_segment
      Left node: server1.example.com
      Right node: server2.example.com
      Connectivity: both
    添加新段将加入复制协议中的服务器。
  2. 可选。使用 ipa topologysegment-show 命令验证是否已配置新网段。
    $ ipa topologysegment-show
    Suffix name: domain
    Segment name: new_segment
      Segment name: new_segment
      Left node: server1.example.com
      Right node: server2.example.com
      Connectivity: both

6.3.3. 停止两个服务器之间的复制

  1. 要停止复制,您必须删除服务器之间的对应复制片段。要做到这一点,您需要知道片段名称。
    如果您不知道名称,请使用 ipa topologysegment-find 命令显示所有片段,并在输出中找到所需的片段。出现提示时,请提供所需的拓扑后缀: domainca。例如:
    $ ipa topologysegment-find
    Suffix name: domain
    ------------------
    8 segments matched
    ------------------
      Segment name: new_segment
      Left node: server1.example.com
      Right node: server2.example.com
      Connectivity: both
    
    ...
    
    ----------------------------
    Number of entries returned 8
    ----------------------------
  2. 使用 ipa topologysegment-del 命令删除加入两台服务器的拓扑网段。
    $ ipa topologysegment-del
    Suffix name: domain
    Segment name: new_segment
    -----------------------------
    Deleted segment "new_segment"
    -----------------------------
    删除片段会删除复制协议。
  3. 可选。使用 ipa topologysegment-find 命令验证网段是否不再列出。
    $ ipa topologysegment-find
    Suffix name: domain
    ------------------
    7 segments matched
    ------------------
      Segment name: server2.example.com-to-server3.example.com
      Left node: server2.example.com
      Right node: server3.example.com
      Connectivity: both
    
    ...
    
    ----------------------------
    Number of entries returned 7
    ----------------------------

6.4. 从拓扑中删除服务器

如果适用,IdM 不允许从拓扑中删除服务器:
  • 移除的服务器是唯一连接到其他拓扑其余服务器的服务器;这会导致其他服务器被隔离,这是不允许的
  • 正在删除的服务器是您最后一个 CA 或 DNS 服务器
在这些情况下,尝试会失败并显示错误。例如,在命令行中:
$ ipa server-del
Server name: server1.example.com
Removing server1.example.com from replication topology, please wait...
ipa: ERROR: Server removal aborted:

Removal of 'server1.example.com' leads to disconnected topology in suffix 'domain':
Topology does not allow server server2.example.com to replicate with servers:
  server3.example.com
  server4.example.com
...

6.4.1. Web UI:从拓扑中删除服务器

在不从机器卸载服务器组件的情况下从拓扑中删除服务器组件:
  1. 选择 IPA ServerTopologyIPA Servers
  2. 单击要删除的服务器的名称。

    图 6.13. 选择服务器

    选择服务器
  3. 单击 Delete Server

6.4.2. 命令行:从拓扑中删除服务器

重要
删除服务器是一个不可逆的操作。如果您删除了服务器,将其重新引入拓扑的唯一方法是在机器上安装新副本。
删除 server1.example.com
  1. 在另一台服务器上,运行 ipa server-del 命令来移除 server1.example.com。该命令删除指向服务器的所有拓扑片段:
    [user@server2 ~]$ ipa server-del
    Server name: server1.example.com
    Removing server1.example.com from replication topology, please wait...
    ----------------------------------------------------------
    Deleted IPA server "server1.example.com"
    ----------------------------------------------------------
  2. server1.example.com 上,运行 ipa server-install --uninstall 命令来从机器中卸载服务器组件。
    [root@server1 ~]# ipa server-install --uninstall

6.5. 管理服务器角色

根据在 IdM 服务器中安装的服务,它可以执行各种 服务器角色。例如:CA 服务器、DNS 服务器或密钥恢复机构(KRA)服务器.

6.5.1. 查看服务器角色

Web UI:查看服务器角色
有关支持的服务器角色的完整列表,请参阅 IPA 服务器拓扑服务器角色
  • 缺少 角色状态意味着拓扑中没有服务器执行该角色。
  • 启用 角色状态意味着拓扑中的一个或多个服务器正在执行该角色。

图 6.14. Web UI 中的服务器角色

Web UI 中的服务器角色
命令行:查看服务器角色
ipa config-show 命令显示所有 CA 服务器、NTP 服务器和当前的 CA 续订 master:
$ ipa config-show
  ...
  IPA masters: server1.example.com, server2.example.com, server3.example.com
  IPA CA servers: server1.example.com, server2.example.com
  IPA NTP servers: server1.example.com, server2.example.com, server3.example.com
  IPA CA renewal master: server1.example.com
ipa server-show 命令显示在特定服务器上启用的角色列表。例如,对于 server.example.com 上启用的角色列表:
$ ipa server-show
Server name: server.example.com
  ...
  Enabled server roles: CA server, DNS server, NTP server, KRA server
ipa server-find --servrole 搜索启用了特定服务器角色的所有服务器。例如,要搜索所有 CA 服务器:
$ ipa server-find --servrole "CA server"
---------------------
2 IPA servers matched
---------------------
  Server name: server1.example.com
  ...

  Server name: server2.example.com
  ...
----------------------------
Number of entries returned 2
----------------------------

6.5.2. 将副本提升到主 CA 服务器

注意
本节论述了在域级别 1 中更改 CA 续订 master(请参阅 第 7 章 显示和提升域级别)。有关在域级别 0 更改 CA 续订 master 的文档,请参考 第 D.4 节 “将副本提升到主 CA 服务器”
如果您的 IdM 部署使用嵌入的证书颁发机构(CA),其中一个 IdM CA 服务器充当 master CA:它管理 CA 子系统证书的续订并生成证书撤销列表(CRL)。默认情况下,master CA 是系统管理员使用 ipa-server-installipa-ca-install 命令在其上安装 CA 角色的第一个服务器。
如果您计划使 master CA 服务器离线或停用它,请提升另一个 CA 服务器作为新的 CA 续订 master:
  1. 配置副本以处理 CA 子系统证书续订。
  2. 配置副本以生成 CRL。请参阅 第 6.5.2.2 节 “更改 Which Server Generates CRL”
  3. 在停用之前的 master CA 服务器前,请确保新的 master 正常工作。请参阅 第 6.5.2.3 节 “验证新 master CA 服务器是否配置正确”
6.5.2.1. 更改当前 CA 续订 master
Web UI:更改当前 CA 续订 master
  1. 选择 IPA ServerConfiguration
  2. IPA CA renewal master 字段中,选择新的 CA renewal master。
命令行:更改当前 CA 续订 master
使用 ipa config-mod --ca-renewal-master-server 命令:
$ ipa config-mod --ca-renewal-master-server new_ca_renewal_master.example.com
  ...
  IPA masters: old_ca_renewal_master.example.com, new_ca_renewal_master.example.com
  IPA CA servers: old_ca_renewal_master.example.com, new_ca_renewal_master.example.com
  IPA NTP servers: old_ca_renewal_master.example.com, new_ca_renewal_master.example.com
  IPA CA renewal master: new_ca_renewal_master.example.com
输出确认更新成功。
6.5.2.2. 更改 Which Server Generates CRL
要更改哪个服务器生成证书撤销列表(CRL):
  1. 如果您不知道当前的 CRL 生成 master,在每个 IdM 证书颁发机构(CA)上使用 ipa-crlgen-manage status 命令来确定是否启用了 CRL 生成:
    # ipa-crlgen-manage status
    CRL generation: enabled
  2. 在当前的 CRL 生成 master 上,禁用此功能:
    # ipa-crlgen-manage disable
  3. 在您要配置为新 CRL 生成 master 的其他 CA 主机上,启用此功能:
    # ipa-crlgen-manage enable
6.5.2.3. 验证新 master CA 服务器是否配置正确
确保新的 master CA 服务器上存在 /var/lib/ipa/pki-ca/publish/MasterCRL.bin 文件。
该文件会根据使用 ca.crl.MasterCRL.autoUpdateInterval 参数在 /etc/pki/pki-tomcat/ca/CS.cfg 文件中定义的时间间隔生成。默认值为 240 分钟(4 小时)。
注意
如果您更新 ca.crl.MasterCRL.autoUpdateInterval 参数,则更改将在下一次调度的 CRL 更新后生效。
如果文件存在,则新的 master CA 服务器会被正确配置,您可以安全地忽略之前的 CA master 系统。

6.5.3. Hidden Replicas 的降级和升级

安装副本后,您可以更改副本是隐藏还是可见:
  • 要将可见的副本降级到隐藏的副本:
    1. 如果副本是 CA 续订 master,请将该服务移到另一个副本。详情请查看 第 6.5.2.1 节 “更改当前 CA 续订 master”
    2. 将副本的状态更改为 隐藏
      # ipa server-state replica.idm.example.com --state=hidden
  • 要将隐藏的副本提升到可见的副本,请输入:
    # ipa server-state replica.idm.example.com --state=enabled
注意
隐藏的副本功能在 Red Hat Enterprise Linux 7.7 及更新的版本中作为技术预览提供,因此不受支持。

第 7 章 显示和提升域级别

域级别表示 IdM 拓扑中可用的操作和功能。
域级别 1
可用功能示例:
重要
在 Red Hat Enterprise Linux 7.3 中使用 IdM 版本 4.4 引入了域级别 1。要使用域级别 1 功能,您的所有副本都必须运行红帽企业 Linux 7.3 或更高版本。
如果您的第一个服务器安装了 Red Hat Enterprise Linux 7.3,则您的域的域级别将自动设置为 1。
如果您将所有服务器升级到 IdM 版本 4.4,则不会自动提高域级别。如果要使用域级别 1 功能,请手动提高域级别,如 第 7.2 节 “提高域级别” 所述。
域级别 0
可用功能示例:

7.1. 显示当前域级别

命令行:显示当前域级别
  1. 以管理员身份登录:
    $ kinit admin
  2. 运行 ipa domainlevel-get 命令:
    $ ipa domainlevel-get
    -----------------------
    Current domain level: 0
    -----------------------
Web UI:显示当前域级别
选择 IPA服务器拓扑域级别

7.2. 提高域级别

重要
这是不可逆的操作。如果您将域级别从 0 增加到 1,则无法再次从 1 降级到 0。
命令行:提高域级别
  1. 以管理员身份登录:
    $ kinit admin
  2. 运行 ipa domainlevel-set 命令并提供所需的级别:
    $ ipa domainlevel-set 1
    -----------------------
    Current domain level: 1
    -----------------------
Web UI:提高域级别
  1. 选择 IPA服务器拓扑域级别
  2. 单击 Set Domain Level

第 8 章 更新和迁移身份管理

8.1. 更新身份管理

您可以使用 yum 工具更新系统上的身份管理软件包。
另外,如果有新的次版本 Red Hat Enterprise Linux,如 7.3,yum 会将身份管理服务器或客户端升级到这个版本。
注意
本节不论述将身份管理从 Red Hat Enterprise Linux 6 迁移到 Red Hat Enterprise Linux 7。如果要迁移,请参阅 第 8.2 节 “将身份管理从红帽企业 Linux 6 迁移到版本 7”

8.1.1. 更新身份管理的注意事项

  • 在至少一台服务器上更新 Identity Management 软件包后,拓扑中的所有其他服务器都会接收更新的 schema,即使您没有更新其软件包。这将确保任何使用新模式的新条目都可以在其他服务器之间复制。
  • 不支持降级身份管理软件包。
    重要
    不要在任何 ipa ö 软件包上运行 yum downgrade 命令。
  • 红帽建议只升级到下一个版本。例如,如果您想要升级到 Red Hat Enterprise Linux 7.4 的 Identity Management,我们建议从 Red Hat Enterprise Linux 7.3 的 Identity Management 升级。从较早版本升级可能会导致问题。

8.1.2. 使用 yum 更新身份管理软件包

更新服务器或客户端中的所有身份管理软件包:
# yum update ipa-*
警告
在升级多个身份管理服务器时,请在每次升级之间至少等待 10 分钟。
当两个或更多个服务器同时升级,或在不同升级之间只能简短的间隔,则可能没有足够的时间来在整个拓扑间复制升级后的数据变化,从而会导致复制事件冲突。
相关信息
  • 有关使用 yum 工具的详情,请参考 系统管理员指南中的 Yum
重要
由于 CVE-2014-3566,在 mod_nss 模块中需要禁用安全套接字层版本 3 (SSLv3)协议。您可以通过以下步骤确保:
  1. 编辑 /etc/httpd/conf.d/nss.conf 文件,并将 NSSProtocol 参数设置为 TLSv1.0 (用于向后兼容)、TLSv1.1TLSv1.2
    NSSProtocol TLSv1.0,TLSv1.1,TLSv1.2
  2. 重新启动 httpd 服务。
    # systemctl restart httpd.service
请注意,当启动 yum update ipa 114 命令时,Red Hat Enterprise Linux 7 中的身份管理会自动执行上述步骤来升级主软件包。

8.2. 将身份管理从红帽企业 Linux 6 迁移到版本 7

这个步骤描述了如何将所有数据和配置从 Red Hat Enterprise Linux 6 Identity Management 迁移到 Red Hat Enterprise Linux 7 服务器。迁移步骤包括:
  • 将基于红帽企业 Linux 6 的证书颁发机构(CA)主服务器迁移到红帽企业 Linux 7。
  • 将所有服务转移到新的红帽企业 Linux 7 服务器.这些服务包括 CRL 和证书创建、DNS 管理或 Kerberos KDC 管理。
  • 停用原始 Red Hat Enterprise Linux 6 CA master。
在以下步骤中:
  • rhel7.example.com 是 Red Hat Enterprise Linux 7 系统,它将成为新的 CA master。
    重要
    RHEL 7.9 唯一支持的次版本。确定在您的系统上安装了 RHEL 7.9。
  • rhel6.example.com 是原始 Red Hat Enterprise Linux 6 CA master。
    注意
    要识别哪个 Red Hat Enterprise Linux 6 服务器是主 CA 服务器,请确定 certmonger 服务跟踪 renewal _ca_cert 命令。在 Red Hat Enterprise Linux 6 服务器上运行这个命令:
    [root@rhel6 ~]# getcert list -d /var/lib/pki-ca/alias -n "subsystemCert cert-pki-ca" | grep post-save
    post-save command: /usr/lib64/ipa/certmonger/renew_ca_cert "subsystemCert cert-pki-ca"
    执行 renewal _ca_cert 的 post-save 操作只针对 CA master 定义。

8.2.1. 将身份管理从 Red Hat Enterprise Linux 6 迁移到 7 的先决条件

8.2.2. 更新 Red Hat Enterprise Linux 6 上的身份管理架构

copy-schema-to-ca.py 模式更新脚本为 rhel7.example.com 副本安装准备 rhel6.example.com。由于身份管理版本 3.1 及更高版本之间的 schema 更改,因此需要更新该架构。
  1. copy-schema-to-ca.py 模式更新脚本从 rhel7.example.com 系统复制到 rhel6.example.com 系统。例如:
    [root@rhel7 ~]# scp /usr/share/ipa/copy-schema-to-ca.py root@rhel6:/root/
  2. rhel6.example.com 上运行更新的 copy-schema-to-ca.py 脚本。
    [root@rhel6 ~]# python copy-schema-to-ca.py
    ipa         : INFO     Installed /etc/dirsrv/slapd-PKI-IPA//schema/60kerberos.ldif
    [... output truncated ...]
    ipa         : INFO     Schema updated successfully
  3. 在连接到 Red Hat Enterprise Linux 7 副本前,在每个运行证书颁发机构的 Red Hat Enterprise Linux 6 IdM 副本上重复这些步骤。

8.2.3. 安装 Red Hat Enterprise Linux 7 Replica

  1. rhel6.example.com 系统上,创建用于安装 rhel7.example.com 副本的副本文件。例如,要为 rhel7.example.com 创建一个副本文件,其 IP 地址为 192.0.2.1
    [root@rhel6 ~]# ipa-replica-prepare rhel7.example.com --ip-address 192.0.2.1
    
    Directory Manager (existing master) password:
    Preparing replica for rhel7.example.com from rhel6.example.com
    [... output truncated ...]
    The ipa-replica-prepare command was successful
  2. 将副本信息文件从 rhel6.example.com 复制到 rhel7.example.com
    [root@rhel6 ~]# scp /var/lib/ipa/replica-info-replica.example.com.gpg root@rhel7:/var/lib/ipa/
  3. 如果您在 Red Hat Enterprise Linux 7.6 或更高版本中安装带有集成 CA 的新副本,请将以下条目附加到 /etc/httpd/conf.d/nss.conf 文件中的 NSSCipherSuite 参数的末尾:
    +ecdhe_rsa_aes_128_sha,+ecdhe_rsa_aes_256_sha
    在 Red Hat Enterprise Linux 7.6 或更高版本中,IdM CA 中不再启用某些密码。如果没有将此条目添加到配置中,在 Red Hat Enterprise Linux 7.6 上设置带有集成 CA 的 IdM 服务器作为在 Red Hat Enterprise Linux 6 上运行的 master 的副本会失败,并显示 CRITICAL Failed 来配置 CA 实例 错误。
  4. 使用副本文件安装 rhel7.example.com 副本。例如,以下命令使用以下选项:
    • --setup-ca 用来设置证书系统组件
    • --setup-dns--forwarder 来配置集成的 DNS 服务器并设置转发器
    • --ip-address 指定 rhel7.example.com 系统的 IP 地址
    [root@rhel7 ~]# ipa-replica-install /var/lib/ipa/replica-info-rhel7.example.com.gpg --setup-ca --ip-address 192.0.2.1 --setup-dns --forwarder 192.0.2.20
    Directory Manager (existing master) password:
    
    Checking DNS forwarders, please wait ...
    Run connection check to master
    [... output truncated ...]
    Client configuration complete.
    另请参阅:
  5. 验证身份管理服务是否在 rhel7.example.com 上运行。
    [root@rhel7 ~]# ipactl status
    Directory Service: RUNNING
    [... output truncated ...]
    ipa: INFO: The ipactl command was successful

8.2.4. 将 CA 服务转换到 Red Hat Enterprise Linux 7 服务器

开始前:
  • 验证 rhel6.example.comrhel7.example.com CA 是否都配置为主服务器。
    [root@rhel7 ~]$ kinit admin
    [root@rhel7 ~]$ ipa-csreplica-manage list
    rhel6.example.com: master
    rhel7.example.com: master
    显示复制协议的详情:
    [root@rhel7 ~]# ipa-csreplica-manage list --verbose rhel7.example.com
    rhel7.example.com
    last init status: None
    last init ended: 1970-01-01 00:00:00+00:00
    last update status: Error (0) Replica acquired successfully: Incremental update succeeded
    last update ended: 2017-02-13 13:55:13+00:00
rhel6.example.com 原始 master CA 上,停止 CA 子系统证书续订:
  1. 禁用跟踪原始 CA 证书。
    [root@rhel6 ~]# getcert stop-tracking -d /var/lib/pki-ca/alias -n "auditSigningCert cert-pki-ca"
    Request "20201127184547" removed.
    [root@rhel6 ~]# getcert stop-tracking -d /var/lib/pki-ca/alias -n "ocspSigningCert cert-pki-ca"
    Request "20201127184548" removed.
    [root@rhel6 ~]# getcert stop-tracking -d /var/lib/pki-ca/alias -n "subsystemCert cert-pki-ca"
    Request "20201127184549" removed.
    [root@rhel6 ~]# getcert stop-tracking -d /etc/httpd/alias -n ipaCert
    Request "20201127184550" removed.
  2. 重新配置 rhel6.example.com,以从新的 master CA 检索更新的证书。
    1. 将续订帮助程序脚本复制到 certmonger 服务目录中,并设置适当的权限。
      [root@rhel6 ~]# cp /usr/share/ipa/ca_renewal /var/lib/certmonger/cas/
      [root@rhel6 ~]# chmod 0600 /var/lib/certmonger/cas/ca_renewal
    2. 更新 SELinux 配置。
      [root@rhel6 ~]# restorecon /var/lib/certmonger/cas/ca_renewal
    3. 重新启动 certmonger
      [root@rhel6 ~]# service certmonger restart
    4. 检查 CA 是否已列出以检索证书。
      [root@rhel6 ~]# getcert list-cas
      ...
      CA 'dogtag-ipa-retrieve-agent-submit':
              is-default: no
              ca-type: EXTERNAL
      	helper-location: /usr/libexec/certmonger/dogtag-ipa-retrieve-agent-submit
    5. 获取 CA 证书数据库 PIN。
      [root@rhel6 ~]# grep internal= /var/lib/pki-ca/conf/password.conf
    6. 配置 certmonger 以跟踪外部续订的证书。这需要数据库 PIN。
      [root@rhel6 ~]# getcert start-tracking \
          -c dogtag-ipa-retrieve-agent-submit \
          -d /var/lib/pki-ca/alias \
          -n "auditSigningCert cert-pki-ca" \
          -B /usr/lib64/ipa/certmonger/stop_pkicad \
          -C '/usr/lib64/ipa/certmonger/restart_pkicad \
          "auditSigningCert cert-pki-ca"' \
          -T "auditSigningCert cert-pki-ca" \
          -P database_pin
      New tracking request "20201127184743" added.
      [root@rhel6 ~]# getcert start-tracking \
          -c dogtag-ipa-retrieve-agent-submit \
          -d /var/lib/pki-ca/alias \
          -n "ocspSigningCert cert-pki-ca" \
          -B /usr/lib64/ipa/certmonger/stop_pkicad \
          -C '/usr/lib64/ipa/certmonger/restart_pkicad \
          "ocspSigningCert cert-pki-ca"' \
          -T "ocspSigningCert cert-pki-ca" \
          -P database_pin
      New tracking request "20201127184744" added.
      [root@rhel6 ~]# getcert start-tracking \
          -c dogtag-ipa-retrieve-agent-submit \
          -d /var/lib/pki-ca/alias \
          -n "subsystemCert cert-pki-ca" \
          -B /usr/lib64/ipa/certmonger/stop_pkicad \
          -C '/usr/lib64/ipa/certmonger/restart_pkicad \
          "subsystemCert cert-pki-ca"' \
          -T "subsystemCert cert-pki-ca" \
          -P database_pin
      New tracking request "20201127184745" added.
      [root@rhel6 ~]# getcert start-tracking \
          -c dogtag-ipa-retrieve-agent-submit \
          -d /etc/httpd/alias \
          -n ipaCert \
          -C /usr/lib64/ipa/certmonger/restart_httpd \
          -T ipaCert \
          -p /etc/httpd/alias/pwdfile.txt
      New tracking request "20201127184746" added.
将 CRL 生成从原始 rhel6.example.com CA master 移到 rhel7.example.com
  1. rhel6.example.com 上,停止 CRL 生成:
    1. 停止 CA 服务。
      [root@rhel6 ~]# service pki-cad stop
    2. rhel6.example.com 中禁用 CRL 生成。打开 /var/lib/pki-ca/conf/CS.cfg 文件,并将 ca.crl.MasterCRL.enableCRLCacheca.crl.MasterCRLUpdates 参数的值设置为 false
      ca.crl.MasterCRL.enableCRLCache=false
      ca.crl.MasterCRL.enableCRLUpdates=false
    3. 启动 CA 服务。
      [root@rhel6 ~]# service pki-cad start
  2. rhel6.example.com 上,将 Apache 配置为重定向 CRL 请求:
    1. 打开 /etc/httpd/conf.d/ipa-pki-proxy.conf 文件,取消注释 RewriteRule 条目:
      RewriteRule ^/ipa/crl/MasterCRL.bin https://rhel6.example.com/ca/ee/ca/getCRL?op=getCRL&crlIssuingPoint=MasterCRL [L,R=301,NC]
      注意
      不要替换 URL 中的服务器主机名。URL 必须引用本地主机名。
    2. 重新启动 Apache.
      [root@rhel6 ~]# service httpd restart
    IdM 现在从本地 CA 获取证书撤销列表(CRL),而不是从本地文件获取。
  3. rhel7.example.com 上,将 rhel7.example.com 配置为新的 CA master:
    1. 配置 rhel7.example.com 以处理 CA 子系统证书续订,如 第 D.4.1 节 “更改 Which 服务器处理证书续订” 所述。
    2. rhel7.example.com 配置为常规证书撤销列表(CRL),如 第 6.5.2.2 节 “更改 Which Server Generates CRL” 所述。
相关信息

8.2.5. 停止 Red Hat Enterprise Linux 6 服务器

停止 rhel6.example.com 上的所有服务,将域发现强制到新的 rhel7.example.com 服务器。
[root@rhel6 ~]# ipactl stop
Stopping CA Service
Stopping pki-ca:                                           [  OK  ]
Stopping HTTP Service
Stopping httpd:                                            [  OK  ]
Stopping MEMCACHE Service
Stopping ipa_memcached:                                    [  OK  ]
Stopping DNS Service
Stopping named: .                                          [  OK  ]
Stopping KPASSWD Service
Stopping Kerberos 5 Admin Server:                          [  OK  ]
Stopping KDC Service
Stopping Kerberos 5 KDC:                                   [  OK  ]
Stopping Directory Service
Shutting down dirsrv:
    EXAMPLE-COM...                                         [  OK  ]
    PKI-IPA...                                             [  OK  ]
之后,使用 ipa 实用程序将通过远程过程调用(RPC)联系新的服务器。

8.2.6. 在迁移主 CA 服务器后,下一步

对于拓扑中的每个 Red Hat Enterprise Linux 6 服务器:
  1. rhel7.example.com 创建副本文件。
    注意
    从 Red Hat Enterprise Linux 6 服务器安装 Red Hat Enterprise Linux 7 副本后,身份管理域的域级别会自动设置为 0。
    Red Hat Enterprise Linux 7.3 引进了一种更简单的方式来安装和管理副本。要使用这些功能,您的拓扑必须在域级别 1 上。请参阅 第 7 章 显示和提升域级别
  2. 使用副本文件在另一个 Red Hat Enterprise Linux 7 系统上安装新副本。
要取消使用 Red Hat Enterprise Linux 6 服务器:
  • 通过在 Red Hat Enterprise Linux 7 服务器中执行移除命令,从拓扑中删除服务器。
重要
客户端配置不会自动更新。如果您取消授权 IDM 服务器并使用不同的名称配置了新服务器,您应该检查整个客户端配置。特别是,您必须手动更新以下文件:
  • /etc/openldap/ldap.conf
  • /etc/ipa/default.conf
  • /etc/sssd/sssd.conf

第 9 章 备份和恢复身份管理

Red Hat Enterprise Linux Identity Management 提供了手动备份和恢复 IdM 系统的解决方案,例如当服务器停止正确执行或数据丢失时。在备份过程中,系统会创建一个目录,其中包含您的 IdM 设置信息并存储它。在恢复过程中,您可以使用这个备份目录使原始 IdM 设置返回。
重要
只有在您无法从部署的其余部分中重建丢失的 IdM 服务器组部分时,才使用本章中描述的备份和恢复步骤,方法是重新安装丢失的副本作为剩余服务器的副本。
IdM/IPA 中的 "Backup 和 Restore in IdM/IPA"知识库解决方案 描述了如何通过维护多个服务器副本来避免损失。最好从具有相同数据的现有副本中重建,因为备份版本通常包含较旧的信息,因此可能会过期的信息。
备份和恢复可防止的潜在威胁情况包括:
  • 机器上的灾难性硬件故障发生,机器变得无法进一步运行。在这种情况下:
    1. 从头开始重新安装操作系统。
    2. 配置相同主机名、完全限定域名(FQDN)和 IP 地址的计算机。
    3. 安装 IdM 软件包,以及与原始系统中存在的 IdM 相关的所有其他可选软件包。
    4. 恢复 IdM 服务器的完整备份。
  • 在隔离的机器上进行升级会失败。操作系统仍然可以正常工作,但 IdM 数据已损坏,因此您要将 IdM 系统恢复到已知良好的状态。
    重要
    如果出现硬件或升级失败(如上述两项),只有在所有副本或具有特殊角色(如唯一证书颁发机构(CA))的副本都已丢失时才从备份中进行恢复。如果仍存在具有相同数据的副本,建议删除丢失的副本,然后将其从剩余副本中重建。
  • 对 LDAP 内容进行了不必要的更改,例如删除了条目,您想要恢复它们。恢复备份的 LDAP 数据会将 LDAP 条目返回到之前的状态,而不影响 IdM 系统本身。
恢复的服务器成为 IdM 的唯一信息来源;其他 master 服务器是从恢复的服务器重新初始化的。最后一次备份后创建的所有数据都将丢失。因此,您不应该使用备份和恢复解决方案进行正常的系统维护。如果可能,请始终通过将丢失的服务器重新安装为副本来重建丢失的服务器。
备份和恢复功能只能从命令行管理,在 IdM Web UI 中不可用。

9.1. 仅备份全服务器备份和恢复

IdM 提供两个备份选项:
全 IdM 服务器备份
全服务器备份会创建所有 IdM 服务器文件的备份副本以及 LDAP 数据,这使其成为独立备份。IdM 会影响数百个文件;备份过程复制的文件是整个目录和特定文件(如配置文件或日志文件)的组合,并与 IdM 依赖的各种服务直接相关。由于全服务器备份是原始文件备份,因此它会脱机执行。执行 full-server 备份的脚本停止所有 IdM 服务,以确保备份过程的安全。
有关完整服务器备份副本的文件和目录的完整列表,请查看 第 9.1.3 节 “备份期间目录和文件绑定列表”
只数据备份
仅数据备份仅创建 LDAP 数据的备份副本以及 changelog。进程备份 IPA-REALM 实例,也可以备份多个后端或只有一个后端;后端包括 IPA 后端和 CA Dogtag 后端。这种类型的备份还会备份以 LDIF(LDAP 数据交换格式)存储的 LDAP 内容记录。仅数据备份可以在线和脱机执行。
默认情况下,IdM 将创建的备份存储在 /var/lib/ipa/backup/ 目录中。包含备份的子目录的命名约定有:
  • ipa-full-YEAR-MM-DD-HH-MM-SS (全服务器备份)中的 ipa-full-YEAR-MM-DD-HH-MM-SS
  • ipa-data-YEAR-MM-DD-HH-MM-SS (仅数据备份)中的 ipa-data-YEAR-MM-DD-HH-MM-SS

9.1.1. 创建备份

使用 ipa-backup 工具创建全服务器和仅数据备份,必须始终以 root 用户身份运行。
要创建全服务器备份,请运行 ipa-backup
重要
执行全服务器备份会停止所有 IdM 服务,因为进程必须离线运行。IdM 服务将在备份完成后再次启动。
要创建仅数据备份,请运行 ipa-backup --data 命令。
您可以在 ipa-backup 中添加几个附加选项:
  • --online 执行在线备份 ; 这个选项仅适用于仅数据备份
  • --logs 在备份中包含 IdM 服务日志文件
有关使用 ipa-backup 的详情,请参考 ipa-backup(1) man page。
9.1.1.1. 在备份过程中,在卷不足时工作空间不足
本节论述了如何解决 IdM 备份过程中涉及的目录存储在空闲空间不足的卷中的问题。
卷中含有 /var/lib/ipa/backup/ 的空间不足
如果 /var/lib/ipa/backup/ 目录存储在空闲空间不足的卷中,则无法创建备份。要解决这个问题,请使用以下临时解决方案之一:
  • 在不同的卷上创建一个目录,并将其链接到 /var/lib/ipa/backup/。例如,如果 /home 存储在有足够可用空间的不同卷中:
    1. 创建目录,如 /home/idm/backup/
      # mkdir -p /home/idm/backup/
    2. 将以下权限设置为该目录:
      # chown root:root /home/idm/backup/
      # chmod 700 /home/idm/backup/
    3. 如果 /var/lib/ipa/backup/ 包含现有的备份,请将其移到新目录中:
      # mv /var/lib/ipa/backup/* /home/idm/backup/
    4. 删除 /var/lib/ipa/backup/ 目录:
      # rm -rf /var/lib/ipa/backup/
    5. 创建 /var/lib/ipa/backup/ 链接到 /home/idm/backup/ 目录:
      # ln -s /home/idm/backup/ /var/lib/ipa/backup/
  • 将存储在不同卷上的目录挂载到 /var/lib/ipa/backup/。例如,如果 /home 存储在具有足够可用空间的不同卷中,请创建 /home/idm/backup/,并将其挂载到 /var/lib/ipa/backup/
    1. 创建 /home/idm/backup/ 目录:
      # mkdir -p /home/idm/backup/
    2. 将以下权限设置为该目录:
      # chown root:root /home/idm/backup/
      # chmod 700 /home/idm/backup/
    3. 如果 /var/lib/ipa/backup/ 包含现有的备份,请将其移到新目录中:
      # mv /var/lib/ipa/backup/* /home/idm/backup/
    4. /home/idm/backup/ 挂载到 /var/lib/ipa/backup/
      # mount -o bind /home/idm/backup/ /var/lib/ipa/backup/
    5. 要在系统引导时自动挂载 /home/idm/backup//var/lib/ipa/backup/,请在 /etc/fstab 文件中附加以下内容:
      /home/idm/backup/     /var/lib/ipa/backup/     none     bind     0 0
卷中含有 /tmp 的空间不足
如果因为 /tmp 目录中空间不足造成备份失败,请使用 TMPDIR 环境变量更改在备份期间创建的暂存文件的位置:
# TMPDIR=/path/to/backup ipa-backup
详情请查看 ipa-backup 命令无法完成 知识库解决方案。

9.1.2. 加密备份

您可以使用 GNU Privacy Guard(GPG)加密 IdM 备份。
创建 GPG 密钥:
  1. 创建包含密钥详情的 keygen 文件,例如运行 cat >keygen <<EOF 并在命令行中提供所需的加密详情:
    [root@server ~]# cat >keygen <<EOF
    > %echo Generating a standard key
    > Key-Type: RSA
    > Key-Length:2048
    > Name-Real: IPA Backup
    > Name-Comment: IPA Backup
    > Name-Email: root@example.com
    > Expire-Date: 0
    > %pubring /root/backup.pub
    > %secring /root/backup.sec
    > %commit
    > %echo done
    > EOF
    [root@server ~]#
  2. 生成名为 backup 的新密钥对,并将 keygen 的内容提供给命令。以下示例生成了一个名为 /root/ backup.sec 和 / root /backup.pub 的密钥对
    [root@server ~]# gpg --batch --gen-key keygen
    [root@server ~]# gpg --no-default-keyring --secret-keyring /root/backup.sec \
    		     --keyring /root/backup.pub --list-secret-keys
要创建 GPG 加密备份,请通过提供以下选项将生成的 备份密钥传递给 ipa- backup
  • --GPG,它指示 ipa-backup 执行加密的备份
  • --GPG-keyring=GPG_KEYRING,它提供了 GPG 密钥环的完整路径,而无需文件扩展名。
例如:
[root@server ~]# ipa-backup --gpg --gpg-keyring=/root/backup
注意
如果您的系统使用 gpg2 工具生成 GPG 密钥,您可能会遇到问题,因为 gpg2 需要外部程序才能正常工作。要在这种情况下从控制台生成密钥,请在生成密钥前将 pinentry-program /usr/bin/pinentry-curses 行添加到 .gnupg/gpg-agent.conf 文件中。

9.1.3. 备份期间目录和文件绑定列表

目录:
/usr/share/ipa/html
/root/.pki
/etc/pki-ca
/etc/pki/pki-tomcat
/etc/sysconfig/pki
/etc/httpd/alias
/var/lib/pki
/var/lib/pki-ca
/var/lib/ipa/sysrestore
/var/lib/ipa-client/sysrestore
/var/lib/ipa/dnssec
/var/lib/sss/pubconf/krb5.include.d/
/var/lib/authconfig/last
/var/lib/certmonger
/var/lib/ipa
/var/run/dirsrv
/var/lock/dirsrv
文件:
/etc/named.conf
/etc/named.keytab
/etc/resolv.conf
/etc/sysconfig/pki-ca
/etc/sysconfig/pki-tomcat
/etc/sysconfig/dirsrv
/etc/sysconfig/ntpd
/etc/sysconfig/krb5kdc
/etc/sysconfig/pki/ca/pki-ca
/etc/sysconfig/ipa-dnskeysyncd
/etc/sysconfig/ipa-ods-exporter
/etc/sysconfig/named
/etc/sysconfig/ods
/etc/sysconfig/authconfig
/etc/ipa/nssdb/pwdfile.txt
/etc/pki/ca-trust/source/ipa.p11-kit
/etc/pki/ca-trust/source/anchors/ipa-ca.crt
/etc/nsswitch.conf
/etc/krb5.keytab
/etc/sssd/sssd.conf
/etc/openldap/ldap.conf
/etc/security/limits.conf
/etc/httpd/conf/password.conf
/etc/httpd/conf/ipa.keytab
/etc/httpd/conf.d/ipa-pki-proxy.conf
/etc/httpd/conf.d/ipa-rewrite.conf
/etc/httpd/conf.d/nss.conf
/etc/httpd/conf.d/ipa.conf
/etc/ssh/sshd_config
/etc/ssh/ssh_config
/etc/krb5.conf
/etc/ipa/ca.crt
/etc/ipa/default.conf
/etc/dirsrv/ds.keytab
/etc/ntp.conf
/etc/samba/smb.conf
/etc/samba/samba.keytab
/root/ca-agent.p12
/root/cacert.p12
/var/kerberos/krb5kdc/kdc.conf
/etc/systemd/system/multi-user.target.wants/ipa.service
/etc/systemd/system/multi-user.target.wants/sssd.service
/etc/systemd/system/multi-user.target.wants/certmonger.service
/etc/systemd/system/pki-tomcatd.target.wants/pki-tomcatd@pki-tomcat.service
/var/run/ipa/services.list
/etc/opendnssec/conf.xml
/etc/opendnssec/kasp.xml
/etc/ipa/dnssec/softhsm2.conf
/etc/ipa/dnssec/softhsm_pin_so
/etc/ipa/dnssec/ipa-ods-exporter.keytab
/etc/ipa/dnssec/ipa-dnskeysyncd.keytab
/etc/idm/nssdb/cert8.db
/etc/idm/nssdb/key3.db
/etc/idm/nssdb/secmod.db
/etc/ipa/nssdb/cert8.db
/etc/ipa/nssdb/key3.db
/etc/ipa/nssdb/secmod.db
日志文件和目录:
/var/log/pki-ca
/var/log/pki/
/var/log/dirsrv/slapd-PKI-IPA
/var/log/httpd
/var/log/ipaserver-install.log
/var/log/kadmind.log
/var/log/pki-ca-install.log
/var/log/messages
/var/log/ipaclient-install.log
/var/log/secure
/var/log/ipaserver-uninstall.log
/var/log/pki-ca-uninstall.log
/var/log/ipaclient-uninstall.log
/var/named/data/named.run

9.2. 恢复备份

如果您有使用 ipa-backup 创建备份的目录,您可以将 IdM 服务器或 LDAP 内容恢复到执行备份时的状态。您不能在不同于最初创建备份的主机的主机上恢复备份。
注意
卸载 IdM 服务器不会自动删除此服务器的备份。

9.2.1. 从 Full-Server 或 Data-onlyly Backup 中恢复

重要
建议您先卸载服务器,然后再对其执行全服务器恢复。
全服务器和仅数据备份都使用 ipa-restore 工具进行恢复,必须始终以 root 用户身份运行。将备份传递给命令:
  • 如果目录位于默认的 /var/lib/ipa/backup/ 目录中,则仅传递带有备份的目录名称。
  • 如果包含备份的目录不在默认目录中,则向备份传递完整路径。例如:
    [root@server ~]# ipa-restore /path/to/backup
ipa-restore 工具自动检测备份目录包含哪些类型的备份,默认执行同一类型的恢复。
您可以在 ipa-restore 中添加以下选项:
  • --data 从全服务器备份中执行仅数据恢复,即,仅从包含全服务器备份的备份目录中恢复 LDAP 数据组件
  • --online 在仅在线恢复数据中恢复 LDAP 数据
  • --instance 指定恢复哪些 389 DS 实例。Red Hat Enterprise Linux 7 中的 IdM 只使用 IPA-REALM 实例,但有可能使用单独的实例在带有独立实例的系统中创建备份;在这种情况下,-- instance 允许您只恢复 IPA-REALM。例如:
    [root@server ~]# ipa-restore --instance=IPA-REALM /path/to/backup
    您只能在执行仅数据恢复时使用这个选项。
  • --backend 指定恢复了哪些后端;如果没有这个选项,ipa-restore 会恢复它发现的所有后端。定义可能的后端的参数是 userRoot,它会恢复 IPA 数据后端和 ipaca,这会恢复 CA 后端。
    您只能在执行仅数据恢复时使用这个选项。
  • --no-logs 在不恢复日志文件的情况下恢复备份
为了避免 IdM master 上的身份验证问题,请在恢复后清除 SSSD 缓存:
  1. 停止 SSSD 服务:
    [root@server ~]# systemctl stop sssd
  2. 从 SSSD 中删除所有缓存的内容:
    [root@server ~]# find /var/lib/sss/ ! -type d | xargs rm -f
  3. 启动 SSSD 服务:
    [root@server ~]# systemctl start sssd
注意
建议您在从备份恢复后重启您的系统。
有关使用 ipa-restore 的详情,请参考 ipa-restore(1) man page。

9.2.2. 使用多个主服务器恢复

有关在多 master 复制环境中恢复 IdM 的详情,请参阅 “IdM 中的备份和恢复”。

9.2.3. 从加密备份中恢复

如果要从 GPG 加密的备份中恢复,请使用 --gpg-keyring 选项提供私钥和公钥的完整路径。例如:
[root@server ~]# ipa-restore --gpg-keyring=/root/backup /path/to/backup

第 10 章 为 IdM 用户定义访问控制

访问控制是一组安全功能,用于定义谁可以访问某些资源,如机器、服务或条目等,以及它们允许执行的操作类型。身份管理提供了多个访问控制区域,以便明确授予哪些访问类型以及授予谁。因此,身份管理区分了对域中资源的访问控制和对 IdM 配置本身的访问控制。
本章详细介绍了 IdM 服务器中用户对 IdM 服务器和其他 IdM 用户可用的不同内部访问控制机制。

10.1. IdM 条目的访问控制

访问控制定义了授予用户对其他用户或对象执行操作的权限或权限。
身份管理访问控制结构基于标准的 LDAP 访问控制。IdM 服务器中的访问是基于存储在后端目录服务器实例的 IdM 用户,它们允许访问其他 IdM 实体,也作为 LDAP 条目存储在目录服务器实例中。
访问控制指令(ACI)有三个部分:
actor
这是被授予执行操作权限的实体。在 LDAP 访问控制模型中,这称为 绑定规则,因为它定义了用户是 ,并可选择性地对绑定尝试进行其他限制,如限制尝试一天或特定机器。
目标
这将定义允许行动者对其执行操作的条目。
操作类型
操作类型 - 最后一个部分决定了用户被允许执行的操作类型。最常见的操作有 add、delete、write、read 和 search。在身份管理中,所有用户都会隐式授予 IdM 域中所有条目的读和搜索权限,对密码和 Kerberos 密钥等敏感属性的限制。匿名用户受到与安全性相关的配置的限制,如 sudo 规则和基于主机的访问控制。
当尝试任何操作时,IdM 客户端的第一个操作是发送用户凭证,作为 bind 操作的一部分。后端目录服务器检查这些用户凭证,然后检查用户帐户以查看用户是否有权限来执行所请求的操作。

10.1.1. 身份管理中的访问控制方法

要使访问控制规则简单且明确实现,身份管理会将访问控制定义分成三个类别:
自助服务规则
自助服务规则,定义用户可以根据自己的个人条目执行哪些操作。访问控制类型仅允许对条目内的属性进行写入权限;它不允许为条目本身添加或删除操作。
委派规则
委派规则,允许特定用户组对另一用户组中用户的特定属性执行写入(编辑)操作。与自助服务规则一样,这种形式的访问控制规则仅限于编辑特定属性的值;它不授予添加或删除整个条目或控制未指定属性的功能。
基于角色的访问控制
基于角色的访问控制,它会创建特殊的访问控制,然后对 IdM 域中的所有实体授予更广泛的权威。可以授予角色编辑、添加和删除权限,即可以授予对整个条目的完整控制权限,而不仅限于选择的属性。
一些角色已在身份管理中创建并可用。可以创建特殊角色来管理任何类型的条目,如主机、自动挂载配置、网络组、DNS 设置和 IdM 配置。

10.2. 定义自助服务设置

自助服务访问控制规则定义实体可以自己执行的操作。这些规则仅定义用户(或其他 IdM 实体)可在其个人条目上编辑哪些属性。

10.2.1. 从 Web UI 创建自助服务规则

  1. 在顶部菜单中的 IPA Server 选项卡中,选择 基于角色的访问控制自助服务权限 子选项卡。
  2. 单击自助服务访问控制指令列表顶部的 Add

    图 10.1. 添加当前自助服务规则

    添加当前自助服务规则
  3. 在弹出窗口中输入规则的名称。允许使用空格。

    图 10.2. 添加自助服务规则表格

    添加自助服务规则表格
  4. 选中此 ACI 允许用户编辑的属性所对应的复选框。
  5. Add 按钮保存新的自助服务 ACI。

10.2.2. 从命令行创建自助服务规则

可以使用 selfservice-add 命令添加新的自助服务规则。这两个选项是必需的:
  • --permissions 用于设置 ACI 授予的权限(如写入、添加或删除)
  • --attrs 用于提供 ACI 授予的权限的完整属性列表。
[jsmith@server ~]$ 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, initials

10.2.3. 编辑自助服务规则

在 Web UI 中的自助服务条目中,唯一可以编辑的元素是 ACI 中包含的属性列表。可以选择或取消选中复选框。

图 10.3. 自助服务编辑页面

自助服务编辑页面
在命令行中,使用 ipa selfservice-mod 命令编辑自助服务规则。--attrs 选项覆盖先前支持的属性列表,因此始终包括属性的完整列表以及任何新属性。
[jsmith@server ~]$ 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
重要
在修改自助服务规则时包括所有属性,包括现有的属性。

10.3. 为用户委派权限

委派与角色非常相似,因为为一组用户分配了管理另一组用户条目的权限。但是,委派的授权与授予完整访问权限但仅授予特定用户属性(而非整个条目)的自助服务规则更加相似。另外,委派的颁发机构中的组是现有的 IdM 用户组,而不是为访问控制特别创建的角色。

10.3.1. 在 Web UI 中委派用户访问用户组

  1. 在顶部菜单中的 IPA Server 选项卡中,选择 基于角色的访问控制委派子选项卡
  2. 单击委派访问控制指令列表顶部的 Add 链接。

    图 10.4. 添加新委派

    添加新委派
  3. 将新委派命名为 ACI。
  4. 通过选中复选框来设置权限,用户是否有权查看给定属性(读取),并添加或更改给定属性(写入)。
    某些用户可能具有查看信息,但不应能够对其进行编辑。
  5. User group 下拉菜单中,选择为用户组中用户条目 授予权限的 组。

    图 10.5. 添加委派表格

    添加委派表格
  6. Member user group 下拉菜单中,选择其条目可以被委派组的成员编辑 的组。
  7. 在属性框中,根据授予 member 用户组权限的属性选中复选框。
  8. 单击 Add 按钮,以保存新的委派 ACI。

10.3.2. 在命令行中委派用户访问用户组

使用 delegation-add 命令添加新的委派访问控制规则。需要三个参数:
  • --group即被授予用户组中用户条目权限 的组。
  • --membergroup,委派组成员 可编辑其条目 的组。
  • --attrs,允许成员组中的用户查看或编辑的属性。
例如:
$ ipa delegation-add "basic manager attrs" --attrs=manager --attrs=title --attrs=employeetype --attrs=employeenumber --group=engineering_managers --membergroup=engineering
--------------------------------------
Added delegation "basic manager attrs"
--------------------------------------
  Delegation name: basic manager attrs
  Permissions: write
  Attributes: manager, title, employeetype, employeenumber
  Member user group: engineering
  User group: engineering_managers
使用 delegation-mod 命令编辑委派规则。--attrs 选项覆盖先前支持的属性列表,因此始终包括属性的完整列表以及任何新属性。
[jsmith@server ~]$ ipa delegation-mod "basic manager attrs" --attrs=manager --attrs=title --attrs=employeetype --attrs=employeenumber --attrs=displayname
-----------------------------------------
Modified delegation "basic manager attrs"
-----------------------------------------
  Delegation name: basic manager attrs
  Permissions: write
  Attributes: manager, title, employeetype, employeenumber, displayname
  Member user group: engineering
  User group: engineering_managers
重要
在修改委派规则时包括所有属性,包括现有属性。

10.4. 定义基于角色的访问控制

与自助服务和授权访问控制相比,基于角色的访问控制为用户授予截然不同的权限。基于角色的访问控制本质上是管理性的,提供修改条目的功能。
基于角色的访问控制有三个部分: 权限特权和 角色。特权由一个或多个权限组成,角色由一个或多个特权组成。
  • 权限 定义了特定操作或一组操作(如读取、写入、添加或删除)以及这些操作应用到的 IdM LDAP 目录中的目标条目。权限是构建块;可以根据需要将其分配给多个特权。
    使用 IdM 权限,您可以控制哪些用户有权访问哪些对象,甚至控制这些对象的属性。IdM 可让您将所有匿名用户、所有经过身份验证的用户、或仅一组特权用户列入白名单或黑名单,或更改特定 IdM 功能(如用户、组或 sudo)的整个可见性。在这样的情形中,这种灵活的权限方法非常有用,例如,管理员希望将用户或组的访问限制为这些用户或组需要访问的特定部分,并使其他部分完全隐藏。
  • 特权 是可应用到角色的一组权限。例如,可以创建用于添加、编辑和删除自动挂载位置的权限。然后,可以将该权限与管理 FTP 服务相关的其他权限合并,并可用于创建与管理文件系统相关的单一特权。
    注意
    在红帽身份管理环境中,特权对原子访问控制单元具有非常具体的含义,即创建权限和角色。红帽身份管理中不存在作为常规用户临时获得额外特权的 特权升级。使用基于角色的访问控制(RBAC)将特权分配给用户。用户具有授予访问权限的角色,或者不授予访问权限。
    除用户外,还将特权分配到用户组、主机、主机组和网络服务。这种做法允许一组通过特定网络服务对一组主机上的一组用户进行精细控制操作。
  • 角色是为角色 指定的用户拥有的特权列表。
    重要
    角色用于对允许的操作进行分类。它们不用作实施特权升级或防止特权升级的工具。
可以创建全新的权限,以及基于现有权限或新权限创建新的权限。红帽身份管理提供以下一系列预定义角色:
表 10.1. 红帽身份管理中的预定义角色
角色 特权 Description
Helpdesk
Modify Users and Reset passwords, Modify Group membership 负责执行简单的用户管理任务
IT Security Specialist
Netgroups Administrators, HBAC Administrator, Sudo Administrator 负责管理安全策略,如基于主机的访问控制、sudo 规则
IT Specialist
Host Administrators, Host Group Administrators, Service Administrators, Automount Administrators 负责管理主机
Security Architect
Delegation Administrator, Replication Administrators, Write IPA Configuration, Password Policy Administrator 负责管理身份管理环境、创建信任、创建复制协议
User Administrator
User Administrators, Group Administrators, Stage User Administrators 负责创建用户和组

10.4.1. 角色

10.4.1.1. 在 Web UI 中创建角色
  1. 打开顶部菜单中的 IPA Server 选项卡,然后选择 基于角色的访问控制 子选项卡。
  2. 单击基于角色的访问控制指令列表顶部的 Add 链接。

    图 10.6. 添加新角色

    添加新角色
  3. 输入角色名称和描述。

    图 10.7. 用于添加角色的表单

    用于添加角色的表单
  4. 单击 Add and Edit 按钮,以保存新角色,再进入配置页面。
  5. Users 选项卡的顶部,或者在添加组时在 Users Groups 选项卡中点 Add

    图 10.8. 添加用户

    添加用户
  6. 选择左侧的用户,并使用 &gt ; 按钮将它们移到 Prospective 列中。

    图 10.9. 选择用户

    选择用户
  7. Privileges 选项卡的顶部,单击 Add

    图 10.10. 添加特权

    添加特权
  8. 选择左侧的特权,并使用 > 按钮将它们移到 Prospective 列中。

    图 10.11. 选择特权

    选择特权
  9. 单击 Add 按钮保存。
10.4.1.2. 在命令行中创建角色
  1. 添加新角色:
    [root@server ~]# kinit admin
    [root@server ~]# ipa role-add --desc="User Administrator" useradmin
      ------------------------
      Added role "useradmin"
      ------------------------
      Role name: useradmin
      Description: User Administrator
  2. 为角色添加所需的权限:
    [root@server ~]# ipa role-add-privilege --privileges="User Administrators" useradmin
      Role name: useradmin
      Description: User Administrator
      Privileges: user administrators
      ----------------------------
      Number of privileges added 1
    ----------------------------
    
  3. 将所需的组添加到角色。在这种情况下,我们只添加一个单独的组 useradmins,该组已存在。
    [root@server ~]# ipa role-add-member --groups=useradmins useradmin
      Role name: useradmin
      Description: User Administrator
      Member groups: useradmins
      Privileges: user administrators
      -------------------------
      Number of members added 1
    -------------------------
    

10.4.2. 权限

10.4.2.1. 从 Web UI 创建新权限
  1. 打开顶部菜单中的 IPA Server 选项卡,然后选择 基于角色的访问控制 子选项卡。
  2. 选择 Permissions 任务链接。

    图 10.12. 权限任务

    权限任务
  3. 单击权限列表顶部的 Add 按钮。

    图 10.13. 添加新权限

    添加新权限
  4. 以显示的形式定义新权限的属性。

    图 10.14. 添加权限表格

    添加权限表格
  5. 点表单下的 Add 按钮保存权限。
您可以指定以下权限属性:
  1. 输入新权限的名称。
  2. 选择适当的 绑定规则类型
    • permission 是默认的权限类型,通过特权和角色授予访问权限
    • all 指定权限适用于所有经过身份验证的用户
    • anonymous 指定权限适用于所有用户,包括未经身份验证的用户
    注意
    不能对特权添加带有非默认绑定规则类型的权限。您也不能对非默认绑定规则类型设置特权中已存在的权限。
  3. 选择授予权限 中授予权限 的权限
  4. 定义方法来标别权限的目标条目:
    • Type 指定条目类型,如 user、host 或 service。如果您为 Type 设置选择了一个值,则可通过该 ACI 访问该条目类型的所有可能属性的列表将出现在 Effective Attributes 下。
      定义 Type 会将 SubtreeTarget DN 设置为其中一个预定义的值。
    • 子树指定一个子树条目;然后,此子树条目下的每个条目都会作为目标。提供现有的子树条目,因为 Subtree 不接受通配符或不存在的域名(DN)。例如:
      cn=automount,dc=example,dc=com
    • 额外目标过滤器 使用 LDAP 过滤器来识别权限将应用到哪个条目。过滤器可以是任何有效的 LDAP 过滤器,例如:
      (!(objectclass=posixgroup))
      IdM 自动检查给定过滤器的有效性。如果您输入了一个无效的过滤器,在尝试保存权限后 IdM 会警告您有关这个权限的信息。
    • 目标 DN 指定域名(DN),并接受通配符。例如:
      uid=*,cn=users,cn=accounts,dc=com
    • 组成员 对给定组的成员设置目标过滤器。
    填写过滤器设置并点击 Add 后,IdM 会验证过滤器。如果所有权限设置都正确,IdM 将执行搜索。如果某些权限设置不正确,IdM 将显示一条消息,通知您哪个设置不正确。
  5. 如果设置了 Type,请从可用的 ACI 属性列表中选择 Effective attributes。如果您没有使用 Type,通过将属性写入Effective attributes 字段来手动添加属性。一次添加一个属性;若要添加多个属性,可单击 Add 来添加另一个输入字段。
    重要
    如果您没有为权限设置任何属性,则默认包含所有属性。
10.4.2.2. 从命令行创建新权限
要添加新权限,请发出 ipa permission-add 命令。通过提供对应的选项来指定权限的属性:
  • 提供权限的名称。例如:
    [root@server ~]# ipa permission-add "dns admin permission"
  • --bindtype 指定绑定规则类型。此选项接受 allanonymouspermission 参数。例如:
    --bindtype=all
    如果不使用 --bindtype,则类型会自动设置为 默认权限 值。
    注意
    不能对特权添加带有非默认绑定规则类型的权限。您也不能对非默认绑定规则类型设置特权中已存在的权限。
  • --permissions 列出权限授予的权限。您可以使用多个 --permissions 选项或通过在大括号内以逗号分隔的列表中列出选项来设置多个属性。例如:
    --permissions=read --permissions=write
    --permissions={read,write}
  • --attrs 提供授予权限的属性列表。您可以使用多个 --attrs 选项或通过在大括号内以逗号分隔的列表列出选项,来设置多个属性。例如:
    --attrs=description --attrs=automountKey
    --attrs={description,automountKey}
    使用 --attrs 提供的属性必须存在,并且是给定对象类型的允许属性,否则命令会失败,并显示模式语法错误。
  • --type 定义条目对象类型,如 user、host 或 service。每种类型都有自己的一组允许的属性。例如:
    [root@server ~]# ipa permission-add "manage service" --permissions=all --type=service --attrs=krbprincipalkey --attrs=krbprincipalname --attrs=managedby
  • --subtree 提供子树条目;然后,过滤器以这个子树条目下的每个条目为目标。提供现有的子树条目;--subtree 不接受通配符或不存在的域名(DN)。在 目录中包含 DN。
    因为 IdM 使用简化的扁平目录树结构,所以 --subtree 可用于将某些类型的条目作为目标,如自动挂载位置,它们是其他配置的容器或父条目。例如:
    [root@server ~]# ipa permission-add "manage automount locations" --subtree="ldap://ldap.example.com:389/cn=automount,dc=example,dc=com" --permissions=write --attrs=automountmapname --attrs=automountkey --attrs=automountInformation
    --type--subtree 选项是互斥的。
  • --filter 使用 LDAP 过滤器来识别权限应用到哪个条目。IdM 自动检查给定过滤器的有效性。过滤器可以是任何有效的 LDAP 过滤器,例如:
    [root@server ~]# ipa permission-add "manage Windows groups" --filter="(!(objectclass=posixgroup))" --permissions=write --attrs=description
  • 检查组是否存在后,--memberof 对给定组的成员设置目标过滤器。例如:
    [root@server ~]# ipa permission-add ManageHost --permissions="write" --subtree=cn=computers,cn=accounts,dc=testrelm,dc=com --attr=nshostlocation --memberof=admins
  • 在检查组存在后,--targetgroup 对指定的用户组设置目标。
Web UI 中提供的 Target DN 设置不会在命令行中可用。
注意
有关修改和删除权限的详情,请运行 ipa permission-mod --helpipa permission-del --help 命令。
10.4.2.3. 默认管理的权限
管理权限 是预装了身份管理的权限。它们的行为与用户创建的其他权限类似,但有以下区别:
  • 您不能修改其名称、位置和目标属性。
  • 您不能删除它们。
  • 它们有三组属性:
    • 默认 属性,由 IdM 管理,用户无法修改它们
    • 包含 的属性,这是用户添加的额外属性;要将 include 属性添加到受管权限,请使用 ipa permission-mod 命令提供 --includedattrs 选项指定属性
    • 排除 的属性,它们是用户删除的属性;要将 exclude 属性添加到受管权限,请使用 ipa permission-mod 命令提供 --excludedattrs 选项指定属性
管理的权限适用于 default 和 included 属性集中显示的所有属性,但不应用到排除集中的所有属性。
如果您在修改受管权限 时使用 --attrs 选项,则包含和 exclude 属性集会自动调整,以便仅启用由 --attrs 提供的属性。
注意
虽然您无法删除受管权限,但将其绑定类型设置为 权限,并从所有特权中删除受管权限会有效地禁用它。
所有受管权限的名称都以 System 开头,例如 System:添加 Sudo 规则System:修改服务
IdM 的早期版本使用不同的默认权限方案,例如,禁止用户修改默认权限,用户只能将它们分配给特权。这些默认权限大部分已转换为受管权限,但以下权限仍使用以前的方案:
  • 添加自动成员重新构建成员身份任务
  • 添加复制协议
  • 证书删除冻结
  • 从 CA 获取证书状态
  • 修改 DNA 范围
  • 修改复制协议
  • 删除复制协议
  • 请求证书
  • 从不同主机请求证书
  • 从 CA 检索证书
  • 吊销证书
  • 写入 IPA 配置
如果您尝试从 Web UI 修改受管权限,则不会修改的属性将被禁用。

图 10.15. 禁用的属性

禁用的属性
如果您尝试从命令行修改受管权限,系统将不允许您更改无法修改的属性。例如:尝试更改默认 系统:修改 Users 权限以应用到组失败:
$ ipa permission-mod 'System: Modify Users' --type=group
ipa: ERROR: invalid 'ipapermlocation': not modifiable on managed permissions
但是,您可以使 System:修改 Users 权限,以应用到 GECOS 属性:
$ ipa permission-mod 'System: Modify Users' --excludedattrs=gecos
------------------------------------------
Modified permission "System: Modify Users"
10.4.2.4. 较早版本的身份管理中的权限
早期版本的身份管理处理不同的权限,例如:
  • 全局 IdM ACI 授予服务器所有用户(即使是匿名用户)的读取访问权限,即不是经过身份验证的用户。
  • 仅可使用写入、添加和删除权限类型。读取权限也可用,但实际价值不大,因为包括未经身份验证的用户(包括未经身份验证的用户)默认具有读取访问权限。
当前的身份管理版本包含用于设置权限的选项,这些权限更加精细:
  • 全局 IdM ACI 不会向未经身份验证的用户授予读取访问权限。
  • 现在,可以在同一权限中添加过滤器和子树。
  • 可以添加搜索和比较权限。
新的处理权限的方式大大改进了 IdM 的功能来控制用户或组访问,同时保持与较早版本的向后兼容性。从早期版本的 IdM 升级会删除所有服务器上的全局 IdM ACI,并使用 受管权限 替换它。
每当您修改时,通过先前方式创建的权限将自动转换为当前风格。如果您不尝试更改它们,则上一类型的权限保持不变。旦权限使用当前样式,它永远不会降级到上一样式。
注意
在运行较早版本的 IdM 的服务器中,仍可以为权限分配权限。
ipa permission-showipa permission-find 命令可识别当前权限和之前样式的权限。这两个命令的输出都以当前样式显示权限,但权限本身保持不变; 命令在仅输出数据之前升级权限条目,而不向 LDAP 提交更改。
以上和当前特征的权限会对所有运行 IdM 版本的服务器以及运行当前 IdM 版本的服务器产生影响。但是,您不能在运行之前版本的 IdM 服务器上使用当前权限创建或修改权限。

10.4.3. 权限

10.4.3.1. 从 Web UI 创建新特权
  1. 打开顶部菜单中的 IPA Server 选项卡,然后选择 基于角色的访问控制 子选项卡。
  2. 选择 Privileges 任务链接。
  3. 单击特权列表顶部的 Add 链接。

    图 10.17. 添加新特权

    添加新特权
  4. 输入特权的名称和描述。

    图 10.18. 添加特权表格

    添加特权表格
  5. 单击 Add and Edit 按钮,以进入特权配置页面来添加权限。
  6. 选择 Permissions 选项卡。
  7. 单击权限列表顶部的 Add,以向特权添加权限。

    图 10.19. 添加权限

    添加权限
  8. 根据要添加的权限名称,点复选框,并使用 &gt ; 按钮将权限移到 Prospective 列中。

    图 10.20. 选择权限

    选择权限
  9. 单击 Add 按钮保存。
10.4.3.2. 从命令行创建新特权
使用 privilege-add 命令创建特权条目,然后使用 privilege- add-permission 命令将权限 添加到特权组中。
  1. 创建特权条目。
    [jsmith@server ~]$ ipa privilege-add "managing filesystems" --desc="for filesystems"
  2. 分配所需的权限。例如:
    [jsmith@server ~]$ ipa privilege-add-permission "managing filesystems" --permissions="managing automount" --permissions="managing ftp services"

部分 IV. 管理:管理身份

本节详细介绍了如何管理用户帐户、主机以及用户组和主机组。另外,它详细介绍了如何分配和查看唯一的 UID 和 GID 号以及用户和组模式的工作方式。本章介绍了管理服务并委派对主机和服务的访问权限。最后章节提供了如何为 身份管理 用户定义的访问控制、如何管理 Kerberos 标记和主体别名的说明,以及如何与 NIS 域和 Netgroups 集成。

第 11 章 管理用户帐户

本章涵盖了用户帐户的一般管理和配置。

11.1. 设置用户主目录

建议每个用户都配置了主目录。用户主目录的默认预期位置位于 /home/ 目录中。例如,IdM 需要具有 user_login 登录的用户在 /home/user_login 中设置主目录。
注意
您可以使用 ipa config-mod 命令更改用户主目录的默认预期位置。
IdM 不会自动为用户创建主目录。但是,您可以配置 PAM 主目录模块,以在用户登录时自动创建主目录。或者,您可以使用 NFS 共享和 automount 工具手动添加主目录。

11.1.1. 使用 PAM 主目录模块自动挂载主目录

支持的 PAM 主目录模块
要将 PAM 主目录模块配置为在用户登录 IdM 域时自动为用户创建主目录,请使用以下 PAM 模块之一:
  • pam_oddjob_mkhomedir
  • pam_mkhomedir
IdM 首先尝试使用 pam_oddjob_mkhomedir。如果没有安装此模块,IdM 会尝试改为使用 pam_mkhomedir
注意
不支持为 NFS 共享中的新用户自动创建主目录。
配置 PAM 主目录模块
启用 PAM 主目录模块具有本地效果。因此,您必须在需要的每个客户端和服务器中单独启用该模块。
要在服务器或客户端安装过程中配置模块,在安装机器时使用带有 ipa-server-installipa-client-install 工具的 --mkhomedir 选项。
要在已安装的服务器或客户端上配置模块,请使用 authconfig 工具。例如:
# authconfig --enablemkhomedir --update
有关使用 authconfig 创建主目录的更多信息,请参阅 系统级身份验证指南

11.1.2. 手动挂载主目录

您可以使用 NFS 文件服务器提供一个 /home/ 目录,供 IdM 域中的所有机器使用,然后使用 automount 工具将目录挂载到 IdM 计算机上。
使用 NFS 时的潜在问题
使用 NFS 可能会对性能和安全性造成负面影响。例如,使用 NFS 可能会导致安全问题为 NFS 用户授予 root 访问权限、加载整个 /home/ 目录树的性能问题,或者为主目录使用远程服务器的网络性能问题。
为降低这些问题的影响,建议遵循以下准则:
  • 使用 automount 仅挂载用户的主目录,并且仅在用户登录时挂载。不要使用它来加载整个 /home/ 树。
  • 使用有限权限的远程用户创建主目录,并以此用户身份在 IdM 服务器上挂载共享。由于 IdM 服务器作为 httpd 进程运行,因此可以使用 sudo 或类似的程序授予 IdM 服务器的有限访问权限,以便在 NFS 服务器上创建主目录。
使用 NFS 和 自动挂载配置主目录
使用 NFS 共享和 自动挂载从独立位置手动将主目录添加到 IdM 服务器中
  1. 为用户目录映射创建一个新位置。
    $ ipa automountlocation-add userdirs
    Location: userdirs
  2. 添加直接映射到新位置的 auto.direct 文件。auto.direct 文件是由 ipa-server-install 工具自动创建的 自动挂载映射。在以下示例中,挂载点为 /share
    $ ipa automountkey-add userdirs auto.direct --key=/share --info="-ro,soft, server.example.com:/home/share"
    
    Key: /share
    Mount information: -ro,soft, server.example.com:/home/share
有关在 IdM 中使用 自动挂载 的详情,请参考 第 34 章 使用自动挂载

11.2. 用户生命周期

身份管理支持三种用户帐户状态: stageactivepreserve
  • Stage(预发布) 用户不允许进行身份验证。这是初始状态。可能尚未设置活动用户所需的部分用户帐户属性。
  • Active(活跃)用户被允许进行身份验证。所有必需的用户帐户属性都需要在这个阶段设置。
  • 保留 的用户是之前 活跃的 用户。它们被视为不活动,无法向 IdM 进行身份验证。保留用户保留他们作为活跃用户的大多数帐户属性,但它们不属于任何用户组。
    注意
    处于 保留 状态的用户列表可以提供过去用户帐户的历史记录。
也可以从 IdM 数据库永久删除用户条目。删除用户条目会从 IdM 永久删除条目本身及其所有信息,包括组成员身份和密码。任何对用户的外部配置,如系统帐户和主目录,都不会被删除,但无法通过 IdM 来访问。
重要
删除的用户帐户无法恢复。当您删除用户帐户时,与帐户关联的所有信息都将永久丢失。
新管理员用户只能由另一个管理员(如默认的 admin 用户)创建新的管理员用户。如果您意外删除所有管理员帐户,目录管理器必须在 Directory 服务器中手动创建一个新管理员。
警告
不要删除 admin 用户。由于 admin 是 IdM 所需的预定义用户,因此此操作会导致某些命令出现问题。如果要定义和使用替代 admin 用户,在为至少一个不同的用户授予 admin 权限后,使用 ipa user-disable admin 禁用预定义的 admin 用户。
用户生命周期管理操作
若要管理用户调配,管理员可以将用户帐户从一个状态移到另一个状态。新用户帐户可以添加为 activestage,但不能作为 保留
IdM 支持以下操作来进行用户生命周期管理:
stage → active
当处于 stage 状态的帐户准备好被正确激活时,管理员会把它移到 active 状态。
Active → 保留
用户离开公司后,管理员会将帐户移到 preserved 状态。
Relded → active
之前的用户再次加入公司。管理员通过将其从 preserved 状态移到 active 状态来恢复用户帐户。
Relded → stage
前一位用户计划再次加入公司。管理员将帐户从 preserved 状态移到 stage 状态,以准备帐户以便稍后重新激活。
您还可以从 IdM 永久删除活跃、阶段和保留的用户。请注意,您无法将 stage 用户移到 preserved 状态,您只能永久删除它们。

图 11.1. 用户生命周期操作

用户生命周期操作

11.2.1. 添加阶段或活动用户

在 Web UI 中添加用户
  1. 选择 IdentityUsers 选项卡。
  2. 根据您要以 activestage 状态添加用户,选择 Active users 或 Stage 用户类别。

    图 11.2. 选择用户类别

    选择用户类别
    有关 活跃stage 用户生命周期状态的更多信息,请参阅 第 11.2 节 “用户生命周期”
  3. 点 users 列表顶部的 Add

    图 11.3. 添加用户

    添加用户
  4. 填写 Add User 表单。
    请注意,如果您没有手动设置用户登录,IdM 会根据指定的名字和姓氏自动生成登录。
  5. 点击 Add
    或者,单击 Add and Add Another 以开始添加其他 用户或添加和编辑 以开始编辑新用户条目。有关编辑用户条目的详情请参考 第 11.3 节 “编辑用户”
从命令行添加用户
要添加一个处于 active 状态的新用户,请使用 ipa user-add 命令。要添加新用户处于 stage 状态,请使用 ipa stageuser-add 命令。
注意
有关 活跃stage 用户生命周期状态的更多信息,请参阅 第 11.2 节 “用户生命周期”
当不带任何选项运行时,ipa user-addipa stageuser-add 会提示您输入最低所需的用户属性,并将默认值用于其他属性。或者,您也可以直接向命令添加指定各种属性的选项。
在交互式会话中,在您运行不带任何选项的 命令后,IdM 会根据提供的名字和姓氏提供自动生成的用户登录,并将其显示在方括号([ ])中。若要接受默认登录,请按 Enter 键进行确认。要指定自定义登录,请不要确认默认帐户,而是指定自定义登录。
$ ipa user-add
First name: first_name
Last name: last_name
User login [default_login]: custom_login
ipa user-addipa stageuser-add 中添加选项可让您为许多用户属性定义自定义值。这意味着您可以指定比在互动会话中的更多信息。例如,添加 stage 用户:
$ ipa stageuser-add stage_user_login --first=first_name --last=last_name --email=email_address
如需 ipa user-addipa stageuser-add 接受的选项的完整列表,请使用添加 --help 选项运行命令。
11.2.1.1. 用户名要求
IdM 支持可通过以下正则表达式描述的用户名:
'(?!^[0-9]+$)^[a-zA-Z0-9_.][a-zA-Z0-9_.-]*[a-zA-Z0-9_.$-]?$'
用户名只能包含字母、数字、_、-、.、$ 和 必须至少包含一个字母。
注意
支持以末尾的美元符号($)结尾的用户名,以启用 Samba 3.x 机器支持。
如果您添加了用户名包含大写字符的用户,IdM 会在保存名称时自动将其转换为小写。因此,IdM 始终要求用户在登录时输入其用户名全部小写。此外,不能添加用户名仅在字母校准(如用户和用户)上有所不同 的用户
用户名的默认最大长度为 32 个字符。要更改它,请使用 ipa config-mod --maxusername 命令。例如,要将最大用户名长度增加到 64 个字符:
$ ipa config-mod --maxusername=64
  Maximum username length: 64
  ...
11.2.1.2. 定义自定义 UID 或 GID 号
如果您添加新的用户条目但没有指定自定义 UID 或 GID 号,IdM 会自动分配 ID 范围内下一个可用的 ID 号。这意味着用户的 ID 号始终是唯一的。有关 ID 范围的详情请参考 第 14 章 唯一 UID 和 GID 编号分配
当您指定自定义 ID 号时,服务器不会验证自定义 ID 号是否唯一。因此,多个用户条目可能被分配了相同的 ID 号。红帽建议防止有多个 ID 号相同的条目。

11.2.2. 列出用户和搜索用户

在 Web UI 中列出用户
  1. 选择 IdentityUsers 选项卡。
  2. 选择 Active usersStage usersPreserved users 类别。

    图 11.4. 列出用户

    列出用户
在 Web UI 中显示用户的信息
要显示用户的详细信息,请点击用户列表中的用户名称:

图 11.5. 显示用户信息

显示用户信息
从命令行列出用户
要列出所有活动的用户,请运行 ipa user-find 命令。要列出所有 stage 用户,请使用 ipa stageuser-find 命令。要列出保留的用户,请运行 ipa user-find --preserved=true 命令。
例如:
$ ipa user-find
---------------
23 users matched
---------------
  User login: admin
  Last name: Administrator
  Home directory: /home/admin
  Login shell: /bin/bash
  UID: 1453200000
  GID: 1453200000
  Account disabled: False
  Password: True
  Kerberos keys available: True

  User login: user
...
通过在 ipa user-findipa stageuser-find 中添加选项和参数,您可以定义搜索结果并过滤搜索结果。例如,显示定义了特定标题的所有活跃用户:
$ ipa user-find --title=user_title
---------------
2 users matched
---------------
  User login: user
...
  Job Title: Title
...

  User login: user2
...
  Job Title: Title
...
同样,显示登录包含用户的所有 stage 用户
$ ipa user-find user
---------------
3 users matched
---------------
User login: user
...

User login: user2
...

User login: user3
...
如需 ipa user-findipa stageuser-find 接受的选项的完整列表,请使用添加的 --help 选项运行命令。
从命令行显示用户的信息
要显示活跃或保留用户的信息,请使用 ipa user-show 命令:
$ ipa user-show user_login
  User login: user_login
  First name: first_name
  Last name: last_name
...
要显示 stage 用户的信息,请使用 ipa stageuser-show 命令:

11.2.3. 激活、保留、删除和保留用户

本节论述了在不同用户生命周期状态之间移动用户帐户。有关 IdM 中生命周期状态的详情,请参考 第 11.2 节 “用户生命周期”
在 Web UI 中管理用户生命周期
激活 stage 用户:
  • Stage users 列表中,选择要激活的用户,然后单击 Activate

    图 11.6. 激活用户

    激活用户
保留或删除用户:
  1. Active usersStage 用户列表,选择用户。单击 Delete

    图 11.7. 删除用户

    删除用户
  2. 如果您选择了活动用户,请选择 deletepreserve。如果选择了 stage 用户,则只能删除该用户。默认 UI 选项为 delete
    例如,要保留活跃的用户:

    图 11.8. 在 Web UI 中选择 Delete Mode

    在 Web UI 中选择 Delete Mode
    若要确认,请单击 Delete 按钮。
恢复保留的用户:
  • Preserved users 列表中,选择要恢复的用户,然后单击 Restore

    图 11.9. 恢复用户

    恢复用户
注意
恢复用户不会恢复之前帐户的所有属性。例如,用户的密码不会被恢复,必须再次定义。
请注意,在 Web UI 中,用户无法将用户从 preserved 状态移到 stage 状态。
从命令行管理用户生命周期
要通过从 stage 移到 active 来激活用户帐户,请使用 ipa stageuser-activate 命令。
$ ipa stageuser-activate user_login
-------------------------
Stage user user_login activated
-------------------------
...
要保留或删除用户帐户,请使用 ipa user-delipa stageuser-del 命令。
  • 要从 IdM 数据库永久删除一个活动的用户,请在没有任何选项的情况下运行 ipa user-del
    $ ipa user-del user_login
    --------------------
    Deleted user "user3"
    --------------------
    
  • 要保留活跃的用户帐户,请使用 --preserve 选项运行 ipa user-del
    $ ipa user-del --preserve user_login
    --------------------
    Deleted user "user_login"
    --------------------
    
  • 要从 IdM 数据库永久删除 stage 用户,请运行 ipa stageuser-del
    $ ipa stageuser-del user_login
    --------------------------
    Deleted stage user "user_login"
    --------------------------
    
注意
删除多个用户时,请使用 --continue 选项强制命令继续,而不论出现什么错误。命令完成后,会将成功和失败的操作摘要输出到 stdout 标准输出流。
$ ipa user-del --continue user1 user2 user3
如果不使用 --continue,则命令会继续删除用户,直到它遇到错误,之后它停止并退出。
要通过将保留的用户帐户从 preserved 移到 active 来恢复保留的用户帐户,请使用 ipa user-undel 命令。
$ ipa user-undel user_login
------------------------------
Undeleted user account "user_login"
------------------------------
要通过将保留的用户帐户从 preserved 移到 stage 来恢复保留的用户帐户,请使用 ipa user-stage 命令。
$ ipa user-stage user_login
------------------------------
Staged user account "user_login"
------------------------------
注意
恢复用户帐户不会恢复之前帐户的所有属性。例如,用户的密码不会被恢复,必须再次定义。
有关这些命令及其接受的选项的更多信息,请在添加 --help 选项的情况下运行它们。

11.3. 编辑用户

在 Web UI 中编辑用户
  1. 选择 IdentityUsers 选项卡。
  2. 搜索 Active users,Stage users, 或 Preserved users category,以查找要编辑的用户。
  3. 单击要编辑的用户的名称。

    图 11.10. 选择要编辑的用户

    选择要编辑的用户
  4. 根据需要编辑 user 属性字段。
  5. 点页面顶部的 Save

    图 11.11. 保存修改的用户属性

    保存修改的用户属性
在 Web UI 中更新用户详情后,新值不会立即同步。可能需要大约 5 分钟后,新值才会反映在客户端系统中。
从命令行编辑用户
要修改处于 activepreserved 状态的用户,请使用 ipa user-mod 命令。要修改处于 stage 状态的用户,请使用 ipa stageuser-mod 命令。
ipa user-modipa stageuser-mod 命令接受以下选项:
  • 用户登录,用于标识要修改的用户帐户
  • 指定新属性值的选项
有关可从命令行修改的用户条目属性的完整列表,请参阅 ipa user-modipa stageuser-mod 接受的选项列表。要显示选项列表,请在添加 --help 选项的情况下运行命令。
只需在 ipa user-modipa stageuser-mod 中添加属性选项会覆盖当前的属性值。例如,以下内容更改了用户的标题,或者添加了一个新的标题(如果用户尚未指定标题):
$ ipa user-mod user_login --title=new_title
对于允许具有多个值的 LDAP 属性,IdM 也接受多个值。例如,用户可以在其用户帐户中保存两个电子邮件地址。若要添加不覆盖现有值的额外属性值,可使用 --addattr 选项和 选项来指定新属性值。例如,要向已指定电子邮件地址的用户帐户添加新的电子邮件地址:
$ ipa user-mod user --addattr=mobile=new_mobile_number
--------------------
Modified user "user"
--------------------
  User login: user
...
  Mobile Telephone Number: mobile_number, new_mobile_number
...
要同时设置两个属性值,请使用 --addattr 选项两次:
$ ipa user-mod user --addattr=mobile=mobile_number_1 --addattr=mobile=mobile_number_2
ipa user-mod 命令也接受用于设置属性值的 --setattr 选项,以及用于删除属性值的 --delattr 选项。这些选项的使用方式与使用 --addattr 类似。详情请查看 ipa user-mod --help 命令的输出。
注意
要覆盖用户的当前电子邮件地址,请使用 --email 选项。但是,要添加额外的电子邮件地址,请使用 mail 选项和 --addattr 选项:
$ ipa user-mod user --email=email@example.com

$ ipa user-mod user --addattr=mail=another_email@example.com

11.4. 启用和禁用用户帐户

管理员可以禁用和启用活动用户帐户。禁用用户帐户可取消激活帐户。无法使用禁用的用户帐户进行身份验证。禁用帐户的用户无法登录 IdM,也不能使用 IdM 服务,如 Kerberos,或执行任何任务。
禁用的用户帐户仍然在 IdM 中存在,所有相关信息保持不变。与保留的用户帐户不同,禁用的用户帐户 保持活动状态。因此,它们会显示在 ipa user-find 命令的输出中。例如:
$ ipa user-find
...
  User login: user
  First name: User
  Last name: User
  Home directory: /home/user
  Login shell: /bin/sh
  UID: 1453200009
  GID: 1453200009
  Account disabled: True
  Password: False
  Kerberos keys available: False
...
可以重新启用任何禁用的用户帐户。
注意
禁用用户帐户后,现有连接在用户的 Kerberos TGT 和其他票据到期之前保持有效。票据过期后,用户将无法续订。
在 Web UI 中启用和禁用用户帐户
  1. 选择 IdentityUsers 选项卡。
  2. Active users 列表中,选择所需的用户或用户,然后单击 DisableEnable

    图 11.12. 禁用或启用用户帐户

    禁用或启用用户帐户
从命令行禁用和启用用户帐户
要禁用用户帐户,请使用 ipa user-disable 命令。
$ ipa user-disable user_login
----------------------------
Disabled user account "user_login"
----------------------------
要启用用户帐户,请使用 ipa user-enable 命令。
$ ipa user-enable user_login
----------------------------
Enabled user account "user_login"
----------------------------

11.5. 允许非管理员用户管理用户条目

默认情况下,只有 admin 用户被允许管理用户生命周期,并禁用或启用用户帐户。要允许另一个非管理员用户执行此操作,创建一个新角色,在此角色中添加相关权限,并将非管理员用户分配到该角色。
默认情况下,IdM 包括以下与管理用户帐户相关的权限:
修改用户和重置密码
此特权包括修改各种用户属性的权限。
User Administrators
此特权包括添加活动用户、激活非活动用户、删除用户、修改用户属性和其他权限的权限。
阶段用户置备
此特权包括添加暂存用户的权限。
暂存用户管理员
此权限包括执行多个生命周期操作的权限,如添加暂存用户或在生命周期状态之间移动用户。但是,它不包括将用户移到 active 状态的权限。
有关定义角色、权限和权限的详情请参考 第 10.4 节 “定义基于角色的访问控制”
允许不同的用户执行不同的用户管理操作
与管理用户帐户相关的不同特权可以添加到不同的用户。例如,您可以通过以下方式分隔员工帐户条目和激活的权限:
  • 将一个用户配置为 阶段用户管理员,允许将将来的员工作为暂存用户添加到 IdM,但不允许激活它们。
  • 将另一个用户配置为 安全管理员,允许在员工凭证在就业第一天得到验证后激活暂存用户。
要允许用户执行某些用户管理操作,请创建一个具有所需特权或特权的新角色,并将该用户分配到该角色。

例 11.1. 允许非管理员用户添加阶段用户

本例演示了如何创建仅允许添加新阶段用户但不允许执行任何其他阶段用户管理操作的用户。
  1. admin 用户身份登录,或允许管理基于角色的访问控制的另一个用户身份登录。
    $ kinit admin
    
  2. 创建新的自定义角色来管理添加阶段用户。
    1. 创建 系统置备 角色。
      $ ipa role-add --desc "Responsible for provisioning stage users" "System Provisioning"
      --------------------------------
      Added role "System Provisioning"
      --------------------------------
      Role name: System Provisioning
      Description: Responsible for provisioning stage users
      
    2. Stage User Provisioning 特权添加到该角色。此特权提供添加暂存用户的功能。
      $ ipa role-add-privilege "System Provisioning" --privileges="Stage User Provisioning"
      Role name: System Provisioning
      Description: Responsible for provisioning stage users
      Privileges: Stage User Provisioning
      ----------------------------
      Number of privileges added 1
      ----------------------------
      
  3. 为非管理员用户授予添加暂存用户的权限。
    1. 如果非 admin 用户尚不存在,请创建一个新用户。在本例中,该用户名为 stage_user_admin
      $ ipa user-add stage_user_admin --password
      First name: first_name
      Last name: last_name
      Password:
      Enter password again to verify:
      ...
      
    2. stage_user_admin 用户分配给 System Provisioning 角色。
      $ ipa role-add-member "System Provisioning" --users=stage_user_admin
      Role name: System Provisioning
      Description: Responsible for provisioning stage users
      Member users: stage_user_admin
      Privileges: Stage User Provisioning
      -------------------------
      Number of members added 1
      -------------------------
      
    3. 为确保正确配置了 System Provisioning 角色,您可以使用 ipa role-show 命令显示角色设置。
      $ ipa role-show "System Provisioning"
      --------------
      1 role matched
      --------------
      Role name: System provisioning
      Description: Responsible for provisioning stage users
      Member users: stage_user_admin
      Privileges: Stage User Provisioning
      ----------------------------
      Number of entries returned 1
      ----------------------------
      
  4. stage_user_admin 用户身份测试添加新的 stage 用户。
    1. stage_user_admin 身份登录。请注意,如果您在前面的步骤中以一个新用户身份创建了 stage_user_admin,IdM 会要求您更改 admin 设置的初始密码。
      $ kinit stage_user_admin
      Password for stage_user_admin@EXAMPLE.COM:
      Password expired.  You must change it now.
      Enter new password:
      Enter it again:
      
    2. 要确保您的 admin 的 Kerberos 票据已被 stage_user_admin 的 Kerberos 票据替代,您可以使用 klist 工具。
      $ klist
      Ticket cache: KEYRING:persistent:0:krb_ccache_xIlCQDW
      Default principal: stage_user_admin@EXAMPLE.COM
      
      Valid starting       Expires              Service principal
      02/25/2016 11:42:20  02/26/2016 11:42:20  krbtgt/EXAMPLE.COM
      
    3. 添加新 stage 用户。
      $ ipa stageuser-add stage_user
      First name: first_name
      Last name: last_name
      ipa: ERROR: stage_user: stage user not found
      
      注意
      预期在添加暂存用户后 IdM 报告的错误。stage_user_admin 只允许添加 stage 用户,而不可以显示有关他们的信息。因此,IdM 不会显示新添加的 stage_user 设置摘要。
stage_user_admin 用户不允许显示 stage 用户的信息。因此,当以 stage_user _ admin 身份登录时,尝试显示有关新 stage_user 用户 的信息会失败:
$ ipa stageuser-show stage_user
ipa: ERROR: stage_user: stage user not found
要显示 stage_user 的信息,您可以 以管理员身份登录
$ kinit admin
Password for admin@EXAMPLE.COM:
$ ipa stageuser-show stage_user
  User login: stage_user
  First name: Stage
  Last name: User
...

11.6. 将外部置备系统用于用户和组

身份管理支持配置您的环境,以便使用用于管理身份的外部解决方案在 IdM 中置备用户和组身份。这部分论述了这类配置的示例。这个示例包括:

11.6.1. 配置要由外部置备系统使用的用户帐户

此流程演示了如何配置两个 IdM 用户帐户供外部置备系统使用。通过使用合适的密码策略将帐户添加到组中,您可以使外部调配系统来管理 IdM 中的用户调配。
  1. 创建用户 provisionator,并具有添加 stage 用户的特权。该用户帐户将供外部调配系统用于添加新的暂存用户。
    1. 添加 provisionator 用户帐户:
      $ ipa user-add provisionator --first=provisioning --last=account --password
    2. 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"
      provisionator 用户添加到角色中:
      $ ipa role-add-member --users=provisionator "System Provisioning"
  2. 创建用户 activator,其具有管理用户帐户的特权。用户帐户将用于自动激活由外部调配系统添加的暂存用户。
    1. 添加 activator 用户帐户:
      $ ipa user-add activator --first=activation --last=account --password
    2. 授予 activator 用户所需的特权。
      将用户添加到默认的 User Administrator 角色中:
      $ ipa role-add-member --users=activator "User Administrator"
  3. 为服务和应用程序帐户创建用户组:
    $ ipa group-add service-accounts
  4. 更新组的密码策略。以下策略可防止帐户的密码过期和锁住,但通过要求复杂的密码来弥补潜在的风险:
    $ ipa pwpolicy-add service-accounts --maxlife=10000 --minlife=0 --history=0 --minclasses=4 --minlength=20 --priority=1 --maxfail=0 --failinterval=1 --lockouttime=0
  5. 将置备和激活帐户添加到服务和应用程序帐户的组中:
    $ ipa group-add-member service-accounts --users={provisionator,activator}
  6. 更改用户帐户的密码:
    $ kpasswd provisionator
    $ kpasswd activator
    需要更改密码,因为新 IdM 用户的密码会立即过期。
其他资源

11.6.2. 配置 IdM 以自动激活暂存用户帐户

此流程演示了如何为激活 stage 用户创建脚本。系统在指定的时间间隔自动运行脚本。这样可确保新用户帐户被自动激活,并在创建后很快可用。
重要
该程序假定新用户帐户不需要验证,脚本才会将它们添加到 IdM。例如,如果用户已经由外部调配系统的所有者验证,则不需要验证。
这对于仅在一个 IdM 服务器上启用激活过程足够了。
  1. 为激活帐户生成 keytab 文件:
    # ipa-getkeytab -s example.com -p "activator" -k /etc/krb5.ipa-activation.keytab
    如果您要在多个 IdM 服务器上启用激活过程,请仅在一个服务器上生成 keytab 文件。然后,将 keytab 文件复制到其他服务器上。
  2. 创建一个包含以下内容的 /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
  3. 编辑 ipa-activate-all 脚本的权限和所有权,使其可执行:
    # chmod 755 /usr/local/sbin/ipa-activate-all
    # chown root:root /usr/local/sbin/ipa-activate-all
  4. 创建包含以下内容的 systemd 单元文件 /etc/systemd/system/ipa-activate-all.service
    [Unit]
    Description=Scan IdM every minute for any stage users that must be activated
    
    [Service]
    Environment=KRB5_CLIENT_KTNAME=/etc/krb5.ipa-activation.keytab
    Environment=KRB5CCNAME=FILE:/tmp/krb5cc_ipa-activate-all
    ExecStart=/usr/local/sbin/ipa-activate-all
  5. 创建一个 systemd 计时器 /etc/systemd/system/ipa-activate-all.timer,其内容如下:
    [Unit]
    Description=Scan IdM every minute for any stage users that must be activated
    
    [Timer]
    OnBootSec=15min
    OnUnitActiveSec=1min
    
    [Install]
    WantedBy=multi-user.target
  6. 启用 ipa-activate-all.timer:
    # systemctl enable ipa-activate-all.timer
其他资源:

11.6.3. 配置外部置备系统的 LDAP 提供程序来管理 IdM 标识符

本节介绍各种用户和组管理操作的模板。使用这些模板,您可以配置置备系统的 LDAP 提供程序来管理 IdM 用户帐户。例如,您可以将系统配置为在员工离开公司后激活用户帐户。
使用 LDAP 管理用户帐户
您可以添加新用户条目、修改现有条目、在不同的生命周期状态之间移动用户,或通过编辑底层目录服务器数据库来删除用户。要编辑数据库,请使用 ldapmodify 工具。
以下 LDIF 格式的模板提供了有关使用 ldapmodify 修改的属性的信息。有关详细的示例步骤,请参阅 例 11.2 “使用 ldapmodify添加 Stage 用户”例 11.3 “使用 ldapmodify保留用户”
添加新的 stage 用户
使用 UID 和 GID 自动分配用户:
dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=example,dc=com
changetype: add
objectClass: top
objectClass: inetorgperson
uid: user_login
sn: surname
givenName: first_name
cn: full_name
静态分配使用 UID 和 GID 的用户:
dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,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
在添加 stage 用户时,您不需要指定任何 IdM 对象类。在激活用户后,IdM 自动添加这些类。
请注意,所创建的条目的可分辨名称(DN)必须以 uid=user_login 开头。
修改现有用户
在修改用户之前,请通过按用户登录搜索来获取用户的区分名称(DN)。在以下示例中,以下示例中的 user_allowed_to_read 用户是允许读取用户和组信息的用户,密码 是此用户的密码:
# ldapsearch -LLL -x -D "uid=user_allowed_to_read,cn=users,cn=accounts,dc=example, dc=com" -w "password" -H ldap://server.example.com -b "cn=users, cn=accounts, dc=example, dc=com" uid=user_login
修改用户的属性:
dn: distinguished_name
changetype: modify
replace: attribute_to_modify
attribute_to_modify: new_value
禁用用户:
dn: distinguished_name
changetype: modify
replace: nsAccountLock
nsAccountLock: TRUE
启用用户:
dn: distinguished_name
changetype: modify
replace: nsAccountLock
nsAccountLock: FALSE
保留用户:
dn: distinguished_name
changetype: modrdn
newrdn: uid=user_login
deleteoldrdn: 0
newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=example
更新 nssAccountLock 属性不会对 stage 和preserved 用户造成影响。虽然更新操作成功完成,属性值仍然保持 nssAccountLock:对.
创建新组
要创建新组,请执行以下操作:
dn: cn=group_distinguished_name,cn=groups,cn=accounts,dc=example,dc=com
changetype: add
objectClass: top
objectClass: ipaobject
objectClass: ipausergroup
objectClass: groupofnames
objectClass: nestedgroup
objectClass: posixgroup
cn: group_name
gidNumber: GID_number
修改组
在修改组之前,请通过按组名称搜索来获取组的区分名称(DN)。
# ldapsearch -YGSSAPI  -H ldap://server.example.com -b "cn=groups,cn=accounts,dc=example,dc=com" "cn=group_name"
删除现有组:
dn: group_distinguished_name
changetype: delete
将成员添加到组中:
dn: group_distinguished_name
changetype: modify
add: member
member: uid=user_login,cn=users,cn=accounts,dc=example,dc=com
从组中删除成员:
dn: distinguished_name
changetype: modify
delete: member
member: uid=user_login,cn=users,cn=accounts,dc=example,dc=com
不要向组中添加 stage 或 preserved 的用户。即使更新操作成功完成,也不会作为组的成员更新用户。只有活动的用户才能属于组。

例 11.2. 使用 ldapmodify添加 Stage 用户

使用标准 interorgperson 对象类添加新 stageuser 用户:
  1. 使用 ldapmodify 添加用户。
    # ldapmodify -Y GSSAPI
    SASL/GSSAPI authentication started
    SASL username: admin@EXAMPLE
    SASL SSF: 56
    SASL data security layer installed.
    dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=example
    changetype: add
    objectClass: top
    objectClass: inetorgperson
    cn: Stage
    sn: User
    
    adding new entry "uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=example"
    
  2. 考虑验证暂存条目的内容,以确保您的置备系统添加了所有必要的 POSIX 属性,并且暂存条目已就绪,可激活。使用 ipa stageuser-show --all --raw 命令显示新的 stage 用户的 LDAP 属性。请注意,由 nsaccountlock 属性显式禁用该用户:
    $ ipa stageuser-show stageuser --all --raw
      dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=example
      uid: stageuser
      sn: User
      cn: Stage
      has_password: FALSE
      has_keytab: FALSE
      nsaccountlock: TRUE
      objectClass: top
      objectClass: inetorgperson
      objectClass: organizationalPerson
      objectClass: person
    

例 11.3. 使用 ldapmodify保留用户

使用 LDAP modrdn 操作保留用户:
  1. 使用 ldapmodify 工具修改用户条目。
    $ ldapmodify -Y GSSAPI
    SASL/GSSAPI authentication started
    SASL username: admin@EXAMPLE
    SASL SSF: 56
    SASL data security layer installed.
    dn: uid=user1,cn=users,cn=accounts,dc=example
    changetype: modrdn
    newrdn: uid=user1
    deleteoldrdn: 0
    newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=example
    
    modifying rdn of entry "uid=user1,cn=users,cn=accounts,dc=example"
    
  2. (可选)通过列出所有保留的用户来验证用户是否已保留。
    $ ipa user-find --preserved=true
    ---------------
    1 user matched
    ---------------
      User login: user1
      First name: first_name
      Last name: last_name
    ...
    ----------------------------
    Number of entries returned 1
    ----------------------------
    

第 12 章 管理主机

DNS 和 Kerberos 都配置为初始客户端配置的一部分。这是必要的,因为这些服务是带 IdM 域中的机器的两个服务,并允许它识别它将连接的 IdM 服务器。在初始配置后,IdM 提供了管理这些服务的工具,以响应域服务的更改、IT 环境更改或在影响 Kerberos、证书和 DNS 服务的机器上更改。
本章论述了如何管理直接与客户端机器关联的身份服务:
  • DNS 条目和设置
  • 机器验证
  • 主机名更改(影响域服务)

12.1. 关于主机、服务和机器身份和身份验证

注册过程的基本功能是为 IdM 目录中客户端计算机创建主机条目。此主机条目用于建立域中其他主机甚至服务之间的关系(如 第 1 章 红帽身份管理简介所述)。这些关系是为域中的主机委派授权和控制的一部分。
主机条目包含有关 IdM 中客户端的所有信息:
  • 与主机关联的服务条目
  • 主机和服务主体
  • 访问控制规则
  • 机器信息,如物理位置和操作系统
主机上运行的一些服务也可以属于 IdM 域。可以存储 Kerberos 主体或 SSL 证书(或两者)的任何服务都可以配置为 IdM 服务。向 IdM 域添加服务可让服务从域请求 SSL 证书或 keytab。(仅证书的公钥存储在服务记录中。私钥是该服务的本地密钥。)
IdM 域在机器之间建立通用性,具有通用身份信息、通用策略和共享服务。属于域的任何计算机充当域的客户端,这意味着它使用域所提供的服务。IdM 域为机器提供三个主要服务:
  • DNS
  • Kerberos
  • 证书管理
与用户一样,机器是由 IdM 管理的身份。客户端机器使用 DNS 来识别 IdM 服务器、服务和域成员。就像用户身份一样,它们存储在 IdM 服务器的 389 目录服务器实例中。与用户一样,计算机可以使用 Kerberos 或证书验证域。
从机器的角度来看,有几个任务可以访问这些域服务:
  • 加入 DNS 域(机器注册
  • 管理 DNS 条目和区域
  • 管理机器身份验证
IdM 中的身份验证包括机器和用户。IdM 服务器需要机器身份验证才能信任机器并接受来自该机器上安装的客户端软件的 IdM 连接。验证客户端后,IdM 服务器可以响应其请求。IdM 支持三种不同的机器身份验证方法:
  • SSH 密钥。主机的 SSH 公钥已创建并上传到主机条目。从那里,系统安全服务守护进程(SSSD)使用 IdM 作为身份提供程序,并可与 OpenSSH 和其他服务一起引用位于身份管理中的公钥。这在 第 12.5 节 “管理主机的公共 SSH 密钥” 中描述。
  • 键表(或 keytab、 对称密钥集在某种程度上用户密码)和计算机证书.Kerberos 票据作为 Kerberos 服务的一部分生成,由服务器定义的策略。最初授予 Kerberos 票据、续订 Kerberos 凭证甚至销毁 Kerberos 会话也由 IdM 服务处理。Kerberos 管理包括在 第 29 章 管理 Kerberos 域 中。
  • 计算机证书。在这种情况下,计算机使用 IdM 服务器的证书认证机构发布的 SSL 证书,然后存储在 IdM 的目录服务器中。证书然后发送到计算机,当它向服务器进行身份验证时会存在该证书。在客户端上,证书由名为 certmonger 的服务管理。

12.2. 关于主机条目配置属性

主机条目可以包含其系统配置之外的主机的信息,如其物理位置、MAC 地址、密钥和证书。
如果手动创建主机条目,则可以在创建此类信息时设置该信息;否则,在主机注册后,大多数此类信息都需要添加到主机条目中。
表 12.1. 主机配置属性
UI 字段 命令行选项 Description
Description --desc=description 主机的描述。
地点 --locality=locality 主机的地理位置。
位置 --location=location 主机的物理位置,如其数据中心机架。
平台 --platform=string 主机硬件或架构.
操作系统 --os=string 主机的操作系统和版本。
MAC 地址 --macaddress=address 主机的 MAC 地址。这是一个多值属性。NIS 插件使用 MAC 地址为主机创建 NIS ethers 映射。
SSH 公钥 --sshpubkey=string 主机的完整 SSH 公钥。这是一个多值属性,因此可以设置多个键。
主体名称(不可编辑) --principalname=principal 主机的 Kerberos 主体名称。除非在 -p 中显式设置了不同的主体,否则默认为客户端安装期间的主机名。这可以通过命令行工具进行更改,但不能在 UI 中更改。
设置一次性密码 --password=string 为主机设置可批量注册的密码。
- --random 生成要在批量注册时使用的随机密码。
- --certificate=string 主机的证书 blob。
- --updatedns 这会设置主机在其 IP 地址更改时是否可以动态更新其 DNS 条目。

12.3. 添加主机条目

12.3.1. 从 Web UI 添加主机条目

  1. 打开 Identity 选项卡,然后选择 Hosts 子选项卡。
  2. 单击主机列表顶部的 Add

    图 12.1. 添加主机条目

    添加主机条目
  3. 填写机器名称,并从下拉列表中配置的区域中选择域。如果已经为主机分配了静态 IP 地址,则将它与主机条目一起包含,以便完全创建 DNS 条目。
    另外,若要为某些用例向主机添加额外的值,请使用 Class 字段。在此属性中放置的语义用于本地解释。

    图 12.2. 添加主机向导

    添加主机向导
    DNS 区域可以在 IdM 中创建,如 第 33.4.1 节 “添加和删除主 DNS 区域” 中所述。如果 IdM 服务器不管理 DNS 服务器,则可以在菜单区域中手动输入区,如常规文本字段。
    注意
    如果要跳过检查主机是否可以通过 DNS 解析,请选择 Force 复选框。
  4. Add and Edit 按钮直接进入展开的条目页面,并填写更多属性信息。有关主机硬件和物理位置的信息可以包含在主机条目中。

    图 12.3. 扩展的条目页面

    扩展的条目页面

12.3.2. 从命令行添加主机条目

主机条目使用 host-add 命令来创建。此命令将主机条目添加到 IdM 目录服务器中。ipa host 手册页中列出了带有 host-add 的选项的完整列表。在最基本的情况下,添加操作只需要客户端主机名将客户端添加到 Kerberos 域中,并在 IdM LDAP 服务器中创建条目:
$ ipa host-add client1.example.com
如果 IdM 服务器配置为管理 DNS,那么也可以使用 --ip-address--force 选项将主机添加到 DNS 资源记录中。

例 12.1. 创建具有静态 IP 地址的主机条目

$ ipa host-add --force --ip-address=192.168.166.31 client1.example.com
通常,在配置客户端时,主机可能没有静态 IP 地址或 IP 地址可能不知道。例如,笔记本电脑可能预配置为身份管理客户端,但它们在配置时没有 IP 地址。使用 DHCP 的主机仍然可以使用 --force 配置 DNS 条目。这基本上在 IdM DNS 服务中创建占位符条目。当 DNS 服务动态更新其记录时,会检测到主机的当前 IP 地址并更新其 DNS 记录。

例 12.2. 创建具有 DHCP 的主机条目

$ ipa host-add --force client1.example.com
使用 host-del 命令删除主机记录。如果 IdM 域使用 DNS,-- updatedns 选项也会从 DNS 中删除主机任何类型的关联记录。
$ ipa host-del --updatedns client1.example.com

12.4. 禁用和重新启用主机条目

活动主机可由域中的其他服务、主机和用户访问。有些情况下,需要从活动中删除主机。但是,删除主机会删除该条目及所有关联的配置,并且会永久删除。

12.4.1. 禁用主机条目

禁用主机可防止域用户访问该主机,而不将其永久从域中删除。这可以通过使用 host-disable 命令来完成。
例如:
[jsmith@ipaserver ~]$ kinit admin
[jsmith@ipaserver ~]$ ipa host-disable server.example.com
重要
禁用主机条目不仅会禁用该主机。它还会禁用该主机上每个配置的服务。

12.4.2. 重新启用主机

这部分描述了如何重新启用禁用的 IdM 主机。
禁用主机会删除其活动 keytab,该选项卡将主机从 IdM 域中删除,而不影响其配置条目。
要重新启用主机,请使用 ipa-getkeytab 命令,添加:
  • -s 选项来指定要从哪个 IdM 服务器请求 keytab
  • -p 选项来指定主体名称
  • k 选项来指定保存 keytab 的文件。
例如,要为 client.example.comserver.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"。重要的是,凭据对应于允许为主机创建 keytab 的用户。
如果您在活动的 IdM 客户端或服务器上运行 ipa-getkeytab 命令,那么如果用户具有使用 kinit admin 获取的 TGT,您可以在没有 LDAP 凭据(-D-w)的情况下运行它。若要在禁用的主机上直接运行命令,请提供 LDAP 凭据来向 IdM 服务器进行身份验证。

12.5. 管理主机的公共 SSH 密钥

OpenSSH 使用 公钥 对主机进行身份验证。一台计算机尝试访问另一台计算机并显示其密钥对。主机第一次进行身份验证时,目标计算机上的管理员必须手动批准请求。然后,机器将主机的公钥存储在 known_hosts 文件中。每当远程机器再次尝试访问目标机器时,目标机器只需检查其 known_hosts 文件,然后自动授予对批准的主机的访问权限。
这个系统有几个问题:
  • known_hosts 文件将主机条目存储在主机 IP 地址、主机名和密钥的 triplet 中。如果 IP 地址发生更改(在虚拟环境和数据中心中很常见)或更新密钥,此文件可以快速过时。
  • SSH 密钥必须手动分发给环境中的所有计算机。
  • 管理员必须批准主机密钥才能将它们添加到配置中,但很难正确验证主机或密钥问题者,这可能会导致安全问题。
在 Red Hat Enterprise Linux 上,系统安全服务守护进程(SSSD)可以配置为缓存和检索主机 SSH 密钥,以便应用程序和服务必须只查找主机密钥的一个位置。由于 SSSD 可以使用身份管理作为其身份信息提供商之一,因此身份管理提供了密钥的通用和集中存储库。管理员无需担心分发、更新或验证主机 SSH 密钥。

12.5.1. 关于 SSH 密钥格式

当密钥上传到 IdM 条目时,密钥格式可以是 OpenSSH 样式的密钥或 原始 RFC 4253 风格的 Blob。任何 RFC 4253 风格的密钥都会自动转换为 OpenSSH 样式的密钥,然后再导入并保存到 IdM LDAP 服务器中。
IdM 服务器可以从上传的密钥 blob 中识别密钥类型,如 RSA 或 DSA 密钥。但是,在文件(如 ~/.ssh/known_hosts )中,密钥条目由服务器的主机名和 IP 地址标识,然后输入密钥本身。例如:
host.example.com,1.2.3.4 ssh-rsa AAA...ZZZ==
这与用户公钥条目稍有不同,后者中含有 类型为 key== 注释 的元素:
"ssh-rsa ABCD1234...== ipaclient.example.com"
可以将密钥文件中的所有三个部分上传到,再查看主机条目。在这种情况下,需要重新排序 ~/.ssh/known_hosts 文件中的主机公钥条目,以匹配用户密钥的格式,输入 key== comment
ssh-rsa AAA...ZZZ== host.example.com,1.2.3.4
可以从公钥的内容中自动确定密钥类型,注释是可选的,从而更轻松地识别单个密钥。唯一必需的元素是公钥 Blob 本身。

12.5.2. 关于 ipa-client-install 和 OpenSSH

默认情况下,ipa-client-install 脚本在 IdM 客户端机器上配置 OpenSSH 服务器和客户端。它还将 SSSD 配置为执行主机和用户密钥缓存。基本上,只需配置客户端即可执行主机使用 SSSD、OpenSSH 和身份管理进行密钥缓存和检索所需的所有配置。
如果使用客户端安装(默认值)启用了 SSH 服务(默认值),则在 ssh 服务首次启动时会创建一个 RSA 密钥。
注意
当使用 ipa-client-install 将机器添加为 IdM 客户端时,会创建带有两个 SSH 密钥 RSA 和 DSS 的客户端。
还有额外的客户端配置选项 --ssh-trust-dns,可以使用 ipa-client-install 运行,并自动配置 OpenSSH 来信任存储密钥指纹的 IdM DNS 记录。
或者,也可以使用 --no-sshd 选项,在安装客户端时禁用 OpenSSH。这可防止安装脚本配置 OpenSSH 服务器。
另一个选项 --no-dns-sshfp 可防止主机使用自己的 DNS 条目创建 DNS SSHFP 记录。这可与 --no-sshd 选项或不带 --no-sshd 选项一起使用。

12.5.3. 通过 Web UI 上传主机 SSH 密钥

  1. 主机的密钥可以从 ~/.ssh/known_hosts 检索。例如:
    server.example.com,1.2.3.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApvjBvSFSkTU0WQW4eOweeo0DZZ08F9Ud21xlLy6FOhzwpXFGIyxvXZ52+siHBHbbqGL5+14N7UvElruyslIHx9LYUR/pPKSMXCGyboLy5aTNl5OQ5EHwrhVnFDIKXkvp45945R7SKYCUtRumm0Iw6wq0XD4o+ILeVbV3wmcB1bXs36ZvC/M6riefn9PcJmh6vNCvIsbMY6S+FhkWUTTiOXJjUDYRLlwM273FfWhzHK+SSQXeBp/zIn1gFvJhSZMRi9HZpDoqxLbBB9QIdIw6U4MIjNmKsSI/ASpkFm2GuQ7ZK9KuMItY2AoCuIRmRAdF8iYNHBTXNfFurGogXwRDjQ==
    如有必要,生成主机密钥。在使用 OpenSSH 工具时,请确保使用空白密码短语,并将密钥保存到与用户的 ~/.ssh/ 目录不同的位置,因此它不会覆盖任何现有密钥。
    [jsmith@server ~]$ ssh-keygen -t rsa -C "server.example.com,1.2.3.4"
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/jsmith/.ssh/id_rsa): /home/jsmith/.ssh/host_keys
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/jsmith/.ssh/host_keys.
    Your public key has been saved in /home/jsmith/.ssh/host_keys.pub.
    The key fingerprint is:
    SHA256:GAUIDVVEgly7rs1lTWP6oguHz8BKvyZkpqCqVSsmi7c server.example.com
    The key's randomart image is:
    +--[ RSA 2048]----+
    |              .. |
    |               .+|
    |          o   .* |
    |         o . .. *|
    |        S + .  o+|
    |         E . .. .|
    |        . = .  o |
    |         o .  ..o|
    |            .....|
    +-----------------+
  2. 从 密钥文件复制公钥。full key 条目的格式为 主机名,IP 类型 key==。仅需要 key==,但可以存储整个条目。若要使用 条目中的所有元素,请重新排列条目,使其顺序为 key== [host name,IP]
    [jsmith@server ~]$ cat /home/jsmith/.ssh/host_keys.pub
    
    ssh-rsa AAAAB3NzaC1yc2E...tJG1PK2Mq++wQ== server.example.com,1.2.3.4
  3. 打开 Identity 选项卡,然后选择 Hosts 子选项卡。
  4. 单击要编辑的主机的名称。

    图 12.4. 主机列表

    主机列表
  5. Settings 选项卡的 Host Settings 区域,单击 SSH 公钥 旁边的 Add

    图 12.5. 添加 SSH 密钥

    添加 SSH 密钥
  6. 粘贴主机的公钥,然后单击 Set

    图 12.6. 设置 SSH 密钥

    设置 SSH 密钥
    SSH 公钥 区域现在显示新密钥。单击 Show/Set key 将打开提交的密钥。
  7. 要上传多个密钥,请单击公钥列表下的 Add 链接,并上传其他密钥。
  8. 提交所有密钥后,单击主机页面顶部的 Save 以保存更改。
保存公钥后,条目将显示为密钥指纹、注释(如果包含公钥)和密钥类型[2].
上传主机密钥后,将 SSSD 配置为使用身份管理作为其身份域之一,并设置 OpenSSH 以使用 SSSD 工具来管理主机密钥,如 第 22.6 节 “配置 SSSD 为 OpenSSH 服务提供缓存” 所述。

12.5.4. 从命令行添加主机密钥

主机 SSH 密钥添加到 IdM 中的主机条目中,可以是使用 host-add 创建或稍后修改条目时。
注意
RSA 和 DSS 主机密钥由 ipa-client-install 命令创建,除非安装脚本中明确禁用了 SSH 服务。
  1. 使用 --sshpubkey 选项运行 host-mod 命令,将 base64 编码的公钥上传到主机条目。
    添加主机密钥也会更改主机的 DNS SSHFP 条目,因此也使用 --updatedns 选项来更新主机的 DNS 条目。
    例如:
    [jsmith@server ~]$ ipa host-mod --sshpubkey="ssh-rsa RjlzYQo==" --updatedns host1.example.com
    实际密钥通常也以等号(=)结尾,但时间较长。
    要上传多个密钥,请输入多个 --sshpubkey 命令行参数:
    --sshpubkey="RjlzYQo==" --sshpubkey="ZEt0TAo=="
    注意
    个主机可以有多个公钥。
  2. 上传主机密钥后,将 SSSD 配置为使用身份管理作为其身份域之一,并设置 OpenSSH 以使用 SSSD 工具来管理主机密钥,如 第 22.6 节 “配置 SSSD 为 OpenSSH 服务提供缓存” 所述。

12.5.5. 删除主机密钥

主机密钥在过期或不再有效后可将其删除。
要删除单个主机密钥,最简单的方法是通过 Web UI 删除该密钥:
  1. 打开 Identity 选项卡,然后选择 Hosts 子选项卡。
  2. 单击要编辑的主机的名称。

    图 12.7. 主机列表

    主机列表
  3. SSH 公钥 区域中,点 Delete by the key 的指纹将其移除。

    图 12.8. 公钥删除

    公钥删除
  4. 单击主机页面顶部的 Save,以保存更改。
命令行工具可用于删除所有密钥。这可以通过运行 ipa host-mod,并将 --sshpubkey= 设置为空白值;这将删除主机 的所有 公钥。此外,使用 --updatedns 选项更新主机的 DNS 条目。例如:
[jsmith@server ~]$ kinit admin
[jsmith@server ~]$ ipa host-mod --sshpubkey= --updatedns host1.example.com


[2] 如果密钥类型不包含在上传密钥中,则从密钥本身自动确定密钥类型。

12.6. 为主机设置 ethers 信息

NIS 可以托管 ethers 表,它可以用来根据其平台、操作系统、DNS 域和 MAC 地址 - 保存在 IdM 中的主机条目中管理 DHCP 配置文件。
在身份管理中,每个系统都会在目录中使用对应的 ethers 条目创建,位于 ou=ethers 子树中。
cn=server,ou=ethers,dc=example,dc=com
此条目用于为 ethers 服务创建 NIS 映射,该服务可以由 IdM 中的 NIS 兼容性插件管理。
ethers 条目配置 NIS 映射:
  1. 将 MAC 地址属性添加到主机条目。例如:
    [jsmith@server ~]$ kinit admin
    [jsmith@server ~]$ ipa host-mod --macaddress=12:34:56:78:9A:BC server.example.com
  2. 打开 nsswitch.conf 文件。
  3. ethers 服务添加一行,并将其设置为使用 LDAP 进行查找。
    ethers: ldap
  4. 检查 ethers 信息是否可用于客户端。
    [root@server ~]# getent ethers server.example.com

第 13 章 管理用户和组

13.1. IdM 中的用户和组如何工作

13.1.1. 用户和组是什么

用户组是一组具有常见特权、密码策略和其他特征的用户。
主机组是一组具有常见访问控制规则和其他特征的 IdM 主机。
例如,您可以定义公司部门、物理位置或访问控制需求的组。

13.1.2. 支持的组成员

IdM 中的用户组可以包括:
  • IdM 用户
  • 其他 IdM 用户组
  • 外部用户,它们是 IdM 外部存在的用户
IdM 中的主机组可以包括:
  • IdM 服务器和客户端
  • 其他 IdM 主机组

13.1.3. 直接和间接组成员

IdM 中的用户和组属性同时应用到直接成员和间接成员:当组 B 是组 A 的成员时,组 B 中的所有用户都将被视为组 A 的成员。
  • 用户 1 和用户 2 是组 A 的直接成员
  • 用户 3、用户 4 和用户 5 是组 A 的间接成员

图 13.1. 直接和间接组成员身份

直接和间接组成员身份
如果您为用户组 A 设置密码策略,该策略也会应用到用户组 B 中的所有用户。

例 13.1. 查看直接组成员和间接组成员

  1. 创建两个组: group_Agroup_B。请参阅 第 13.2 节 “添加和删除用户或主机组”
  2. 添加:
    • 一个用户作为 group_A的成员
    • 另一个用户作为 group_B的成员
    • group_ b 作为 group_A的成员
  3. 在 Web UI 中:选择 IdentityGroups。在左侧的侧边栏中列出的单独组类型,选择 User Groups,然后单击 group_A 的名称。在 Direct MembershipIndirect Membership 之间切换。

    图 13.2. 间接和直接成员

    间接和直接成员
  4. 在命令行中:使用 ipa group-show 命令:
    $ ipa group-show group_A
      ...
      Member users: user_1
      Member groups: group_B
      Indirect Member users: user_2
间接成员列表不包括来自可信活动目录域的外部用户。Active Directory 信任用户对象在 IdM 界面中不可见,因为它们不作为 IdM 中的 LDAP 对象存在。

13.1.4. IdM 中的用户组类型

POSIX 组(默认)
POSIX 组支持其成员的 POSIX 属性。请注意,与 Active Directory 交互的组无法使用 POSIX 属性。
非 POSIX 组
这种类型的组的所有组成员都必须属于 IdM 域。
外部组
外部组允许添加存在于 IdM 域外的身份存储中的组成员。外部存储可以是本地系统、Active Directory 域或目录服务。
非 POSIX 和外部组不支持 POSIX 属性。例如,这些组没有定义 GID。

例 13.2. 搜索不同的用户组群类型

  1. 运行 ipa group-find 命令来显示所有用户组。
  2. 运行 ipa group-find --posix 命令来显示所有 POSIX 组。
  3. 运行 ipa group-find --nonposix 命令来显示所有非 POSIX 组。
  4. 运行 ipa group-find --external 命令来显示所有外部组。

13.1.5. 默认创建的用户和组

表 13.1. 默认创建的用户和组
组名称 用户或主机 默认组成员
ipausers 用户组 所有 IdM 用户
admins 用户组 具有管理特权的用户,最初是默认的 admin 用户
editors 用户组 用户允许在 Web UI 中编辑其他 IdM 用户,而无需管理员用户的所有权限
trust admins 用户组 具有管理 Active Directory 信任的特权用户
ipaservers 主机组 所有 IdM 服务器主机
将用户添加到用户组应用与组关联的特权和策略。例如,将用户添加到 admins 组会授予用户管理特权。
警告
不要删除 admins 组。由于 admins 是 IdM 要求的预定义组,因此此操作会导致某些命令出现问题。
警告
将主机添加到 ipaservers 主机组时要小心。ipaservers 中的所有主机都能够将其自身提升到 IdM 服务器。
另外,当在 IdM 中创建新用户时,IdM 默认会创建用户私有组
  • 用户专用组的名称与为其创建的用户的名称相同。
  • 用户是用户专用组的唯一成员。
  • 专用组的 GID 与用户的 UID 相匹配。

例 13.3. 查看用户专用组

运行 ipa group-find --private 命令来显示所有用户私有组:
$ ipa group-find --private
----------------
2 groups matched
----------------
  Group name: user1
  Description: User private group for user1
  GID: 830400006

  Group name: user2
  Description: User private group for user2
  GID: 830400004
----------------------------
Number of entries returned 2
----------------------------
在某些情况下,最好避免创建用户专用组,例如 NIS 组或其他系统组已使用分配给用户专用组的 GID。请参阅 第 13.4 节 “禁用用户专用组”

13.2. 添加和删除用户或主机组

要添加组,您可以使用:
IdM 在创建用户组时启用自定义 GID。如果您这样做,请小心以避免 ID 冲突。请参阅 第 14.6 节 “确保唯一 ID 值”。如果没有指定自定义的 GID,IdM 会自动从可用的 ID 范围内分配一个 GID。
要删除组,您可以使用:
请注意,删除组不会从 IdM 删除组成员。
Web UI:添加用户或主机组
  1. 单击 IdentityGroups,然后在左侧栏中选择 User GroupsHost Groups
  2. 单击 Add 开始添加组。
  3. 填写有关组的信息。
    有关用户组群类型的详情请参考 第 13.1.4 节 “IdM 中的用户组类型”
  4. 单击 Add 确认。
命令行:添加用户或主机组
  1. 以管理员身份登录:
    $ kinit admin
  2. 要添加用户组,请使用 ipa group-add 命令。要添加主机组,请使用 ipa hostgroup-add 命令。
    $ ipa group-add group_name
    -----------------------
    Added group "group_name"
    ------------------------
默认情况下,ipa group-add 添加 POSIX 用户组。要指定不同的组类型,请在 ipa group-add 中添加选项:
  • --nonposix 用来创建非 POSIX 组
  • --external 用来创建外部组
有关组类型的详情请参考 第 13.1.4 节 “IdM 中的用户组类型”
Web UI:删除用户或主机组
  1. IdentityGroups,再选择左侧栏中的 User GroupsHost Groups
  2. 选择要删除的组,然后单击 Delete
命令行:删除用户或主机组
  1. 以管理员身份登录:
    $ kinit admin
  2. 要删除用户组,请使用 ipa group-del group_name 命令。要删除主机组,请使用 ipa hostgroup-del group_name 命令。
    $ ipa group-del group_name
    --------------------------
    Deleted group "group_name"
    --------------------------

13.3. 添加和删除用户或主机组成员

要将成员添加到用户组中,您可以使用:
重要
当添加另一个用户组作为成员时,请不要创建递归组。例如,如果组 A 是组 B 的成员,则不要将组 B 添加为组 A 的成员。递归组可能会导致无法预料的行为。
要从用户组群中删除成员,您可以使用:
注意
将成员添加到用户或主机组后,更新可能需要一些时间才能分散到身份管理环境中的所有客户端。这是因为,当任何给定主机解析用户、组或网络组时,系统安全服务守护进程 (SSSD)首先查看其缓存,并且仅对缺失或过期的记录执行服务器查找。
要查看立即应用到主机组的更改,请使用 cache purge 实用程序 sss_cache 更新主机上的 SSSD 缓存。使用 sss_cache 为主机组使 SSSD 缓存中的当前记录无效,强制 SSSD 缓存从身份提供程序检索更新的记录,以便快速进行更改。
SSSD 缓存中清除主机组条目:
# sss_cache -n host_group_name
Web UI:将成员添加到用户或主机组
  1. IdentityGroups,再选择左侧栏中的 User GroupsHost Groups
  2. 单击组的名称。
  3. 选择您要添加的组成员类型。例如,用户、用户组 或 External (用户组)。

    图 13.3. 添加用户组群成员

    添加用户组群成员
  4. 点击 Add
  5. 选择您要添加的成员,然后单击 Add 确认。
命令行:将成员添加到用户组中
  1. 可选。使用 ipa group-findipa hostgroup-find 命令查找组。
  2. 要将成员添加到用户组,请使用 ipa group-add-member 命令。要将成员添加到主机组,请使用 ipa hostgroup-add-member 命令。
    添加用户组群成员时,使用以下选项指定成员:
    • --users 添加 IdM 用户
    • --external 添加一个存在于 IdM 域外的用户,格式为 DOMAIN\user_nameuser_name@domain
    • --groups 添加 IdM 用户组
    添加主机组 member 时,使用以下选项指定成员:
    • --hosts 添加 IdM 主机
    • --groups 添加 IdM 主机组

    例 13.4. 将成员添加到用户组中的命令示例

    user1user2group1 添加到名为 group_name 的组中:
    $ ipa group-add-member group_name --users=user1 --users=user2 --groups=group1
    要将 ad_user 从名为 ad_domain 的域添加到名为 group_name 的组中,您可以选择如何指定外部用户。例如:
    $ ipa group-add-member group_name --external='AD_DOMAIN\ad_user'
    $ ipa group-add-member group_name --external='ad_user@AD_DOMAIN'
    $ ipa group-add-member group_name --external='ad_user@AD_DOMAIN.EXAMPLE.COM'
    
Web UI:从用户组中删除成员
  1. IdentityGroups,再选择左侧栏中的 User GroupsHost Groups
  2. 单击组的名称。
  3. 选择您要删除的组成员类型。例如,用户、用户组 或 External (用户组)。

    图 13.4. 删除用户组群成员

    删除用户组群成员
  4. 选中所需成员旁边的复选框。
  5. 单击 Delete
命令行:从用户组中删除成员
  1. 可选。使用 ipa group-showipa hostgroup-show 命令确认组是否包含您要删除的成员。
  2. 要删除用户组成员,请使用 ipa group-remove-member 命令。要删除主机组成员,请使用 ipa hostgroup-remove-member 命令。
    删除用户组群成员时,使用以下选项指定成员:
    • --users 删除 IdM 用户
    • --external 删除存在于 IdM 域外的用户,格式为 DOMAIN\user_nameuser_name@domain
    • --groups 删除 IdM 用户组
    删除主机组 member 时,使用以下选项指定成员:
    • --hosts 删除 IdM 主机
    • --groups 删除 IdM 主机组
    例如,要从名为 group_name 的组中删除 user1user2group1
    $ ipa group-remove-member group_name --users=user1 --users=user2 --groups=group1

13.4. 禁用用户专用组

要确定 IdM 没有为新用户创建默认用户私有组,请选择以下之一:
即使禁用了创建默认用户私有组,在添加新用户时 IdM 仍需要 GID。要确保添加用户成功,请参阅 第 13.4.3 节 “添加用户专用组禁用的用户”
注意
如果您要禁用因 GID 冲突而创建默认用户私有组,请考虑更改默认 UID 和 GID 分配范围。请参阅 第 14 章 唯一 UID 和 GID 编号分配

13.4.1. 创建没有用户专用组的用户

ipa user-add 命令中添加 --noprivate 选项。请注意,要使命令成功,您必须指定自定义专用组。请参阅 第 13.4.3 节 “添加用户专用组禁用的用户”

13.4.2. 针对所有用户全局禁用用户专用组

  1. 以管理员身份登录:
    $ kinit admin
  2. IdM 使用 Directory Server Managed Entries 插件来管理用户私有组。列出插件的实例:
    $ ipa-managed-entries --list
  3. 为确保 IdM 不会创建用户私有组,请禁用负责管理用户私有组的插件实例:
    $ ipa-managed-entries -e "UPG Definition" disable
    Disabling Plugin
    注意
    要在稍后重新启用 UPG Definition 实例,请使用 ipa-managed-entries -e "UPG Definition" enable 命令。
  4. 重新启动目录服务器来加载新配置。
    # systemctl restart dirsrv.target

13.4.3. 添加用户专用组禁用的用户

要确保在创建默认用户私有组时添加新用户成功,请选择以下之一:
  • 添加新用户时指定自定义的 GID。GID 不必对应于已经存在的用户组。
    例如,当从命令行添加用户时,请在 ipa user-add 命令中添加 --gid 选项。
  • 使用自动成员规则将用户添加到具有 GID 的现有组中。请参阅 第 13.6 节 “为用户和主机定义自动组成员资格”

13.5. 为用户和组设置搜索属性

当使用 ipa user-find 关键字和 ipa group-find 关键字 命令搜索指定 关键字 时,IdM 仅搜索某些属性。最值得注意的是:
  • 在用户搜索中:名字、姓、用户名(登录 ID)、作业标题、组织单元、电话号码、UID、电子邮件地址.
  • 在组搜索中:组名称、描述.
以下流程演示了如何配置 IdM 来搜索其他属性。请注意,IdM 始终搜索默认属性。例如,即使您从用户搜索属性列表中删除作业标题属性,IdM 仍将搜索用户标题。
先决条件
在添加新属性之前,请确保此属性的 LDAP 目录中存在对应的索引。大多数标准 LDAP 属性在 LDAP 中都有索引,但如果要添加自定义属性,则必须手动创建索引。请参阅 Red Hat Directory Server 10 管理指南中的 创建标准索引
Web UI:设置搜索属性
  1. 选择 IPA ServerConfiguration
  2. User Options 区域中,在 User search 字段中设置用户搜索属性。
  3. Group Options 区域中,在 Group 搜索字段中设置组搜索 属性。
  4. 点页面顶部的 Save
命令行:设置搜索属性
使用带有以下选项的 ipa config-mod 命令:
  • --usersearch 为用户定义新的搜索属性列表
  • --groupsearch 为组定义一个新的搜索属性列表
例如:
$ ipa config-mod --usersearch="uid,givenname,sn,telephonenumber,ou,title"
$ ipa config-mod --groupsearch="cn,description"

13.6. 为用户和主机定义自动组成员资格

13.6.1. IdM 中的自动组成员资格工作

13.6.1.1. 自动组成员资格是什么
通过使用自动组成员身份,您可以根据用户和组的属性自动分配用户和组。例如,您可以:
  • 根据员工的经理、位置或任何其他属性,将员工的用户条目划分为组。
  • 根据主机的类、位置或任何其他属性来划分主机。
  • 将所有用户或全部主机添加到单个全局组。
13.6.1.2. 自动组成员的好处
手动管理组成员开销
利用自动组成员身份,管理员不再手动将用户和组分配用户和组。
提高了用户和主机管理的一致性
利用自动组成员身份,根据严格定义和自动评估的标准,用户和主机分配到组中。
更轻松地管理基于组的设置
为组定义各种设置,然后应用到各个组成员,如 sudo 规则、自动挂载 或访问控制。使用自动组成员身份时,用户和主机会自动添加到指定组中,从而更加轻松地管理基于组的设置。
13.6.1.3. Automember 规则
在配置自动组成员身份时,管理员定义 自动成员规则。自动成员规则应用到特定的用户或主机组。它包括 用户或主机必须满足的条件 才能包含或排除在组中:
包含的条件
当用户或主机条目符合包含条件时,它将包含在组中。
排他条件
当用户或主机条目符合独占条件时,它不会 包含在组中。
条件被指定为 Perl 兼容的正则表达式(PCRE)格式的正则表达式。有关 PCRE 的详情,请参考 pcresyntax(3) man page。
IdM 在包含条件之前评估排他条件。在发生冲突时,排他条件优先于包含条件。

13.6.2. 添加自动成员规则

使用以下方法添加自动成员规则:
添加自动成员规则后:
Web UI:添加自动成员规则
  1. 选择 IdentityAutomemberUser group rulesHost group rules
  2. 点击 Add
  3. Automember rule 字段中,选择规则要应用的组。点 Add and Edit
  4. 定义一个或多个包含和独占条件。详情请查看 第 13.6.1.3 节 “Automember 规则”
    1. InclusiveExclusive 部分中,点 Add
    2. Attribute 字段中,选择所需的属性。
    3. Expression 字段中,定义正则表达式。
    4. 点击 Add
    例如,以下条件以其用户登录属性(uid)中具有 任何值(IANA)的所有用户为目标。

    图 13.5. 添加自动成员规则条件

    添加自动成员规则条件
命令行:添加自动成员规则
  1. 使用 ipa automember-add 命令添加自动成员规则。在提示时,指定:
    • 自动成员规则,与目标组名称匹配。
    • 分组 Type,它指定规则是否以用户组还是主机组为目标。要以用户组为目标,请输入 group。要以主机组为目标,请输入 hostgroup
    例如,要为名为 user_group 的用户组添加自动成员规则:
    $ ipa automember-add
    Automember Rule: user_group
    Grouping Type: group
    --------------------------------
    Added automember rule "user_group"
    --------------------------------
      Automember Rule: user_group
  2. 定义一个或多个包含和独占条件。详情请查看 第 13.6.1.3 节 “Automember 规则”
    1. 要添加条件,请使用 ipa automember-add-condition 命令。在提示时,指定:
      • 自动成员规则,与目标组名称匹配。
      • 属性 Key,用于指定过滤器将应用到的条目属性。例如,用户的 经理
      • 分组 Type,它指定规则是否以用户组还是主机组为目标。要以用户组为目标,请输入 group。要以主机组为目标,请输入 hostgroup
      • 包含 正则表达式和 显式 正则表达式,其将一个或多个条件指定为正则表达式。如果您只想指定一个条件,请在提示输入其它条件时按 Enter 键。
      例如,以下条件以其用户登录属性(uid)中具有 任何值(IANA)的所有用户为目标。
      $ 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
      ----------------------------
    2. 要删除条件,请使用 ipa automember-remove-condition 命令。

例 13.5. 命令行:创建 Automember 规则以将所有条目添加到单个组中

通过为所有用户或主机条目包含的属性创建包含条件,如 cnfqdn,您可以确保以后创建的所有用户或主机将添加到单个组中。
  1. 创建组,如名为 all_hosts 的主机组。请参阅 第 13.2 节 “添加和删除用户或主机组”
  2. 为新主机组添加自动成员规则。例如:
    $ ipa automember-add
    Automember Rule: all_hosts
    Grouping Type: hostgroup
    -------------------------------------
    Added automember rule "all_hosts"
    -------------------------------------
      Automember Rule: all_hosts
  3. 添加以所有主机为目标的包含条件。在以下示例中,包含条件以 fqdn 属性中的任何值(IANA)的主机为目标:
    $ ipa automember-add-condition
    Automember Rule: all_hosts
    Attribute Key: fqdn
    Grouping Type: hostgroup
    [Inclusive Regex]: .*
    [Exclusive Regex]:
    ---------------------------------
    Added condition(s) to "all_hosts"
    ---------------------------------
      Automember Rule: all_hosts
      Inclusive Regex: fqdn=.*
    ----------------------------
    Number of conditions added 1
    ----------------------------
以后添加的所有主机将自动成为 all_hosts 组的成员。

例 13.6. 命令行:为同步 AD 用户创建自动成员规则

从 Active Directory (AD)同步的 Windows 用户共享 ntUser 对象类。通过创建一个以 objectclass 属性中带有 ntUser 的所有用户的自动成员条件,您可以确保以后创建的所有同步 AD 用户都包含在 AD 用户的通用组中。
  1. 为 AD 用户创建一个用户组,如 ad_users。请参阅 第 13.2 节 “添加和删除用户或主机组”
  2. 为新用户组添加自动成员规则。例如:
    $ ipa automember-add
    Automember Rule: ad_users
    Grouping Type: group
    -------------------------------------
    Added automember rule "ad_users"
    -------------------------------------
      Automember Rule: ad_users
  3. 添加包含条件以过滤 AD 用户。在以下示例中,inclusive 条件以 objectclass 属性中的 ntUser 值的所有用户为目标:
    $ 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
    ----------------------------
以后添加的所有 AD 用户将自动成为 ad_users 用户组的成员。

13.6.3. 将自动成员规则应用到现有用户和主机

Automember 规则自动应用到添加规则后创建的用户和主机条目。它们不会追溯应用到添加规则之前存在的条目。
要将自动成员规则应用到添加规则前存在的条目,请手动重建自动成员资格。重建自动成员身份重新评估所有现有自动成员规则,并将其应用于所有条目或特定条目。
Web UI:重建现有条目的自动成员身份
重新构建所有用户或所有主机的自动成员资格:
  1. 选择 IdentityUsersHosts
  2. 单击 ActionsRebuild auto membership

    图 13.6. 为所有用户或主机重建自动成员身份

    为所有用户或主机重建自动成员身份
仅为单个用户或主机重建自动成员资格:
  1. 选择 IdentityUsersHosts,然后单击所需的用户登录或主机名。
  2. 单击 ActionsRebuild auto membership

    图 13.7. 为单个用户或主机重建自动成员身份

    为单个用户或主机重建自动成员身份
命令行:为现有条目重建自动成员
要为所有用户重建自动成员资格,请使用 ipa automember-rebuild --type=group 命令:
$ ipa automember-rebuild --type=group
--------------------------------------------------------
Automember rebuild task finished. Processed (9) entries.
--------------------------------------------------------
要为所有用户重建自动成员资格,请使用 ipa automember-rebuild --type=hostgroup 命令。
要为指定用户或用户重建自动成员资格,请使用 ipa automember-rebuild --users=user 命令:
$ ipa automember-rebuild --users=user1 --users=user2
--------------------------------------------------------
Automember rebuild task finished. Processed (2) entries.
--------------------------------------------------------
要为指定主机或主机重建自动成员资格,请使用 ipa automember-rebuild --hosts=example.com 命令。

13.6.4. 配置默认自动成员组

配置了默认的 automember 组时,与任何 automember 规则不匹配的用户或主机条目将自动添加到 default 组。
  1. 使用 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 "default_user_group"
    ---------------------------------------------------
      Default (fallback) Group: cn=default_user_group,cn=groups,cn=accounts,dc=example,dc=com
  2. 要验证组是否已正确设置,请使用 ipa automember-default-group-show 命令。命令显示当前的默认的自动成员组。例如:
    $ 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 命令。

第 14 章 唯一 UID 和 GID 编号分配

IdM 服务器生成用户 ID(UID)和组 ID(GID)值,同时确保副本永远不会生成相同的 ID。如果单个机构使用多个单独的域,对唯一 UID 和 GID 的要求甚至可能跨越 IdM 域。

14.1. ID 范围

UID 和 GID 编号分为多个 ID 范围。通过为个别服务器和副本保留单独的数字范围,为条目发出的 ID 值已由另一服务器上的另一条目使用的可能性很小。
分布式数字分配(DNA)插件,作为域的后端 389 目录服务器实例的一部分,确保范围在服务器和副本之间更新和共享;插件在所有 master 和副本之间管理 ID 范围。每个服务器或副本都有一个当前的 ID 范围,并在当前范围耗尽后服务器或副本使用的额外 下一个 ID 范围。有关 DNA 目录服务器插件的更多信息,请参阅 红帽目录服务器部署指南

14.2. 安装期间 ID 范围分配

在服务器安装过程中,ipa-server-install 命令默认会自动将随机当前 ID 范围分配给安装的服务器。设置脚本从总计 10,000 个可能的范围中随机选择 200,000 个 ID。当您决定以后合并两个独立的 IdM 域时,以这种方法选择一个随机范围可显著降低冲突 ID 的可能性。
但是,您可以使用 ipa-server-install 的以下两个选项在服务器安装过程中手动定义当前的 ID 范围:
  • --idstart 为 UID 和 GID 号提供了起始值;默认情况下,会随机选择值,
  • --idmax 给出 UID 和 GID 号的最大值;默认情况下,值为 --idstart 起始值加上 199,999。
如果您安装了单个 IdM 服务器,新的用户或组条目会从整个范围内接收随机 ID。当您安装新副本并且副本请求自己的 ID 范围时,服务器的初始 ID 范围会在服务器和副本之间分配:副本接收在初始 master 上可用的其余 ID 范围的一半。然后,服务器及副本将原始 ID 范围内的相应部分用于新条目。此外,如果分配到副本范围的 ID 范围内的 100 个 ID 少于 100 个 ID,则副本将保留,表示副本已接近其分配 ID 范围,则副本通过请求新的 ID 范围联系其他可用服务器。
服务器第一次使用 DNA 插件时收到 ID 范围;在此之前,服务器没有定义 ID 范围。例如,当您从主服务器创建副本时,副本不会立即收到 ID 范围。仅当副本上要分配第一个 ID 时,副本才会从初始主控机请求 ID 范围。
注意
如果初始 master 在副本请求 ID 范围之前停止运行,则副本无法通过 ID 范围的请求与主控机联系。尝试在副本中添加新用户会失败。在这种情况下,您可以找出分配给禁用的 master 的 ID 范围,并为副本手动分配 ID 范围,如 第 14.5 节 “手动 ID 范围扩展和分配新 ID 范围” 所述。

14.3. 显示当前分配 ID 范围

要显示为服务器配置了哪些 ID 范围,请使用以下命令:
  • ipa-replica-manage dnarange-show 显示所有服务器上设置的当前 ID 范围,或者如果您指定了一个服务器,则仅显示指定服务器上的当前 ID 范围,例如:
    # ipa-replica-manage dnarange-show
    masterA.example.com: 1001-1500
    masterB.example.com: 1501-2000
    masterC.example.com: No range set
    
    # ipa-replica-manage dnarange-show masterA.example.com
    masterA.example.com: 1001-1500
  • ipa-replica-manage dnanextrange-show 显示当前在所有服务器上设置的下一个 ID 范围,或者如果您指定了一个服务器,则仅显示指定服务器上的下一个 ID 范围,例如:
    # ipa-replica-manage dnanextrange-show
    masterA.example.com: 1001-1500
    masterB.example.com: No on-deck range set
    masterC.example.com: No on-deck range set
    
    # ipa-replica-manage dnanextrange-show masterA.example.com
     masterA.example.com: 1001-1500
有关这两个命令的详情请参考 ipa-replica-manage(1) man page。

14.4. 删除副本后自动 ID 范围扩展

当您删除可正常工作的副本时,ipa-replica-manage del 命令会检索分配给副本的 ID 范围,并将它们作为下一个范围添加到其他可用 IdM 副本。这样可确保 ID 范围仍然可供其他副本使用。
删除副本后,您可以使用 ipa-replica-manage dnarange-showipa-replica-manage dnanextrange-show 命令验证为其他服务器配置了哪些 ID 范围,如 第 14.3 节 “显示当前分配 ID 范围” 所述。

14.5. 手动 ID 范围扩展和分配新 ID 范围

在某些情况下,需要手动调整 ID 范围:
分配的 ID 范围已被耗尽
副本已耗尽分配给它的 ID 范围,请求额外 ID 会失败,因为其他副本的 ID 范围内没有其他可用 ID。您需要扩展分配给副本的 ID 范围。这可能涉及分割现有的 ID 范围,或者超过服务器初始配置的 ID 范围。或者,您可能想要分配一个新的 ID 范围。
注意
如果您分配了新的 ID 范围,则服务器上已存在的条目的 UID 将保持不变。这不会造成问题,因为即使您更改了当前的 ID 范围,IdM 也会保留过去分配的范围的记录。
副本停止工作
当副本终止且需要删除时,不会自动检索 ID 范围,这意味着之前分配给副本的 ID 范围变得不可用。您需要恢复 ID 范围,并使其可用于其他副本。
如果要恢复属于停止工作的服务器的 ID 范围,并将其分配给其他服务器,首先使用 ipa-replica-manage dnarange-show 命令找出 ID 范围值在 第 14.3 节 “显示当前分配 ID 范围” 中描述的,然后手动将该 ID 范围分配给服务器。此外,为了避免重复的 UID 或 GID,确保之前未将恢复范围内的 ID 值分配给用户或组;您可以通过检查现有用户和组的 UID 和 GID 来执行此操作。
要手动定义 ID 范围,请使用以下命令:
  • ipa-replica-manage dnarange-set 允许您为指定服务器定义当前的 ID 范围:
    # ipa-replica-manage dnarange-set masterA.example.com 1250-1499
  • ipa-replica-manage dnanextrange-set 允许您为指定服务器定义下一个 ID 范围:
    # ipa-replica-manage dnanextrange-set masterB.example.com 1001-5000
有关这些命令的详情请参考 ipa-replica-manage(1) man page。
重要
注意不要创建重叠的 ID 范围。如果您分配给服务器或副本的任何 ID 范围重叠了,可能会导致两个不同的服务器给不同的条目分配了相同的 ID 值。
不要设置 UID 值为 1000 或更低的 ID 范围;这些值是保留给系统使用的。另外,不要设置包含 0 值的 ID 范围;SSSD 服务不会处理 0 ID 值。
手动扩展 ID 范围时,请确保新扩展范围包含在 IdM ID 范围内;您可以使用 ipa idrange-find 命令检查它。运行 ipa idrange-find -h 命令显示如何使用 ipa idrange-find 的帮助信息。

14.6. 确保唯一 ID 值

建议您避免冲突 UID 或 GID。UID 和 GID 应始终是唯一的:两个用户不应具有相同的 UID,并且两个组不应具有相同的 GID。
自动 ID 分配
当以交互方式创建用户或组时,或者没有手动指定 ID 号,服务器会将 ID 范围内的下一个可用 ID 编号分配到用户帐户。这样可确保 UID 或 GID 始终是唯一的。
手动 ID 分配
当您手动为用户或组条目分配 ID 时,服务器不会验证指定的 UID 或 GID 唯一;如果您选择已由其他条目使用的值,它不会警告您发生冲突。
第 14.7 节 “修复更改的 UID 和 GID 号” 中所述,SSSD 服务不会处理 ID 相同的条目。如果两个条目共享相同的 ID 号,则搜索此 ID 仅返回第一个条目。但是,如果您搜索其他属性或运行 ipa user-find --all 命令,则返回这两个条目。
UID 和 GID 都从同一 ID 范围内选择。用户和组可以具有相同的 ID;在这种情况下不会发生任何冲突,因为 UID 和 GID 在两个不同的属性中设置: uidNumbergidNumber
注意
通过为用户和组设置相同的 ID,您可以配置用户专用组。要以这种方式为用户创建唯一系统组,请为用户和组设置相同的 ID 值,其中唯一成员是上述用户。

14.7. 修复更改的 UID 和 GID 号

当用户登录 IdM 系统或服务时,该系统中的 SSSD 会将其用户名与用户的 UID 和 GID 一起缓存。然后,SSSD 将 UID 用作用户的标识密钥。如果具有相同用户名但不同 UID 试图登录到系统的用户,SSSD 会注册两个不同的 UID,并假定存在两个不同的用户,且用户名冲突。如果用户的 UID 更改,这可能会造成问题。在这种情况下,SSSD 会错误地将修改后的 UID 的用户解释为新用户,而不是将其识别为具有不同 UID 的同一用户。如果现有用户的 UID 更改,用户就无法登录 SSSD 及关联的服务和域。这也会影响使用 SSSD 作为身份信息的客户端应用程序。
要临时解决这个问题,如果 UID 或 GID 更改,清除 SSSD 缓存,这可确保用户可以再次登录。例如,要清除指定用户的 SSSD 缓存,请使用 sss_cache 工具,如下所示:
[root@server ~]# sss_cache -u user

第 15 章 用户和组架构

创建用户条目时,会自动为其分配特定的 LDAP 对象类,这些类反过来会提供某些属性。LDAP 属性是信息存储在 目录中的方式。(在 Directory Server 部署指南和目录服务器架构 参考 中详细讨论。)
表 15.1. 默认身份管理用户对象类
对象类 描述
ipaobject
ipasshuser
IdM 对象类
OrganizationPerson
inetorgperson
inetuser
posixAccount
人员对象类
krbprincipalaux
krbticketpolicyaux
Kerberos 对象类
mepOriginEntry 受管条目(template)对象类
用户条目可以使用多个属性:有些是手动设置的,如果未设置特定值,则根据默认值设置。还有一个选项,可以添加 表 15.1 “默认身份管理用户对象类” 中的对象类中可用属性,即使该属性没有 UI 或命令行参数。另外,也可以配置默认属性生成的或使用的值,如 第 15.4 节 “指定默认用户和组属性” 所示。
表 15.2. 默认身份管理用户属性
UI 字段 命令行选项 必需、可选或默认[a]
用户登录 username 必需
--first 必需
--last 必需
全名 --cn 选填
显示名称 --displayname 选填
初始 --initials Default(默认)
主目录 --homedir Default(默认)
GECOS 字段 --gecos Default(默认)
shell --shell Default(默认)
Kerberos 主体 --principal Default(默认)
电子邮件地址 --email 选填
密码 --password [b] 选填
用户 ID 号 --uid Default(默认)
组 ID 号 --gidnumber Default(默认)
街道地址 --street 选填
City --city 选填
州/省 --state 选填
zip 代码 --postalcode 选填
电话号码 --phone 选填
手机电话号码 --mobile 选填
寻呼器编号 --pager 选填
传真号码 --fax 选填
组织单元 --orgunit 选填
任务标题 --title 选填
Manager(管理者) --manager 选填
汽车许可证 --carlicense 选填
--noprivate 选填
SSH 密钥 --sshpubkey 选填
其他属性 --addattr 选填
部门编号 --departmentnumber 选填
员工号 --employeenumber 选填
员工类型 --employeetype 选填
首选语言 --preferredlanguage 选填
[a] 必须为每个条目设置必要属性。可选属性可以设置,而默认属性会自动添加预定义的值,除非指定了特定值。
[b] 脚本会提示输入新密码,而不是通过 参数接受值。

15.1. 关于更改默认用户和组架构

可以添加或更改用于用户和组条目的对象类和属性(第 15 章 用户和组架构)。
IdM 配置在对象类更改时提供一些验证:
  • LDAP 服务器必须知道所有对象类及其指定属性。
  • 为条目配置的所有默认属性都必须被配置的对象类支持。
但是,IdM 模式验证存在限制。最重要的是,IdM 服务器不会检查定义的用户或组对象类是否包含 IdM 条目所需的所有对象类。例如,所有 IdM 条目都需要 ipaobject 对象类。但是,当用户或组架构发生更改时,服务器不会检查确保包含此对象类;如果对象类被意外删除,则将来的条目添加操作将失败。
此外,所有对象类更改都是原子的,而不是增量的。每次有更改时都必须定义默认对象类的整个列表。例如,公司可以创建自定义对象类别来存储员工信息,如生日和就业开始日期。管理员不能简单地将自定义对象类添加到列表中;必须设置当前默认对象类的整个列表 加上 新的对象类。更新配置时,必须始终包含 现有的 默认对象类。否则,将覆盖当前设置,这会导致严重的性能问题。

15.2. 将自定义对象类应用到新用户条目

使用应用到该条目的一组预定义的 LDAP 对象类创建用户和组帐户。属于对象类的任何属性都可以添加到用户条目中。
虽然标准和特定于 IdM 的 LDAP 对象类将涵盖大多数部署场景,但管理员可以使用自定义属性创建自定义对象类。请注意,在管理员修改默认对象类列表后,新条目将包含自定义对象类,但旧条目不会被自动修改。

15.2.1. 使用 Web UI

  1. 将所有自定义架构元素添加到身份管理使用的 389 目录服务器实例中。目录服务器管理员指南的 schema 章节 介绍了添加架构元素。
  2. 打开 IPA Server 选项卡。
  3. 选择 Configuration 子选项卡。
  4. 滚动到 User Options 区域。

    图 15.1. 服务器配置中的用户选项

    服务器配置中的用户选项
  5. 在用户区域的底部,单击 Add 以为另一个对象类包含一个新字段。
    重要
    更新配置时,始终包含 现有的 默认对象类。否则,将覆盖当前设置。如果没有包含身份管理所需的任何对象类,后续的尝试添加条目将失败,并显示对象类违反情况。

    图 15.2. 更改默认用户对象类

    更改默认用户对象类
  6. 更改完成后,点 Configuration 页面顶部的 Save

15.2.2. 从命令行

  1. 将所有自定义架构元素添加到身份管理使用的 389 目录服务器实例中。目录服务器管理员指南的 schema 章节 介绍了添加架构元素。
  2. 将新对象类添加到添加到条目的对象类列表中。用户对象类的选项是 --userobjectclasses
    重要
    更新配置时,始终包含 现有的 默认对象类。否则,将覆盖当前设置。如果没有包含身份管理所需的任何对象类,后续的尝试添加条目将失败,并显示对象类违反情况。
    所有对象类都必须包含在对象类列表中。通过 config-mod 命令传递的信息会覆盖之前的值。这可以通过 --userobjectclasses 参数指定各个对象类,或者将逗号分隔的所有对象类列在不允许有空格的大括号内,如 {attr1,attr2,attr3}。特别对于长列表而言,使用大括号比多个选项更容易。例如:
    [bjensen@server ~]$ ipa config-mod --userobjectclasses={top,person,organizationalperson,inetorgperson,inetuser,posixaccount,krbprincipalaux,krbticketpolicyaux,ipaobject,ipasshuser,employeeinfo}
注意
要使用大括号选项,必须打开 大括号扩展功能。要激活这个功能,请使用 set 命令:
# set -o braceexpand

15.3. 将自定义对象类应用到新组条目

与用户条目一样,管理员可以使用自定义属性创建自定义对象类。它们可以通过将对象类添加到 IdM 服务器配置来自动添加。请注意,在管理员修改默认对象类列表后,新条目将包含自定义对象类,但旧条目不会被自动修改。

15.3.1. 使用 Web UI

  1. 将所有自定义架构元素添加到身份管理使用的 389 目录服务器实例中。目录服务器管理员指南的 schema 章节 介绍了添加架构元素。
  2. 打开 IPA Server 选项卡。
  3. 选择 Configuration 子选项卡。
  4. 滚动到 Group Options 区域。

    图 15.3. 服务器配置中的组选项

    服务器配置中的组选项
  5. Add 使其包含另一个对象类的新字段。
    重要
    更新配置时,始终包含 现有的 默认对象类。否则,将覆盖当前设置。如果没有包含身份管理所需的任何对象类,后续的尝试添加条目将失败,并显示对象类违反情况。
  6. 更改完成后,点 Configuration 页面顶部的 Save

15.3.2. 从命令行

  1. 将所有自定义架构元素添加到身份管理使用的 389 目录服务器实例中。目录服务器管理员指南的 schema 章节 介绍了添加架构元素。
  2. 将新对象类添加到添加到条目的对象类列表中。组对象类的选项是 --groupobjectclasses
    重要
    更新配置时,始终包含 现有的 默认对象类。否则,将覆盖当前设置。如果没有包含身份管理所需的任何对象类,后续的尝试添加条目将失败,并显示对象类违反情况。
    所有对象类都必须包含在对象类列表中。通过 config-mod 命令传递的信息会覆盖之前的值。这可以通过 --groupobjectclasses 参数指定各个对象类,或者将逗号分隔的所有对象类列在不允许有空格的大括号内,如 {attr1,attr2,attr3}。特别对于长列表而言,使用大括号比多个选项更容易。例如:
    [bjensen@server ~]$ ipa config-mod --groupobjectclasses={top,groupofnames,nestedgroup,ipausergroup,ipaobject,ipasshuser,employeegroup}

15.4. 指定默认用户和组属性

身份管理在创建新条目时使用模板。
对于用户,模板非常具体。身份管理为 IdM 用户帐户使用多个核心属性使用默认值。这些默认值可以定义用户帐户属性的实际值(如主目录位置),也可以定义属性值的格式,如用户名长度。这些设置还定义分配给用户的对象类。
对于组,模板仅定义分配的对象类。
这些默认定义都包含在 IdM 服务器的一个配置条目 cn=ipaconfig,cn=etc,dc=example,dc=com 中。
可以使用 ipa config-mod 命令更改配置。
表 15.3. 默认用户参数
字段 命令行选项 描述
最大用户名长度 --maxusername 设置用户名的最大字符数。默认值为 32。
主目录的根 --homedirectory 设置要用于用户主目录的默认目录。默认值为 /home
默认 shell --defaultshell 设置供用户使用的默认 shell.默认值为 /bin/sh
默认用户组群 --defaultgroup 设置为所有新建帐户添加到的默认组。默认值为 ipausers,它会在 IdM 服务器安装过程中自动创建。
默认电子邮件域 --emaildomain 将电子邮件地址设置为使用 来基于新帐户创建电子邮件地址。默认为 IdM 服务器域。
搜索时间限制 --searchtimelimit 在服务器返回结果之前,设置搜索上花费的最大时间(以秒为单位)。
搜索大小限制 --searchrecordslimit 设置搜索返回的最大记录数.
用户搜索字段 --usersearch 设置用户条目中的字段,可用作搜索字符串。列出的任何属性都有一个用于该属性的索引,因此设置太多属性可能会影响服务器性能。
组搜索字段 --groupsearch 设置组条目中的字段,可用作搜索字符串。
证书主题基础 设置在为客户端证书创建主题 DN 时要使用的基本 DN。这是在设置服务器时配置的。
默认用户对象类 --userobjectclasses 定义用于创建 IdM 用户帐户的对象类。这可以多次调用。必须提供对象类的完整列表,因为运行 命令时会覆盖该列表。
默认组对象类 --groupobjectclasses 定义用于创建 IdM 组帐户的对象类。这可以多次调用。必须提供对象类的完整列表,因为运行 命令时会覆盖该列表。
密码过期通知 --pwdexpnotify 设置服务器发送通知的密码到期前的天数(以天数为单位)。
密码插件功能 设置用户允许的密码格式。

15.4.1. 从 Web UI 查看属性

  1. 打开 IPA Server 选项卡。
  2. 选择 Configuration 子选项卡。
  3. 完整的配置条目在三个部分显示,一个用于所有搜索限制,一个用于用户模板,另一个用于组模板。

    图 15.4. 设置搜索限制

    设置搜索限制

    图 15.5. 用户属性

    用户属性

    图 15.6. 组属性

    组属性

15.4.2. 从命令行查看属性

config-show 命令显示适用于所有新用户帐户的当前配置。默认情况下,仅显示最常见的属性;使用 --all 选项显示完整的配置。
[bjensen@server ~]$ kinit admin
[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, krbticketpolicyaux, ipaobject, ipasshuser
Password Expiration Notification (days): 4
Password plugin features: AllowNThash
SELinux user map order: guest_u:s0$xguest_u:s0$user_u:s0$staff_u:s0-s0:c0.c1023$unconfined_u:s0-s0:c0.c1023
Default SELinux user: unconfined_u:s0-s0:c0.c1023
Default PAC types: MS-PAC, nfs:NONE
cn: ipaConfig
objectclass: nsContainer, top, ipaGuiConfig, ipaConfigObject

第 16 章 管理服务

主机上运行的一些服务也可以属于 IdM 域。可以存储 Kerberos 主体或 SSL 证书(或两者)的任何服务都可以配置为 IdM 服务。向 IdM 域添加服务可让服务从域请求 SSL 证书或 keytab。(仅证书的公钥存储在服务记录中。私钥是该服务的本地密钥。)
IdM 域在机器之间建立通用性,具有通用身份信息、通用策略和共享服务。属于域的任何计算机充当域的客户端,这意味着它使用域所提供的服务。IdM 域(如 第 1 章 红帽身份管理简介所述)为机器提供三个主要服务:
  • DNS
  • Kerberos
  • 证书管理

16.1. 添加和编辑服务条目和密钥选项卡

与主机条目一样,主机(以及该主机上的任何其他服务)的服务条目必须手动添加到 IdM 域中。这个过程分为两个步骤。首先,必须创建服务条目,然后必须为该服务创建一个 keytab,它将用于访问域。
默认情况下,身份管理将其 HTTP keytab 保存到 /etc/httpd/conf/ipa.keytab
注意
此 keytab 用于 Web UI。如果密钥存储在 ipa.keytab 中,且删除了 keytab 文件,IdM Web UI 将停止工作,因为原始密钥也会被删除。
可以为每个需要让 Kerberos 感知的服务指定相似的位置。没有必须使用的特定位置,但在使用 ipa-getkeytab 时,您应该避免使用 /etc/krb5.keytab。此文件不应包含特定于服务的 keytab;每个服务都应将其 keytab 保存在特定位置,并且应配置访问权限(以及 SELinux 规则),以便只有此服务有权访问 keytab。

16.1.1. 从 Web UI 添加服务和 keytab

  1. 打开 Identity 选项卡,然后选择 Services 子选项卡。
  2. 单击 services 列表顶部的 Add 按钮。
  3. 从下拉菜单中选择服务类型,并为它指定一个名称。
  4. 选择运行该服务的 IdM 主机的主机名。主机名用于构造完整的服务主体名称。
  5. Add 按钮保存新服务主体。
  6. 使用 ipa-getkeytab 命令为服务主体生成并分配新的 keytab。
    [root@ipaserver ~]# # ipa-getkeytab -s ipaserver.example.com -p HTTP/server.example.com -k /etc/httpd/conf/krb5.keytab -e aes256-cts
    • realm name 是可选的。IdM 服务器会自动附加配置了它的 Kerberos 域。您无法指定不同的域。
    • 主机名必须解析为 DNS A 记录,然后才能用于 Kerberos。如果需要,您可以使用 --force 标志强制创建主体。
    • e 参数可以包含 要在 keytab 中包含的加密类型列表。这会取代任何默认加密类型。可以多次使用 选项设置条目列表,也可通过将选项列在大括号内的逗号分隔列表中,如 --option={val1,val2,val3}
    警告
    创建新密钥为指定主体重置 secret。这意味着该主体的所有其他 keytab 都会变为无效。

16.1.2. 从命令行添加服务和 keytab

  1. 创建服务主体。该服务通过名称(如 service/FQDN)来识别
    # ipa service-add serviceName/hostname
    例如:
    $ ipa service-add HTTP/server.example.com
    -------------------------------------------------------
    Added service "HTTP/server.example.com@EXAMPLE.COM"
    -------------------------------------------------------
      Principal: HTTP/server.example.com@EXAMPLE.COM
      Managed by: ipaserver.example.com
    
  2. 使用 ipa-getkeytab 命令创建服务 keytab 文件。此命令在 IdM 域中的客户端上运行。(实际上,它可以在任何 IdM 服务器或客户端上运行,然后复制到相应机器的密钥。不过,最简便的做法是在正在创建的 计算机上运行 命令。)
    命令需要 Kerberos 服务主体(-p)、IdM 服务器名称(-s)、要写入的文件(-k)和加密方法(-e)。务必将 keytab 复制到服务的相应目录。
    例如:
    # ipa-getkeytab -s server.example.com -p HTTP/server.example.com -k /etc/httpd/conf/krb5.keytab -e aes256-cts
    • realm name 是可选的。IdM 服务器会自动附加配置了它的 Kerberos 域。您无法指定不同的域。
    • 主机名必须解析为 DNS A 记录,然后才能用于 Kerberos。如果需要,您可以使用 --force 标志强制创建主体。
    • e 参数可以包含 要包含在 keytab 中的以逗号分隔的加密类型列表。这会取代任何默认加密类型。可以多次使用 选项设置条目列表,也可通过将选项列在大括号内的逗号分隔列表中,如 --option={val1,val2,val3}
    警告
    ipa-getkeytab 命令重置指定主体的 secret。这意味着该主体的所有其他 keytab 都会变为无效。

16.2. 配置集群服务

IdM 服务器 不知道。但是,可以通过在所有参与的主机中同步 Kerberos 密钥并配置主机上运行的服务来响应客户端使用的任何名称,将集群服务配置为 IdM 的一部分。
  1. 将集群中的所有主机注册到 IdM 域中。
  2. 创建任何服务主体并生成所需的 keytab。
  3. 收集主机上为服务设置的所有 keytab,包括位于 /etc/krb5.keytab 的主机 keytab。
  4. 使用 ktutil 命令生成一个 keytab 文件,其中包含所有 keytab 文件的内容。
    1. 对于每个文件,使用 rkt 命令从该文件中读取密钥。
    2. 使用 wkt 命令将所有已读取的密钥写入一个新的 keytab 文件。
  5. 将每个主机上的 keytab 文件替换为新创建的组合 keytab 文件。
  6. 此时,此集群中的每个主机现在可以模拟任何其他主机。
  7. 有些服务需要额外的配置,以适应在接管故障服务时不会重置主机名的群集成员。
    • 对于 sshd,在 /etc/ssh/sshd_config 中设置 GSSAPIStrictAcceptorCheck no
    • 对于 mod_auth_kerb,请在 /etc/httpd/conf.d/auth_kerb.conf 中设置 KrbServiceName any。
注意
对于 SSL 服务器,当客户端连接到集群主机时,服务器证书的主题名称或替代名称必须正确显示。如果可能,在所有主机之间共享私钥。
如果每个群集成员都包含主题备用名称,其中包含所有其他群集成员的名称,则满足任何客户端连接要求。

16.3. 将相同的服务主体用于多个服务

在群集中,可以将相同的服务主体用于多个服务,分散到不同的机器上。
  1. 使用 ipa-getkeytab 命令检索服务主体。
    # ipa-getkeytab -s kdc.example.com -p HTTP/server.example.com -k /etc/httpd/conf/krb5.keytab -e aes256-cts
  2. 将多个服务器或服务定向为使用同一文件,或根据需要将文件复制到个别服务器。

16.4. 检索多个服务器的现有 keytab

在某些情况下,如在集群环境中,不同机器在一个通用主机名上代表的服务需要相同的 keytab 文件。IdM 命令可用于检索每个主机上的同一 keytab。
要准备通用主机名和服务主体,请在 IdM 服务器上运行以下命令:
  1. admin 用户身份进行身份验证:
    [root@ipaserver ~]# kinit admin
  2. 为共享此主机名的所有 IP 地址添加通用的转发 DNS 记录:
    [root@ipaserver ~]# ipa dnsrecord-add idm.example.com cluster --a-rec={192.0.2.40,192.0.2.41}
      Record name: cluster
        A record: 192.0.2.40, 192.0.2.41
  3. 为通用 DNS 名称创建新主机条目对象:
    [root@ipaserver ~]# ipa host-add cluster.idm.example.com
    ------------------------------------
    Added host "cluster.idm.example.com"
    ------------------------------------
      Host name: cluster.idm.example.com
      Principal name: host/cluster.idm.example.com@IDM.EXAMPLE.COM
      Password: False
      Keytab: False
      Managed by: cluster.idm.example.com
  4. 为主机添加服务主体:
    [root@ipaserver ~]# ipa service-add HTTP/cluster.idm.example.com
    ------------------------------------------------------------
    Added service "HTTP/cluster.idm.example.com@IDM.EXAMPLE.COM"
    ------------------------------------------------------------
      Principal: HTTP/cluster.idm.example.com@IDM.EXAMPLE.COM
      Managed by: cluster.idm.example.com
  5. 将主机添加到服务中,该服务应该可以从 IdM 检索 keytab:
    [root@ipaserver ~]# ipa service-allow-retrieve-keytab HTTP/cluster.idm.example.com --hosts={node01.idm.example.com,node02.idm.example.com}
      Principal: HTTP/cluster.idm.example.com@IDM.EXAMPLE.COM
      Managed by: cluster.idm.example.com
      Hosts allowed to retrieve keytab: node01.idm.example.com, node02.idm.example.com
    -------------------------
    Number of members added 2
    -------------------------
  6. 向一个主机授予创建新 keytab 的权限:
    [root@ipaserver ~]# ipa service-allow-create-keytab HTTP/cluster.idm.example.com --hosts=node01.idm.example.com
    Principal: HTTP/cluster.idm.example.com@IDM.EXAMPLE.COM
    Managed by: cluster.idm.example.com
    Hosts allowed to retrieve keytab: node01.idm.example.com, node02.idm.example.com
    Hosts allowed to create keytab: node01.idm.example.com
    -------------------------
    Number of members added 1
    -------------------------
在客户端中,按照以下步骤执行:
  1. 使用主机 Kerberos keytab 进行身份验证:
    # kinit -kt /etc/krb5.keytab
    1. 在您授予相应权限的客户端中,生成新的 keytab 并将其存储在文件中:
      [root@node01 ~]# ipa-getkeytab -s ipaserver.idm.example.com -p HTTP/cluster.idm.example.com -k /tmp/client.keytab
    2. 在所有其他客户端中,通过向命令添加 -r 选项,从 IdM 服务器检索现有的 keytab:
      [root@node02 ~]# ipa-getkeytab -r -s ipaserver.idm.example.com -p HTTP/cluster.idm.example.com -k /tmp/client.keytab
      警告
      请注意,如果省略 -r 选项,将生成一个新 keytab。这会使之前检索到的所有 keytab 无效。

16.5. 禁用和重新启用服务条目

活动服务可由域中的其他服务、主机和用户访问。有些情况下,需要从活动中删除主机或服务。但是,删除服务或主机会删除该条目及所有关联的配置,并且会永久删除。

16.5.1. 禁用服务条目

禁用服务可防止域用户访问该服务,而不将其永久从域中删除。这可以通过使用 service-disable 命令来完成。
对于服务,指定该服务的主体。例如:
[jsmith@ipaserver ~]$ kinit admin
[jsmith@ipaserver ~]$ ipa service-disable HTTP/server.example.com
重要
禁用主机条目不仅会禁用该主机。它还会禁用该主机上每个配置的服务。

16.5.2. 重新启用服务

禁用服务实质上会终止其当前活动 keytab。删除 keytab 会有效地从 IdM 域中删除该服务,而不涉及其配置条目。
要重新启用服务,只需使用 ipa-getkeytab 命令。-s 选项设定请求 keytab 的 IdM 服务器,-p 提供主体名称,-k 则提供保存 keytab 的文件。
例如,请求新的 HTTP keytab:
[root@ipaserver ~]# ipa-getkeytab -s ipaserver.example.com -p HTTP/server.example.com -k /etc/httpd/conf/krb5.keytab -e aes256-cts

第 17 章 委派对主机和服务的访问权限

要在本章上下文中 管理,意味着能够检索另一个主机或服务的 keytab 和证书。每个主机和服务都有一个 managedby 条目,它列出了哪些主机或服务可以管理它。默认情况下,主机可以管理自身及其所有服务。也可以通过更新适当的委托或提供合适的 managedby 条目来允许主机管理其他主机或服务。
只要授予该主机或 委派 了访问该服务的权限,就可以从任何 IdM 主机管理 IdM 服务。类似地,可以将主机的权限委派给域中的其他主机。

图 17.1. 主机和服务委派