11.6. 将外部置备系统用于用户和组
身份管理支持配置您的环境,以便使用用于管理身份的外部解决方案在 IdM 中置备用户和组身份。这部分论述了这类配置的示例。这个示例包括:
11.6.1. 配置要由外部置备系统使用的用户帐户
此流程演示了如何配置两个 IdM 用户帐户供外部置备系统使用。通过使用合适的密码策略将帐户添加到组中,您可以使外部调配系统来管理 IdM 中的用户调配。
- 创建用户
provisionator
,并具有添加 stage 用户的特权。该用户帐户将供外部调配系统用于添加新的暂存用户。- 添加
provisionator
用户帐户:$ ipa user-add provisionator --first=provisioning --last=account --password
- 为
provisionator
用户授予所需的特权。创建一个自定义角色System Provisioning
,来管理添加 stage 用户:$ ipa role-add --desc "Responsible for provisioning stage users" "System Provisioning"
将Stage User Provisioning
特权添加到该角色。这个特权提供了添加 stage 用户的能力:$ ipa role-add-privilege "System Provisioning" --privileges="Stage User Provisioning"
将provisionator
用户添加到角色中:$ ipa role-add-member --users=provisionator "System Provisioning"
- 创建用户
activator
,其具有管理用户帐户的特权。用户帐户将用于自动激活由外部调配系统添加的暂存用户。- 添加
activator
用户帐户:$ ipa user-add activator --first=activation --last=account --password
- 授予
activator
用户所需的特权。将用户添加到默认的User Administrator
角色中:$ ipa role-add-member --users=activator "User Administrator"
- 为服务和应用程序帐户创建用户组:
$ ipa group-add service-accounts
- 更新组的密码策略。以下策略可防止帐户的密码过期和锁住,但通过要求复杂的密码来弥补潜在的风险:
$ ipa pwpolicy-add service-accounts --maxlife=10000 --minlife=0 --history=0 --minclasses=4 --minlength=20 --priority=1 --maxfail=0 --failinterval=1 --lockouttime=0
- 将置备和激活帐户添加到服务和应用程序帐户的组中:
$ ipa group-add-member service-accounts --users={provisionator,activator}
- 更改用户帐户的密码:
$ kpasswd provisionator $ kpasswd activator
需要更改密码,因为新 IdM 用户的密码会立即过期。
其他资源 :
- 有关添加新用户的详情请参考 第 11.2.1 节 “添加阶段或活动用户”。
- 有关授予用户管理其他用户帐户所需的权限的详情,请参考 第 11.5 节 “允许非管理员用户管理用户条目”。
- 有关管理 IdM 密码策略的详情,请参考 第 28 章 定义密码策略。
11.6.2. 配置 IdM 以自动激活暂存用户帐户
此流程演示了如何为激活 stage 用户创建脚本。系统在指定的时间间隔自动运行脚本。这样可确保新用户帐户被自动激活,并在创建后很快可用。
重要
该程序假定新用户帐户不需要验证,脚本才会将它们添加到 IdM。例如,如果用户已经由外部调配系统的所有者验证,则不需要验证。
这对于仅在一个 IdM 服务器上启用激活过程足够了。
- 为激活帐户生成 keytab 文件:
# ipa-getkeytab -s example.com -p "activator" -k /etc/krb5.ipa-activation.keytab
如果您要在多个 IdM 服务器上启用激活过程,请仅在一个服务器上生成 keytab 文件。然后,将 keytab 文件复制到其他服务器上。 - 创建一个包含以下内容的
/usr/local/sbin/ipa-activate-all
脚本来激活所有用户:#!/bin/bash kinit -k -i activator ipa stageuser-find --all --raw | grep " uid:" | cut -d ":" -f 2 | while read uid; do ipa stageuser-activate ${uid}; done
- 编辑
ipa-activate-all
脚本的权限和所有权,使其可执行:# chmod 755 /usr/local/sbin/ipa-activate-all # chown root:root /usr/local/sbin/ipa-activate-all
- 创建包含以下内容的
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
- 创建一个
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
- 启用
ipa-activate-all.timer
:# systemctl enable ipa-activate-all.timer
其他资源:
- 有关
systemd
单元文件的更多信息,请参阅 系统管理员指南中的使用 systemd 单元文件 管理服务章节。
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
用户:
- 使用
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"
- 考虑验证暂存条目的内容,以确保您的置备系统添加了所有必要的 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
操作保留用户:
- 使用
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"
- (可选)通过列出所有保留的用户来验证用户是否已保留。
$ ipa user-find --preserved=true --------------- 1 user matched --------------- User login: user1 First name: first_name Last name: last_name ... ---------------------------- Number of entries returned 1 ----------------------------