13.10. 使用 ha_cluster RHEL 系统角色配置实现访问控制列表(ACL)的高可用性集群
(RHEL 9.5 及更高版本)集群的 pcs
管理帐户是 hacluster
。使用访问控制列表(ACL),您可以为除用户 hacluster
以外的特定本地用户授予权限来管理 Pacemaker 集群。此功能的常见用例是限制未经授权的用户访问业务敏感信息。
默认情况下不启用 ACL。因此,所有节点上的 haclient
组的任何成员都对集群 configuratioan 有完全的本地读写权限。不是 haclient
成员的用户没有访问权限。当启用 ACL 时,即使属于 haclient
组成员的用户也只能访问 ACL 为该用户授予的内容。root
和 hacluster
用户帐户始终对集群配置有完全访问权限,即使当启用了 ACL 时。
当您为具有 ACL 的本地用户设置权限时,您可以创建一个为该角色定义权限的角色。然后,您将该角色分配给用户。如果您为同一用户分配了多个角色,则任何拒绝权限优先,然后是写,再然后是读。
以下示例流程使用 ha_cluster
RHEL 系统角色,以自动方式创建一个集群,该集群实施 ACL ,来控制对配置的访问。
ha_cluster
RHEL 系统角色替换指定节点上任何现有的集群配置。playbook 中未指定的任何设置都将丢失。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
- 清单文件指定集群节点,如 为 ha_cluster RHEL 系统角色指定清单 中所述。有关创建清单文件的常规信息,请参阅 在 RHEL 9 上准备一个控制节点。
流程
将您的敏感变量存储在一个加密文件中:
创建 vault :
$ ansible-vault create vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
在
ansible-vault create
命令打开编辑器后,以<key>: <value>
格式输入敏感数据:cluster_password: <cluster_password>
- 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
创建一个包含以下内容的 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
文件。验证 playbook 语法:
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 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