第 34 章 使用 Ansible 在 IdM 中配置 HBAC 和 sudo 规则
在身份管理(IdM)中使用基于主机的访问控制(HBAC),您可以定义根据以下内容限制访问主机或服务的策略:
- 尝试登录的用户以及此用户的组
- 用户尝试访问的主机以及该主机所属的主机组
- 用于访问主机的服务
使用 sudo
,用户可以以其它具有不同特权的用户的身份运行程序,如 root
特权。在 IdM 中,您可以集中管理 sudo 规则。您可以根据用户组、主机组和命令组以及单个用户、主机和命令定义 sudo
规则。
完成这个流程以确保 IdM 用户的以下 HBAC 和 sudo
规则存在:
- jane 只能访问主机 client01.idm.example.com。
- john 只能访问主机 client02.idm.example.com。
-
包括默认的
admin
用户的admins
组的成员以及常规 alice 用户可以访问任何 IdM 主机。 admins
组的成员可以在任何 IdM 主机上运行带有以下命令的sudo
:-
/usr/sbin/reboot
-
/usr/bin/less
-
/usr/sbin/setenforce
-
下图显示了上述所需的配置:
图 34.1. IdM HBAC 和 SUDO 规则图
先决条件
在控制节点上:
- 您使用 Ansible 版本 2.13 或更高版本。
-
您已安装了
ansible-freeipa
软件包。 - 您已在 ~/MyPlaybooks/ 目录中创建了一个带有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
您已将
ipaadmin_password
存储在 secret.yml Ansible vault 中。
- jane、john 和 alice 在 IdM 中存在。为这些帐户配置密码。
流程
使用以下内容创建您的 Ansible playbook 文件 add-hbac-and-sudo-rules-to-idm.yml :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook --vault-password-file=password_file -i inventory add-hbac-and-sudo-rules-to-idm.yml
$ ansible-playbook --vault-password-file=password_file -i inventory add-hbac-and-sudo-rules-to-idm.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
以 jane 用户身份连接到 client01:
ssh jane@client01
~]$ ssh jane@client01 Password: Last login: Fri Aug 11 15:32:18 2023 from 192.168.122.1 [jane@client01 ~]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出证明 jane 已登录到 client01。
尝试以 jane 用户身份连接到 client02 :
ssh jane@client02
~]$ ssh jane@client02 Password: Connection closed by 192.168.122.47 port 22
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出证明 jane 无法登录到 client02。
以 alice 用户身份连接到 client02 :
ssh alice@client02
~]$ ssh alice@client02 Password: Last login: Fri Aug 10 16:13:43 2023 from 192.168.122.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出证明 alice 已登录到 client02。
尝试使用
less
查看/etc/sssd/sssd.conf
文件的内容,而无需调用超级用户特权:less /etc/sssd/sssd.conf
[alice@client02 ~]$ less /etc/sssd/sssd.conf /etc/sssd/sssd.conf: Permission denied
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 尝试失败,因为该文件对除了文件的所有者(即
root
用户)之外的任何人都不可读。调用
root
特权以使用less
查看/etc/sssd/sssd.conf
文件的内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出证明 alice 可以对
/etc/sssd/sssd.conf
文件执行less
命令。