跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文档 / 管理指南 / 配置和管理 / 访问控制列表
适用范围 SUSE Linux Enterprise High Availability Extension 15 SP4

13 访问控制列表

crm 外壳 (crmsh) 或 Hawk2 等群集管理工具可由 root 用户或 haclient 组内的任何用户使用。默认情况下,这些用户具有完全读/写访问权。要限制访问权或指派更加细化的访问权限,可以使用访问控制列表 (ACL)。

访问控制列表由一组有序的访问规则构成。每个规则针对一部分群集配置赋予用户读取或写入访问权限,或拒绝其访问。规则通常会组合在一起产生特定角色,然后可以为用户指派与其任务匹配的角色。

注意
注意:CIB 语法验证版本与 ACL 的差异

仅当您的 CIB 是使用 pacemaker-2.0 或更高 CIB 语法版本验证的情况下,此 ACL 文档才适用。有关如何查验这一点以及升级 CIB 版本的细节,请参见注意:升级 CIB 语法版本

13.1 要求和先决条件

开始对群集使用 ACL 之前,确保满足了以下条件:

  • 请使用 NIS、Active Directory 或者通过手动方式将相同用户添加到所有节点,来确保群集中所有节点上的用户一致。

  • 您要使用 ACL 修改其访问权限的所有用户都必须属于 haclient 组。

  • 所有用户都需要使用 crmsh 的绝对路径 /usr/sbin/crm 运行 crmsh。

  • 如果非特权用户想要运行 crmsh,则需要使用 /usr/sbin 扩展其 PATH 变量。

重要
重要:默认访问权限
  • ACL 是可选功能。默认情况下,ACL 处于禁用状态。

  • 如果未启用 ACL,则 root 用户以及属于 haclient 组的所有用户都将拥有对群集配置的完全读/写访问权。

  • 即使启用并配置了 ACL,root 和默认 CRM 拥有者 hacluster 也始终对群集配置拥有完全访问权。

13.2 概念概述

访问控制列表由一组有序的访问规则构成。每个规则针对一部分群集配置赋予用户读取或写入访问权限,或拒绝其访问。规则通常会组合在一起产生特定角色,然后可以为用户指派与其任务匹配的角色。ACL 角色是用于描述对 CIB 访问权限的一组规则。规则包括以下组成部分:

  • 访问权限,例如拒绝

  • 规则应用位置的规范。此规范可以是类型、ID 参照或 XPath 表达式。XPath 是在 XML 文档中选择节点所用的语言。有关详细信息,请参见 http://en.wikipedia.org/wiki/XPath

通常,方便的做法是在角色中捆绑 ACL 并将特定角色指派给系统用户(ACL 目标)。创建 ACL 角色的方法有以下几种:

13.3 在群集中启用 ACL

在开始配置 ACL 之前,需要先启用 ACL。要执行此操作,请在 crmsh 中使用以下命令:

root # crm configure property enable-acl=true

或者,按过程 13.1 “使用 Hawk 启用 ACL”中所述使用 Hawk2。

过程 13.1︰ 使用 Hawk 启用 ACL
  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 在左侧导航栏中,选择群集配置显示全局群集选项及它们当前的值。

  3. 群集配置下面,单击空下拉框并选择 enable-acl 以添加该参数。系统即会添加该参数,且将其设为默认值 No

  4. 将其值设置为 Yes,然后应用更改。

13.4 创建只读 monitor 角色

以下小节介绍如何使用 Hawk2 或 crm 外壳定义 monitor 角色来配置只读访问权限。

13.4.1 使用 Hawk2 创建只读 monitor 角色

下面的过程说明如何通过定义 monitor 角色并将其指派给用户来配置对群集配置的只读访问权限。您也可以根据过程 13.4 “使用 crmsh 添加 monitor 角色并指派用户”中所述使用 crmsh 来实现此目的。

过程 13.2︰ 使用 Hawk2 添加 monitor 角色
  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 在左侧导航栏中,选择角色

  3. 单击创建

  4. 输入唯一的角色 ID,例如 monitor

  5. 为访问权限选择读取

  6. Xpath 输入 Xpath 表达式 /cib

    Image
  7. 单击创建

    如此即会创建名为 monitor 的新角色,为其设置读取权限,并通过使用 XPath 表达式 /cib 将其应用到 CIB 中的所有元素。

  8. 如果需要,请通过单击加号图标并指定相应参数添加更多规则。

  9. 使用向上或向下箭头按钮对各规则排序。

过程 13.3︰ 使用 Hawk2 向目标指派角色

要向系统用户(即目标)指派我们在过程 13.2 中创建的角色,请执行以下操作继续:

  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 在左侧导航栏中,选择目标

  3. 要创建系统用户(即 ACL 目标),请单击创建,然后输入一个唯一的目标 ID,例如 tux。确保此用户属于 haclient 组。

  4. 要向目标指派角色,请选择一个或多个角色

    在本示例中,请选择您在过程 13.2 中创建的 monitor 角色。

    Image
  5. 确认您的选择。

要配置资源或约束的访问权限,还可使用第 13.8 节 “通过缩写设置 ACL 规则”中所述的缩写语法。

13.4.2 使用 crmsh 创建只读 monitor 角色

以下过程说明如何通过定义 monitor 角色并将其指派给用户,来配置对群集配置的只读访问权。

过程 13.4︰ 使用 crmsh 添加 monitor 角色并指派用户
  1. root 身份登录。

  2. 启动 crmsh 的交互模式:

    root # crm configure
    crm(live)configure# 
  3. 定义 ACL 角色:

    1. 使用 role 命令定义新角色:

      crm(live)configure# role monitor read xpath:"/cib"

      上面的命令会创建名为 monitor 的新角色,为其设置权限并通过使用 XPath 表达式 /cib 将其应用到 CIB 中的所有元素。如有必要,可添加更多访问权限和 XPath 参数。

    2. 根据需要添加其他角色。

  4. 将角色指派给一个或多个 ACL 目标,即相应的系统用户。确保这些目标属于 haclient 组。

    crm(live)configure# acl_target tux monitor
  5. 检查更改:

    crm(live)configure# show
  6. 提交更改:

    crm(live)configure# commit

要配置资源或约束的访问权限,还可使用第 13.8 节 “通过缩写设置 ACL 规则”中所述的缩写语法。

13.5 去除用户

以下小节介绍如何使用 Hawk2 或 crmsh 从 ACL 中去除现有用户。

13.5.1 使用 Hawk2 去除用户

要从 ACL 中去除用户,请执行以下步骤:

  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 在左侧导航栏中,选择目标

  3. 要去除系统用户(ACL 目标),请单击操作列下方的垃圾桶图标。

  4. 在对话框中进行确认。

13.5.2 使用 crmsh 去除用户

要从 ACL 中去除用户,请以用户名替换占位符 USER

root # crm configure delete USERNAME

或者,您也可以使用 edit 子命令:

root # crm configure edit USERNAME

13.6 去除现有角色

以下小节介绍如何使用 Hawk2 或 crmsh 去除现有角色。

注意
注意:删除具有引用用户的角色

请注意,不能有任何用户属于此角色。如果角色中仍存在用户的引用,则不能删除该角色。请在删除角色前先删除用户的引用。

13.6.1 使用 Hawk2 去除现有角色

要移除角色,请执行以下步骤:

  1. 登录 Hawk2:

    https://HAWKSERVER:7630/
  2. 在左侧导航栏中,选择角色

  3. 要去除角色,请单击操作列下方的垃圾桶图标。

  4. 在对话框中进行确认。如果有错误消息显示,请确保您的角色是空的,没有引用任何角色。

13.6.2 使用 crmsh 去除现有角色

要去除现有角色,请以角色名称替换占位符 ROLE

root # crm configure delete ROLE

13.7 通过 XPath 表达式设置 ACL 规则

要通过 XPath 管理 ACL 规则,需要知道基础 XML 的结构。可使用以下命令来检索结构(该命令将显示 XML 格式的群集配置,请参见例 13.1):

root # crm configure show xml
例 13.1︰ XML 格式群集配置摘录
<cib>
  <!-- ... -->
  <configuration>
    <crm_config>
       <cluster_property_set id="cib-bootstrap-options">
        <nvpair name="stonith-enabled" value="true" id="cib-bootstrap-options-stonith-enabled"/>
       [...]
      </cluster_property_set>
    </crm_config>
    <nodes>
      <node id="175704363" uname="alice"/>
      <node id="175704619" uname="bob"/>
    </nodes>
    <resources> [...]  </resources>
    <constraints/>
    <rsc_defaults> [...] </rsc_defaults>
    <op_defaults> [...] </op_defaults>
  <configuration>
</cib>

使用 XPath 语言,您可在此 XML 文档中查找节点。例如,要选择 root 节点 (cib),则使用 XPath 表达式 /cib。要查找全局群集配置,则使用 XPath 表达式 /cib/configuration/crm_config

例如,表 13.1 “Operator 角色 - 访问类型和 XPath 表达式”显示了用于创建操作员角色的参数(访问类型和 XPath 表达式)。具有此角色的用户只能执行第二列中所述的任务 - 他们既不能重新配置任何资源(例如,更改参数或操作),也不能更改共置约束或顺序约束的配置。

表 13.1︰ Operator 角色 - 访问类型和 XPath 表达式

类型

XPath/说明

//crm_config//nvpair[@name='maintenance-mode']

打开或关闭群集维护模式。

//op_defaults//nvpair[@name='record-pending']

选择是否记录待发操作。

//nodes/node//nvpair[@name='standby']

将节点设置为联机或备用模式。

//resources//nvpair[@name='target-role']

启动、停止任何资源或将其升级、降级。

//resources//nvpair[@name='maintenance']

选择是否应将资源置于维护模式。

//constraints/rsc_location

将资源从一个节点迁移/移动到另一个节点。

/cib

查看群集的状态。

13.8 通过缩写设置 ACL 规则

不想使用 XML 结构的用户可以采用更简单的方法。

例如,请考虑以下 XPath:

//*[@id="rsc1"]

它会查找 ID 为 rsc1 的所有 XML 节点。

缩写语法与以下内容类似:

ref:"rsc1"

这同样适用于约束。这是详细的 XPath:

//constraints/rsc_location

缩写语法与以下内容类似:

type:"rsc_location"

可以在 crmsh 和 Hawk2 中使用缩写语法。CIB 守护程序知道如何将 ACL 规则应用到匹配的对象。