13.10. 使用 ha_cluster RHEL 系统角色配置实现访问控制列表(ACL)的高可用性集群


(RHEL 9.5 及更高版本)集群的 pcs 管理帐户是 hacluster。使用访问控制列表(ACL),您可以为除用户 hacluster 以外的特定本地用户授予权限来管理 Pacemaker 集群。此功能的常见用例是限制未经授权的用户访问业务敏感信息。

默认情况下不启用 ACL。因此,所有节点上的 haclient 组的任何成员都对集群 configuratioan 有完全的本地读写权限。不是 haclient 成员的用户没有访问权限。当启用 ACL 时,即使属于 haclient 组成员的用户也只能访问 ACL 为该用户授予的内容。roothacluster 用户帐户始终对集群配置有完全访问权限,即使当启用了 ACL 时。

当您为具有 ACL 的本地用户设置权限时,您可以创建一个为该角色定义权限的角色。然后,您将该角色分配给用户。如果您为同一用户分配了多个角色,则任何拒绝权限优先,然后是写,再然后是读。

以下示例流程使用 ha_cluster RHEL 系统角色,以自动方式创建一个集群,该集群实施 ACL ,来控制对配置的访问。

警告

ha_cluster RHEL 系统角色替换指定节点上任何现有的集群配置。playbook 中未指定的任何设置都将丢失。

先决条件

流程

  1. 将您的敏感变量存储在一个加密文件中:

    1. 创建 vault :

      $ ansible-vault create vault.yml
      New Vault password: <vault_password>
      Confirm New Vault password: <vault_password>
    2. ansible-vault create 命令打开编辑器后,以 <key>: <value> 格式输入敏感数据:

      cluster_password: <cluster_password>
    3. 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
  2. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Create a high availability cluster
      hosts: node1 node2
      vars_files:
        - vault.yml
      tasks:
        - name: Configure a cluster with ACLs assigned
          ansible.builtin.include_role:
            name: rhel-system-roles.ha_cluster
          vars:
              ha_cluster_cluster_name: my-new-cluster
              ha_cluster_hacluster_password: "{{ cluster_password }}"
              ha_cluster_manage_firewall: true
              ha_cluster_manage_selinux: true
              # To use an ACL role permission reference, the reference must exist in CIB.
              ha_cluster_resource_primitives:
                - id: not-for-operator
                  agent: 'ocf:pacemaker:Dummy'
              # ACLs must be enabled (using the enable-acl cluster property) in order to be effective.
              ha_cluster_cluster_properties:
                - attrs:
                    - name: enable-acl
                      value: 'true'
              ha_cluster_acls:
                acl_roles:
                  - id: operator
                    description: HA cluster operator
                    permissions:
                      - kind: write
                        xpath: //crm_config//nvpair[@name='maintenance-mode']
                      - kind: deny
                        reference: not-for-operator
                  - id: administrator
                    permissions:
                      - kind: write
                        xpath: /cib
                acl_users:
                  - id: alice
                    roles:
                      - operator
                      - administrator
                  - id: bob
                    roles:
                      - administrator
                acl_groups:
                  - id: admins
                    roles:
                      - administrator

    示例 playbook 中指定的设置包括以下内容:

    ha_cluster_cluster_name: <cluster_name>
    您要创建的集群的名称。
    ha_cluster_hacluster_password: < password>
    hacluster 用户的密码。hacluster 用户对集群具有完全访问权限。
    ha_cluster_manage_firewall: true
    确定 ha_cluster RHEL 系统角色是否管理防火墙的变量。
    ha_cluster_manage_selinux: true
    确定 ha_cluster RHEL 系统角色是否使用 selinux RHEL 系统角色管理防火墙高可用性服务的端口的变量。
    ha_cluster_resource_primitives: <cluster resources>
    ha_cluster RHEL 系统角色配置的 Pacemaker 资源的资源定义的列表,包括隔离资源。
    ha_cluster_cluster_properties: <cluster properties>
    Pacemaker 集群范围配置的集群属性集合的列表。
    ha_cluster_acls: <dictionary>
    ACL 角色、用户和组值的字典。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.md 文件。

  3. 验证 playbook 语法:

    $ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  4. 运行 playbook:

    $ ansible-playbook --ask-vault-pass ~/playbook.yml

其他资源

  • /usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.md 文件
  • /usr/share/doc/rhel-system-roles/ha_cluster/ 目录
  • Ansible vault
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.