49.2. 使用 CLI 在 IdM 域中配置 HBAC 规则


要为基于主机的访问控制配置域,请完成以下步骤:

  1. 在 IdM CLI 中创建 HBAC 规则。
  2. 测试新的 HBAC 规则。
  3. 禁用默认的 allow_all HBAC 规则。
注意

在创建自定义 HBAC 规则前,不要禁用 allow_all 规则。如果您在创建自定义规则前禁用它,则拒绝所有用户对所有主机的访问。

49.2.1. 在 IdM CLI 中创建 HBAC 规则

要使用 IdM CLI 为基于主机的访问控制配置域,请按照以下步骤操作。出于本例目的,流程展示了如何授予单个用户 sysadmin 使用任何服务访问域中的所有系统。

注意

IdM 将用户的主组存储为 gidNumber 属性的数字值,而不是到 IdM 组对象的链接。因此,HBAC 规则只能引用用户的补充组,而不是其主组。

先决条件

  • 用户 sysadmin 在 IdM 中存在。

流程

  1. 使用 ipa hbacrule-add 命令添加规则。

    $ ipa hbacrule-add
    Rule name: rule_name
    ---------------------------
    Added HBAC rule "rule_name"
    ---------------------------
      Rule name: rule_name
      Enabled: TRUE
    Copy to Clipboard Toggle word wrap
  2. 要将 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
    -------------------------
    Copy to Clipboard Toggle word wrap
    注意

    要将 HBAC 规则应用到所有用户,请使用 ipa hbacrule-mod 命令,并指定所有用户类别 --usercat=all。请注意,如果 HBAC 规则与单个用户或组关联,则ipa hbacrule-mod --usercat=all 会失败。在这种情况下,使用 ipa hbacrule-remove-user 命令删除用户和组。

  3. 指定目标主机。要将 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
    Copy to Clipboard Toggle word wrap
    注意

    如果 HBAC 规则与单个主机或组关联,则 ipa hbacrule-mod --hostcat=all 会失败。在这种情况下,使用 ipa hbacrule-remove-host 命令删除主机和组。

  4. 指定目标 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
    Copy to Clipboard Toggle word wrap
注意

如果 HBAC 规则与单个服务或组关联,则 ipa hbacrule-mod --servicecat=all 会失败。在这种情况下,使用 ipa hbacrule-remove-service 命令删除服务和组。

验证

  • 验证 HBAC 规则是否已正确添加。

    1. 使用 ipa hbacrule-find 命令验证 HBAC 规则是否在 IdM 中存在。
    2. 使用 ipa hbacrule-show 命令验证 HBAC 规则的属性。

49.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
      Copy to Clipboard Toggle word wrap
    • 要测试多个 HBAC 规则:

      1. 添加第二个规则,仅允许 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
        -------------------------
        Copy to Clipboard Toggle word wrap
      2. 运行以下命令来测试多个 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
        Copy to Clipboard Toggle word wrap

        在输出中,Matched rules 列出允许成功访问的规则,而 Not matched 列出阻止访问的规则。请注意,如果您没有指定 --rules 选项,则应用所有规则。使用 --rules 可独立测试每个规则。

49.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"
    ------------------------------
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat