搜索

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

download PDF

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

注意

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

46.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
  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
    -------------------------
    注意

    要将 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
    注意

    如果 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
注意

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

验证

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

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

其他资源

46.2.2. 在 IdM CLI 中测试 HBAC 规则

IdM 允许您使用模拟场景测试各种情况下的 HBAC 配置。执行这些模拟测试,您可以在在生产环境中部署 HBAC 规则前发现错误配置问题或安全风险。

在在生产环境中开始使用它们之前,请始终测试自定义 HBAC 规则。

请注意,IdM 不测试 HBAC 规则对可信活动目录(AD)用户的影响。因为 IdM LDAP 目录不存储 AD 数据,所以当模拟 HBAC 场景时,IdM 不能解析 AD 用户的组成员资格。

流程

  1. 使用 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 规则:

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

在输出中,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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.