11.11. ha_cluster RHEL システムロールを使用したアクセス制御リスト (ACL) を実装する高可用性クラスターの設定
(RHEL 9.5 以降) クラスターの pcs
管理アカウントは hacluster
です。アクセス制御リスト (ACL) を使用すると、hacluster
ユーザー以外の特定のローカルユーザーに Pacemaker クラスターを管理する権限を付与できます。この機能は、承認されていないユーザーによるビジネス上の機密情報へのアクセスを制限するのによく使用されます。
デフォルトでは、ACL は有効になっていません。そのため、全ノード上のグループ haclient
の全メンバーに、クラスター設定への完全な読み取りおよび書き込みローカルアクセス権が付与されます。haclient
のメンバーでないユーザーにアクセス権利は付与されません。ただし、ACL が有効になっている場合は、haclient
グループのメンバーであっても、ACL からそのユーザーに付与されたものにしかアクセスできません。ACL が有効な場合でも、root
および hacluster
ユーザーアカウントには、常にクラスター設定へのフルアクセス権が付与されます。
ACL を使用してローカルユーザーの権限を設定する場合は、そのロールの権限を定義するロールを作成します。さらに、そのロールをユーザーに割り当てます。同じユーザーに複数のロールを割り当てた場合、拒否権限、書き込み権限、読み取り権限の順に優先されます。
次の手順の例では、ha_cluster
RHEL システムロールを使用して、クラスター設定へのアクセスを制御する ACL を実装する高可用性クラスターを自動的に作成します。
ha_cluster
RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
Copy to Clipboard Copied! ansible-vault create
コマンドでエディターが開いたら、機密データを<key>: <value>
形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>
Copy to Clipboard Copied! - 変更を保存して、エディターを閉じます。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: redhat.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
--- - 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: redhat.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
Copy to Clipboard Copied! サンプル 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
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
Copy to Clipboard Copied! このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.yml
Copy to Clipboard Copied!