20.3. Ansible を使用して IdM のシステムアカウントを設定し、ユーザーパスワードを変更する
Ansible を使用して、適切な特権とロールを持つ Identity Management (IdM) システムアカウントを設定し、外部の認証情報管理システムが初回ログイン時にパスワードのリセットを必要とせずにユーザーパスワードを設定できるようにします。
以下の例では、ansible-freeipa パッケージのモジュールを使用して、次のものを作成します。
- my- アプリケーション という名前のシステムアカウント。
-
my- アプリケーション password change 特権 という名前の特権に
、System: Change User password の権限を付与します。 - システムアカウントに特権を付与する my- アプリケーション role という名前のロール。
必要に応じて、システムアカウントが設定したパスワードが初回ログイン時に期限切れにならないように設定できます。
前提条件
-
あなたは、
システムアカウント管理者特権を持つロール (例:admin)を使用しています。 次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
ansible-freeipaパッケージがインストールされました。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を含む Ansible インベントリーファイル が作成されていることを前提としています。
-
この例では、secret.yml Ansible vault に
ipaadmin_passwordが保存されていること、および secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできることを前提としています。
-
ターゲットノード (
ansible-freeipaモジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/以下の内容で configure-system-account-to-change-user-passwords.yml という Playbook を作成します。
--- - name: Configure a system account in IdM to change user passwords without requiring a reset hosts: ipaserver become: false gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure sysaccount my-app is present with a random password ipasysaccount: ipaadmin_password: "{{ ipaadmin_password }}" name: my-app random: true register: sysaccount_result - name: Print the generated random password ansible.builtin.debug: var: sysaccount_result.sysaccount.randompassword - name: Ensure privilege my-app password change privilege is present with the password change permission ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: my-app password change privilege permission: - "System: Change User password" - name: Ensure role my-app role is present with the privilege and system account as member iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: my-app role privilege: - my-app password change privilege sysaccount: - my-app - name: Ensure sysaccount my-app can change passwords without requiring a reset ipasysaccount: ipaadmin_password: "{{ ipaadmin_password }}" name: my-app privileged: trueファイルを保存します。
FreeIPA Ansible コレクションの変数とサンプル Playbook の詳細は、コントロールノード上の
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-sysaccount.mdおよび/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-role.mdファイルを参照してください。Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory configure-system-account-to-change-user-passwords.yml
検証
システムアカウントが存在し、特権アカウントとして設定されていることを確認してください。
$ ipa sysaccount-show my-app System account login: my-app Privileged: Trueロールに適切な特権とシステムアカウントメンバーが付与されていることを確認してください。
$ ipa role-show 'my-app role' Role name: my-app role Privileges: my-app password change privilege System accounts: my-app- 外部の認証情報管理システムを使用して、IdM ユーザーのパスワードを変更します。
IdM ユーザーとして IdM にログインしてください。
$ kinit idmuserプロンプトが表示されたら、新しいパスワードを入力します。
idmuser's password:idmuser の KerberosTicket-Granting Ticket を所有していることを確認してください。
$ klistCredentials cache: API:0A481BBD-C3AA-473D-B43A-42CD19C7F045 Principal: idmuser@IDM.EXAMPLE.COM Issued Expires Principal Feb 23 16:06:56 2026 Feb 24 02:04:54 2026 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COMこの出力は、有効な Kerberos チケットを所有していることを示しています。idmuser のパスワードをリセットすることなくログインできました。