8.3. 使用 CLI 向 IdM 客户端上的 AD 用户授予 sudo 访问权限
身份管理 (IdM) 系统管理员可以使用 IdM 用户组来设置 IdM 用户的访问权限、基于主机的访问控制、sudo
规则和其他控制。IdM 用户组授予和限制 IdM 域资源的访问权限。
您可以将 Active Directory (AD) 用户和 AD 组添加到 IdM 用户组。要做到这一点:
- 将 AD 用户或组添加到 non-POSIX 外部 IdM 组中。
- 将 non-POSIX 外部 IdM 组添加到 IdM POSIX 组。
然后,您可以通过管理 POSIX 组的权限来管理 AD 用户的特权。例如,您可以为特定命令授予特定 IdM 主机上的 IdM POSIX 用户组的 sudo
访问权限。
也可以将 AD 用户组作为成员添加到 IdM 外部组中。这样,通过在单个 AD 域中保留用户和组管理,可以更轻松地为 Windows 用户定义策略。
不要将 AD 用户的 ID 覆盖用于 IdM 中的 SUDO 规则。AD 用户的 ID 覆盖只代表 AD 用户的 POSIX 属性,而不是 AD 用户本身。
您可以作为组成员添加 ID 覆盖。但是,您只能使用此功能管理 IdM API 中的 IdM 资源。可以将 ID 覆盖添加为组群成员没有扩展到 POSIX 环境,因此您无法将其用于 sudo
或基于主机的访问控制 (HBAC) 规则中的成员资格。
按照以下流程创建 ad_users_reboot sudo
规则,来为 administrator@ad-domain.com AD 用户授予在 idmclient IdM 主机上运行 /usr/sbin/reboot
命令的权限,这通常为 root
用户保留。administrator@ad-domain.com 是 ad_users_external non-POSIX 组的成员,后者又是 ad_users POSIX 组的成员。
先决条件
-
您已获得 IdM
admin
Kerberos 票据授予票 (TGT)。 - IdM 域和 ad-domain.com AD 域之间存在跨林信任。
-
idmclient 主机上没有本地的 administrator 帐户 :administrator 用户没有列在本地
/etc/passwd
文件中。
流程
创建 ad_users 组,它包括带有 administrator@ad-domain 成员的 ad_users_external 组:
- 可选 :创建或选择 AD 域中的对应组,用来管理 IdM 域中的 AD 用户。您可以使用多个 AD 组,并将它们添加到 IdM 端的不同组中。
创建 ad_users_external 组,并通过添加
--external
选项来指示它包含 IdM 域外部的成员:[root@ipaserver ~]# ipa group-add --desc='AD users external map' ad_users_external --external ------------------------------- Added group "ad_users_external" ------------------------------- Group name: ad_users_external Description: AD users external map
注意确保此处指定的外部组是带有
global
或universal
组范围的 AD 安全组,如 Active Directory 安全组文档中所述。例如,Domain users 或 Domain admins AD 安全组不能使用,因为组的范围是domain local
。创建 ad_users 组:
[root@ipaserver ~]# ipa group-add --desc='AD users' ad_users ---------------------- Added group "ad_users" ---------------------- Group name: ad_users Description: AD users GID: 129600004
将 administrator@ad-domain.com AD 用户作为外部成员添加到 ad_users_external 中:
[root@ipaserver ~]# ipa group-add-member ad_users_external --external "administrator@ad-domain.com" [member user]: [member group]: Group name: ad_users_external Description: AD users external map External member: S-1-5-21-3655990580-1375374850-1633065477-513 ------------------------- Number of members added 1 -------------------------
AD 用户必须通过完全限定名称来标识,如
DOMAIN\user_name
或user_name@DOMAIN
。AD ID 然后会被映射到用户的 AD SID。这同样适用于添加 AD 组。将 ad_users_external 添加到 ad_users 作为成员:
[root@ipaserver ~]# ipa group-add-member ad_users --groups ad_users_external Group name: ad_users Description: AD users GID: 129600004 Member groups: ad_users_external ------------------------- Number of members added 1 -------------------------
授予 ad_users 成员在 idmclient 主机上运行
/usr/sbin/reboot
的权限 :在
sudo
命令的 IdM 数据库中添加/usr/sbin/reboot
命令:[root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot ------------------------------------- Added Sudo Command "/usr/sbin/reboot" ------------------------------------- Sudo Command: /usr/sbin/reboot
创建名为 ad_users_reboot 的
sudo
规则:[root@idmclient ~]# ipa sudorule-add ad_users_reboot --------------------------------- Added Sudo Rule "ad_users_reboot" --------------------------------- Rule name: ad_users_reboot Enabled: True
在 ad_users_reboot 规则中添加
/usr/sbin/reboot
命令:[root@idmclient ~]# ipa sudorule-add-allow-command ad_users_reboot --sudocmds '/usr/sbin/reboot' Rule name: ad_users_reboot Enabled: True Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
将 ad_users_reboot 规则应用到 IdM idmclient 主机:
[root@idmclient ~]# ipa sudorule-add-host ad_users_reboot --hosts idmclient.idm.example.com Rule name: ad_users_reboot Enabled: True Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
将
ad_users
组添加到 ad_users_reboot 规则中:[root@idmclient ~]# ipa sudorule-add-user ad_users_reboot --groups ad_users Rule name: ad_users_reboot Enabled: TRUE User Groups: ad_users Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
将更改从服务器传播到客户端可能需要几分钟时间。
验证步骤
以 administrator@ad-domain.com 身份登录 idmclient 主机,这是
ad_users
组的间接成员:$ ssh administrator@ad-domain.com@ipaclient Password:
另外,还可显示
administrator@ad-domain.com
允许执行的sudo
命令:[administrator@ad-domain.com@idmclient ~]$ sudo -l Matching Defaults entries for administrator@ad-domain.com on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User administrator@ad-domain.com may run the following commands on idmclient: (root) /usr/sbin/reboot
使用
sudo
重新启动计算机。提示时输入administrator@ad-domain.com
密码:[administrator@ad-domain.com@idmclient ~]$ sudo /usr/sbin/reboot [sudo] password for administrator@ad-domain.com: