20.11. Ansible Playbook を使用して IdM クライアントでの IdM ユーザーの sudo アクセスを確認する
Identity Management (IdM) では、特定の IdM ホストの IdM ユーザーアカウントに sudo アクセスが付与されるようにできます。
この手順では、idm_user_reboot という名前の sudo ルールが存在するように設定します。このルールは、idmclient マシンで /usr/sbin/reboot コマンドを実行するパーミッションを idm_user に付与します。
前提条件
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
ansible-freeipaパッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible Vault に
ipaadmin_passwordが保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipaモジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。 - IdM に idm_user のユーザーアカウントが存在することを確認し、そのユーザーのパスワードを作成してアカウントのロックを解除している。コマンドラインを使用して新しい IdM ユーザーを追加する方法の詳細は、コマンドラインを使用したユーザーの追加 を参照してください。
-
idmclient にローカルの idm_user アカウントがない。(idm_user ユーザーは idmclient の
/etc/passwdファイルに表示されていない)。
手順
inventory.fileなどのインベントリーファイルを作成し、そこにipaserversを定義します。[ipaservers] server.idm.example.com
[ipaservers] server.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudoコマンドを 1 つまたは複数追加します。ensure-reboot-sudocmd-is-present.ymlAnsible Playbook を作成し、sudoコマンドの IdM データベースに/usr/sbin/rebootコマンドが存在するようにします。この手順は、/usr/share/doc/ansible-freeipa/playbooks/sudocmd/ensure-sudocmd-is-present.ymlファイルのサンプルをコピーして変更し、簡素化できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
コマンドを参照する
sudoルールを作成します。sudoコマンドエントリーを使用して sudo ルールが存在することを確認するensure-sudorule-for-idmuser-on-idmclient-is-present.ymlAnsible Playbook を作成します。sudo ルールは、idm_user が idmclient マシンを再起動することを許可します。この手順は、/usr/share/doc/ansible-freeipa/playbooks/sudorule/ensure-sudorule-is-present.ymlファイルのサンプルをコピーして変更し、簡素化できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.yml
$ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
idm_user が sudo を使用して idmclient を再起動できることを確認し、IdM サーバーに存在するように設定した sudo ルールが idmclient で機能することをテストします。サーバーに加えられた変更がクライアントで反映されるまで数分かかる場合があります。
- idmclient に idm_user としてログインします。
sudoを使用してマシンを再起動します。プロンプトが表示されたら、idm_user のパスワードを入力します。sudo /usr/sbin/reboot [sudo] password for idm_user:
$ sudo /usr/sbin/reboot [sudo] password for idm_user:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
sudo が正しく設定されている場合には、マシンが再起動します。