31.2. 在 IdM 域中配置基于主机的访问控制


为基于主机的访问控制配置域:
  1. 重要
    在创建自定义 HBAC 规则前,不要禁用 allow_all 规则。如果您这样做,则没有用户能够访问任何主机。

31.2.1. 创建 HBAC 规则

要创建 HBAC 规则,您可以使用:
有关示例,请参阅 “HBAC 规则示例”一节
注意
IdM 将用户的主组存储为 gidNumber 属性的数字值,而不是指向 IdM 组对象的链接。因此,HBAC 规则只能引用用户的补充组,而不能引用其主组。

Web UI:创建 HBAC 规则

  1. 选择 基于策略的访问控制 HBAC 规则
  2. 单击 Add 以开始添加新规则。
  3. 输入规则的名称,然后点 Add 和 Edit 以直接进入 HBAC 规则配置页面。
  4. Who 区域,指定目标用户。
    • 要将 HBAC 规则应用到指定的用户或组,请选择 指定的用户和组。然后点击 Add 添加用户或组。
    • 要将 HBAC 规则应用到所有用户,请选择 Anyone

    图 31.2. 为 HBAC 规则指定目标用户

    为 HBAC 规则指定目标用户
  5. Accessing 区域中指定目标主机:
    • 要将 HBAC 规则应用到指定的主机或主机组,请选择 指定的主机和组。然后单击 Add 以添加主机或主机组。
    • 要将 HBAC 规则应用到所有主机,请选择 任何主机
  6. Via Service 区域中,指定目标 HBAC 服务:
    • 要将 HBAC 规则应用到指定的服务或组,请选择指定的服务和组。然后点击 Add 添加服务或组。
    • 要将 HBAC 规则应用到所有服务,请选择 任何 Service
    注意
    默认情况下,只有最常见的服务和服务组是为 HBAC 规则配置。
    • 要显示当前可用的服务列表,请选择 基于策略的访问控制 HBAC 服务
    • 要显示当前可用的服务组列表,请选择 基于策略的访问控制 HBAC Service Groups
  7. 更改 HBAC 规则配置页面中的某些设置,突出显示页面顶部的 Save 按钮。如果发生此情况,请单击 按钮以确认更改。

命令行:创建 HBAC 规则

  1. 使用 ipa hbacrule-add 命令添加规则。
    $ ipa hbacrule-add
    Rule name: rule_name
    ---------------------------
    Added HBAC rule "rule_name"
    ---------------------------
      Rule name: rule_name
      Enabled: TRUE
  2. 指定目标用户。
    • 要将 HBAC 规则应用到指定的用户或组,请使用 ipa hbacrule-add-user 命令。
      例如,要添加组:
      $ ipa hbacrule-add-user
      Rule name: rule_name
      [member user]:
      [member group]: group_name
        Rule name: rule_name
        Enabled: TRUE
        User Groups: group_name
      -------------------------
      Number of members added 1
      -------------------------
      要添加多个用户或组,请使用 --users--groups 选项:
      $ ipa hbacrule-add-user rule_name --users=user1 --users=user2 --users=user3
        Rule name: rule_name
        Enabled: TRUE
        Users: user1, user2, user3
      -------------------------
      Number of members added 3
      -------------------------
    • 要将 HBAC 规则应用到所有用户,请使用 ipa hbacrule-mod 命令并指定 所有用户 类别:
      $ ipa hbacrule-mod rule_name --usercat=all
      ------------------------------
      Modified HBAC rule "rule_name"
      ------------------------------
        Rule name: rule_name
        User category: all
        Enabled: TRUE
      注意
      如果 HBAC 规则与单个用户或组关联,ipa hbacrule-mod --usercat=all 会失败。在这种情况下,使用 ipa hbacrule-remove-user 命令删除用户和组。
      详情请参阅使用 --help 选项运行 ipa hbacrule-remove-user
  3. 指定目标主机。
    • 要将 HBAC 规则应用到指定的主机或主机组,请使用 ipa hbacrule-add-host 命令。
      例如,要添加单个主机:
      $ ipa hbacrule-add-host
      Rule name: rule_name
      [member host]: host.example.com
      [member host group]:
        Rule name: rule_name
        Enabled: TRUE
        Hosts: host.example.com
      -------------------------
      Number of members added 1
      -------------------------
      要添加多个主机或组,请使用 --hosts--hostgroups 选项:
      $ ipa hbacrule-add-host rule_name --hosts=host1 --hosts=host2 --hosts=host3
        Rule name: rule_name
        Enabled: TRUE
        Hosts: host1, host2, host3
      -------------------------
      Number of members added 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
      注意
      如果 HBAC 规则与单个主机或主机组关联,ipa hbacrule-mod --hostcat=all 会失败。在这种情况下,使用 ipa hbacrule-remove-host 命令删除主机和组。
      详情请参阅使用 --help 选项运行 ipa hbacrule-remove-host
  4. 指定目标 HBAC 服务。
    • 要将 HBAC 规则应用到指定的服务或组,请使用 ipa hbacrule-add-service 命令。
      例如,要添加单个服务:
      $ ipa hbacrule-add-service
      Rule name: rule_name
      [member HBAC service]: ftp
      [member HBAC service group]:
      Rule name: rule_name
      Enabled: TRUE
      Services: ftp
      -------------------------
      Number of members added 1
      -------------------------
      要添加多个服务或组,您可以使用 --hbacsvcs--hbacsvcgroups 选项:
      $ ipa hbacrule-add-service rule_name --hbacsvcs=su --hbacsvcs=sudo
        Rule name: rule_name
        Enabled: TRUE
        Services: su, sudo
      -------------------------
      Number of members added 2
      -------------------------
      注意
      只有最常见的服务和服务组是为 HBAC 规则配置。要添加更多,请查看 第 31.3 节 “为自定义 HBAC 服务添加 HBAC Service Entries”第 31.4 节 “添加 HBAC 服务组”
    • 要将 HBAC 规则应用到所有服务,请使用 ipa hbacrule-mod 命令并指定 所有服务 类别:
      $ ipa hbacrule-mod rule_name --servicecat=all
      ------------------------------
      Modified HBAC rule "rule_name"
      ------------------------------
        Rule name: rule_name
        Service category: all
        Enabled: TRUE
      注意
      如果 HBAC 规则与各个服务或组关联,ipa hbacrule-mod --servicecat=all 会失败。在这种情况下,使用 ipa hbacrule-remove-service 命令删除服务和组。
      详情请参阅使用 --help 选项运行 ipa hbacrule-remove-service
  5. 可选。验证 HBAC 规则是否已正确添加。
    1. 使用 ipa hbacrule-find 命令来验证 HBAC 规则是否已添加到 IdM。
    2. 使用 ipa hbacrule-show 命令验证 HBAC 规则的属性。
    详情请使用 --help 选项运行命令。

HBAC 规则示例

例 31.1. 使用任何服务授予单用户对所有主机的访问权限

要允许 admin 用户使用任何服务访问域中的所有系统,请创建一个新的 HBAC 规则并设置:
  • 要管理 的用户
  • 主机到任何主机(在 Web UI 中),或使用 --hostcat=allipa hbacrule-add (添加规则时)或 ipa hbacrule-mod
  • 服务到任何服务(在 Web UI 中),或使用 --servicecat=allipa hbacrule-add (添加规则时)或 ipa hbacrule-mod

例 31.2. 确保只能用于访问主机的特定服务

要确保所有用户都必须使用 sudo相关服务来访问名为 host.example.com 的主机,请创建一个新的 HBAC 规则并设置:
  • 用户到 任何人 (在 Web UI 中),或使用 --usercat=allipa hbacrule-add (添加规则时)或 ipa hbacrule-mod
  • host.example.com的主机
  • HBAC 服务组为 Sudo,这是 sudo 和相关服务的默认组

31.2.2. 测试 HBAC 规则

IdM 可让您在各种情况下使用模拟场景测试 HBAC 配置。通过执行这些模拟测试运行,您可以在生产中部署 HBAC 规则之前发现错误配置问题或安全风险。
重要
在开始在生产环境中使用自定义 HBAC 规则前,请始终测试它们。
请注意,IdM 不会测试 HBAC 规则对可信 Active Directory(AD)用户的影响。因为 AD 数据没有存储在 IdM LDAP 目录中,所以 IdM 在模拟 HBAC 场景时无法解析 AD 用户的组成员身份。
要测试 HBAC 规则,您可以使用:

Web UI:测试 HBAC 规则

  1. 选择 Policy Host-Based Access HBAC Test
  2. Who 屏幕中:指定您要执行测试的身份下的用户,然后单击 Next

    图 31.3. 为 HBAC 测试指定目标用户

    为 HBAC 测试指定目标用户
  3. Accessing 屏幕中:指定用户可访问的主机,然后单击 Next
  4. Via Service 屏幕中:指定用户要使用的服务,然后单击 Next
  5. Rules 屏幕中:选择您要测试的 HBAC 规则,然后点 Next。如果不选择任何规则,则会测试所有规则。
    选择 Include Enabled,以对所有状态为 Enabled 的规则运行测试。选择 Include Disabled 在状态为 Disabled 的所有规则上运行测试。要查看并更改 HBAC 规则的状态,请选择 基于策略的访问控制 HBAC 规则
    重要
    如果测试在多个规则上运行,则如果至少一个所选规则允许访问,它将成功传递。
  6. Run Test 屏幕中:单击 Run Test

    图 31.4. 运行 HBAC 测试

    运行 HBAC 测试
  7. 查看测试结果:
    • 如果您看到 ACCESS DENIED,该用户没有在测试中授予访问权限。
    • 如果您看到 ACCESS GRANTED,用户可以成功访问主机。

    图 31.5. 查看 HBAC 测试结果

    查看 HBAC 测试结果
    默认情况下,在显示测试结果时,IdM 会列出所有经过测试的 HBAC 规则。
    • 选择 Matched 以显示允许成功访问的规则。
    • 选择 Unmatched 来显示阻止访问的规则。

命令行:测试 HBAC 规则

使用 ipa hbactest 命令并至少指定:
  • 要执行测试其身份的用户
  • 用户将尝试访问的主机
  • 用户将尝试使用的服务
例如,在以交互方式指定这些值时:
$ ipa hbactest
User name: user1
Target host: example.com
Service: sudo
---------------------
Access granted: False
---------------------
Not matched rules: rule1
默认情况下,IdM 在启用了 其状态的所有 HBAC 规则上运行测试。指定不同的 HBAC 规则:
  • 使用 --rules 选项定义一个或多个 HBAC 规则。
  • 使用 -- disabled 选项测试其状态禁用的所有 HBAC 规则。
要查看 HBAC 规则的当前状态,请运行 ipa hbacrule-find 命令。

例 31.3. 从命令行测试 HBAC 规则

在以下测试中,名为 rule2 的 HBAC 规则阻止 user1 使用 sudo 服务访问 example.com
$ ipa hbactest --user=user1 --host=example.com --service=sudo --rules=rule1
---------------------
Access granted: False
---------------------
  Not matched rules: rule1

例 31.4. 从命令行测试多个 HBAC 规则

测试多个 HBAC 规则时,如果至少一条规则允许用户成功访问,则测试将通过。
$ ipa hbactest --user=user1 --host=example.com --service=sudo --rules=rule1 --rules=rule2
--------------------
Access granted: True
--------------------
  Matched rules: rule2
  Not matched rules: rule1
在输出中:
  • 匹配的规则 列出了允许成功访问的规则。
  • 不匹配规则 会列出阻止访问的规则。

31.2.3. 禁用 HBAC 规则

禁用 HBAC 规则将停用该规则,但不会删除该规则。如果禁用 HBAC 规则,您可以稍后重新启用它。
注意
例如,在首次配置自定义 HBAC 规则后,禁用 HBAC 规则非常有用。为确保新配置不会被默认的 allow_all HBAC 规则覆盖,您必须禁用 allow_all
要禁用 HBAC 规则,您可以使用:

Web UI:禁用 HBAC 规则

  1. 选择 基于策略的访问控制 HBAC 规则
  2. 选择您要禁用的 HBAC 规则,然后单击 Disable

图 31.6. 禁用 allow_all HBAC 规则

禁用 allow_all HBAC 规则

命令行:禁用 HBAC 规则

使用 ipa hbacrule-disable 命令。例如,禁用 allow_all 规则:
$ ipa hbacrule-disable allow_all
------------------------------
Disabled HBAC rule "allow_all"
------------------------------
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.