12.2.6. PoC 環境で Ansible を使用して IdM ユーザーが IdM クライアントにリモートでアクセスできるようにする
Ansible を使用してホストベースのアクセス制御設定を自動化することは、PoC 環境での Ansible Playbook を使用した複数の IdM ユーザーの追加 で説明されている Web UI 方式を使用するよりも効率的です。
Ansible Playbook を使用して、Identity Management (IdM) にホストベースのアクセス制御 (HBAC) ルールが存在することを確認する方法を説明します。以下の例では、次の方法について説明します。
-
IdM ユーザー
idmuser01がSSHプロトコルを使用して IdM クライアントclient.idm.example.comにリモートでアクセスできるようにします。 -
IdM ユーザー
idmuser03がSSHプロトコルを使用して IdM クライアントclient.idm.example.comにアクセスできないようにします。
前提条件
- ユーザー idmuser01 および idmuser03 が IdM に存在する。詳細は、PoC 環境での IdM Web UI を使用した IdM ユーザーの追加 を参照してください。
- ansible_user ユーザーとして controller.idm.example.com にログインしている。
手順
~/MyPlaybooks/ ディレクトリーに、必要な HBAC ポリシーを定義した以下の内容を含む Ansible Playbook ファイル
ensure-new-hbacrule-present.ymlを作成します。--- - name: Playbook to handle hbacrules hosts: ipaserver tasks: # Ensure idmuser01 can access client.idm.example.com via the sshd service - freeipa.ansible_freeipa.ipahbacrule: ipaadmin_password: Secret123 name: allow_remote_access user: idmuser01 host: client.idm.example.com hbacsvc: - sshd state: present # Ensure allow_all rule is modified so that only admins are members - freeipa.ansible_freeipa.ipahbacrule: ipaadmin_password: Secret123 name: allow_all group: admins usercat: ""HBAC ルールがすでに存在し、それを変更するだけの場合は、
actionオプションをmemberに設定する必要があります。これを行わないと、Playbook が失敗します。この例のタスクEnsure allow_all rule is modified so that only admins are members(管理者だけがメンバーとなるように allow_all ルールを変更する) は、組み込みのルールallow_allを変更するものです。そのため、action: memberを指定する必要があります。ヒントHBAC 関連の Playbook を最初から作成しなくても済むように、
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/hbacrule/ディレクトリー内のサンプル Playbook をコピーして変更できます。これらのサンプルは、
freeipa_hbacsvc、freeipa_hbacsvcgroup、およびfreeipa_hbacruleモジュールに対応しています。これらのモジュールの README ファイルは、/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipaディレクトリーにあります。Playbook を実行します。
$ ansible-playbook -i inventory ensure-new-hbacrule-present.yml
検証
-
IdM
adminとして IdM Web UI にログインします。Password フィールドに Secret123 と入力します。 Policy > Host Based Access Control > HBAC Test に移動します。次の表のとおりにテストのパラメーターを選択します。
Expand リスト 選択 WHO
idmuser03
ACCESSING
client.idm.example.com
VIA SERVICE
sshd
RULES
allow_remote_access
-
Run Test タブで、Run Test をクリックしてシミュレーションを実行します。ユーザー
idmuser03は HBAC ルールのメンバーではないため、Run Test タブの右側のコンソールに ACCESS DENIED というメッセージが表示されます。 次の表のとおりにテストのパラメーターを選択します。
Expand リスト 選択 WHO
idmuser01
ACCESSING
client.idm.example.com
VIA SERVICE
sshd
RULES
allow_remote_access
-
Run Test タブで、Run Test をクリックしてシミュレーションを実行します。ユーザー
idmuser01は HBAC ルールのメンバーであるため、Run Test タブの右側のコンソールに ACCESS GRANTED というメッセージが表示されます。 ターミナルを開き、ユーザー
idmuser03としてクライアントマシンにログインします。このユーザーはルールのメンバーではないため、接続が失敗します。$ ssh idmuser03@client(idmuser03@client) Password: RedHat123& Connection closed by 172.25.250.11 port 22ユーザー
idmuser01としてクライアントマシンへのログインを試します。このユーザーはルールのメンバーであるため、接続が成功します。$ ssh idmuser01@client(idmuser01@client) Password: Password123 ...output omitted... [idmuser01@client /]$*