Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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
    ----------------------------