46.2. 使用 CLI 在 IdM 域中配置 HBAC 规则
要为基于主机的访问控制配置域,请完成以下步骤:
在创建自定义 HBAC 规则前,不要禁用 allow_all
规则。如果您在创建自定义规则前禁用了它,则会拒绝所有用户对所有主机的访问。
46.2.1. 在 IdM CLI 中创建 HBAC 规则
要使用 IdM CLI 为基于主机的访问控制配置域,请按照以下步骤操作。出于本示例的目的,流程展示了如何授予单个用户 sysadmin 使用任何服务访问域中的所有系统。
IdM 将用户的主组存储为 gidNumber
属性的数字值,而不是 IdM 组对象的链接。因此,HBAC 规则只能引用用户的补充组,而不是其主组。
先决条件
- 用户 sysadmin 在 IdM 中存在。
流程
使用
ipa hbacrule-add
命令添加规则。$ ipa hbacrule-add Rule name: rule_name --------------------------- Added HBAC rule "rule_name" --------------------------- Rule name: rule_name Enabled: TRUE
要将 HBAC 规则只应用到 sysadmin 用户,请使用
ipa hbacrule-add-user
命令。$ ipa hbacrule-add-user --users=sysadmin Rule name: rule_name Rule name: rule_name Enabled: True Users: sysadmin ------------------------- Number of members added 1 -------------------------
注意要将 HBAC 规则应用到所有用户,请使用
ipa hbacrule-mod
命令,并指定所有用户类别--usercat=all
。请注意,如果 HBAC 规则与单个用户或组关联,ipa hbacrule-mod --usercat=all
会失败。在这种情况下,使用ipa hbacrule-remove-user
命令删除用户和组。指定目标主机。要将 HBAC 规则应用到所有主机,请使用
ipa hbacrule-mod
命令,并指定所有主机类别:$ ipa hbacrule-mod rule_name --hostcat=all ------------------------------ Modified HBAC rule "rule_name" ------------------------------ Rule name: rule_name Host category: all Enabled: TRUE Users: sysadmin
注意如果 HBAC 规则与单个主机或组关联,
ipa hbacrule-mod --hostcat=all
会失败。在这种情况下,使用ipa hbacrule-remove-host
命令删除主机和组。指定目标 HBAC 服务。要将 HBAC 规则应用到所有服务,请使用
ipa hbacrule-mod
命令,并指定所有服务类别:$ ipa hbacrule-mod rule_name --servicecat=all ------------------------------ Modified HBAC rule "rule_name" ------------------------------ Rule name: rule_name Host category: all Service category: all Enabled: True Users: sysadmin
如果 HBAC 规则与单个服务或组关联,ipa hbacrule-mod --servicecat=all
会失败。在这种情况下,使用 ipa hbacrule-remove-service
命令删除服务和组。
验证
验证 HBAC 规则是否已正确添加。
-
使用
ipa hbacrule-find
命令验证 HBAC 规则是否在 IdM 中存在。 -
使用
ipa hbacrule-show
命令验证 HBAC 规则的属性。
-
使用
其他资源
- 如需了解更多详细信息,请参阅 ipa hbacrule-add --help。
- 请参阅 为自定义 HBAC 服务添加 HBAC 服务条目。
- 请参阅 添加 HBAC 服务组。
46.2.2. 在 IdM CLI 中测试 HBAC 规则
IdM 允许您使用模拟场景测试各种情况下的 HBAC 配置。执行这些模拟测试,您可以在在生产环境中部署 HBAC 规则前发现错误配置问题或安全风险。
在在生产环境中开始使用它们之前,请始终测试自定义 HBAC 规则。
请注意,IdM 不测试 HBAC 规则对可信活动目录(AD)用户的影响。因为 IdM LDAP 目录不存储 AD 数据,所以当模拟 HBAC 场景时,IdM 不能解析 AD 用户的组成员资格。
流程
使用
ipa hbactest
命令测试您的 HBAC 规则。您有测试单个 HBAC 规则或多个 HBAC 规则的选项。要测试单个 HBAC 规则:
$ ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name --------------------- Access granted: True --------------------- Matched rules: rule_name
要测试多个 HBAC 规则:
添加第二个规则,仅允许 sysadmin 在所有主机上使用
ssh
:$ ipa hbacrule-add --hostcat=all rule2_name $ ipa hbacrule-add-user --users sysadmin rule2_name $ ipa hbacrule-add-service --hbacsvcs=sshd rule2_name Rule name: rule2_name Host category: all Enabled: True Users: admin HBAC Services: sshd ------------------------- Number of members added 1 -------------------------
运行以下命令来测试多个 HBAC 规则:
$ ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name --rules=rule2_name -------------------- Access granted: True -------------------- Matched rules: rule_name Not matched rules: rule2_name
在输出中,Matched rules 列出了允许的成功访问的规则,而 Not matched 规则列出了阻止的访问的规则。请注意,如果您没有指定 --rules
选项,则会应用所有规则。使用 --rules
对于独立测试每个规则很有用。
其他资源
-
如需更多信息,请参阅
ipa hbactest --help
。
46.2.3. 在 IdM CLI 中禁用 HBAC 规则
您可以禁用 HBAC 规则,但它只停用规则,而不删除规则。如果禁用了 HBAC 规则,您可以稍后重新启用它。
当您首次配置自定义 HBAC 规则时,禁用 HBAC 规则很有用。要确保新配置不会被默认的 allow_all
HBAC 规则覆盖,您必须禁用 allow_all
。
流程
使用
ipa hbacrule-disable
命令。例如,要禁用allow_all
规则:$ ipa hbacrule-disable allow_all ------------------------------ Disabled HBAC rule "allow_all" ------------------------------
其他资源
-
如需了解更多详细信息,请参阅
ipa hbacrule-disable --help
。