26.7. Ansible Playbook を使用して IdM ユーザー、グループ、ホスト、またはホストグループでサービスのキータブを取得できるようにする手順
キータブは、Kerberos プリンシパルと暗号化鍵のペアを含むファイルです。キータブファイルは通常、人の介入なしで、またはプレーンテキストファイルに保存されたパスワードを使用せずに、スクリプトで自動的に Kerberos で認証を行えるようにするために使用します。その後、スクリプトは取得した認証情報を使用してリモートシステムに保存されているファイルにアクセスできます。
IdM 管理者は、他のユーザーが、IdM で実行しているサービスのキータブを取得したり、作成したりできるようにします。
以下の手順に従って、特定の IdM ユーザー、ユーザーグループ、ホスト、およびホストグループが、IdM クライアントで実行している HTTP サービスのキータブを取得できるようにします。具体的には IdM ユーザー user01 が、client.idm.example.com で実行する HTTP サービスのキータブを取得できるように設定する方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。 - HTTP サービスを IdM に登録 している。
- キータブの取得を許可する IdM ユーザーおよびグループが IdM に存在する。
- キータブの取得を許可する IdM ホストおよびホストグループが IdM に存在する。
手順
inventory.file
などのインベントリーファイルを作成します。$ touch inventory.file
inventory.file
を開き、[ipaserver]
セクションに、設定する IdM サーバーを定義します。たとえば、Ansible に対して server.idm.example.com を設定するように指示するには、次のコマンドを実行します。[ipaserver] server.idm.example.com
Ansible Playbook ファイル (
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present.yml
) のコピーを作成します。以下に例を示します。$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present-copy.yml
-
コピーしたファイル
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present-copy.yml
を開きます。 ファイルを調整します。
-
ipaadmin_password
変数は IdM 管理者パスワードに設定します。 -
ipaservice
タスクのname
変数は、HTTP サービスのプリンシパルに設定します。現在の例では、HTTP/client.idm.example.com です。 -
allow_retrieve_keytab_group:
セクションで IdM ユーザーの名前を指定します。現在の例では user01 です。 -
allow_retrieve_keytab_group:
セクションで、IdM ユーザーグループの名前を指定します。 -
allow_retrieve_keytab_group:
セクションで IdM ホストの名前を指定します。 -
allow_retrieve_keytab_group:
セクションで IdM ホストグループの名前を指定します。 tasks
セクションのname
変数を使用して、タスク名を指定します。現在の例に合わせて調節すると、コピーされたファイルは以下のようになります。
--- - name: Service member allow_retrieve_keytab present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com members allow_retrieve_keytab present for user01 ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com allow_retrieve_keytab_user: - user01 action: member
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present-copy.yml
検証
HTTP サービスのキータブ取得権限がある IdM ユーザーとして、IdM サーバーに SSH 接続します。
$ ssh user01@server.idm.example.com Password:
-r
オプションを指定してipa-getkeytab
コマンドを使用してキータブを取得します。$ ipa-getkeytab -r -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytab
-s
オプションは、キータブの取得元となるキー配布センター (KDC) サーバーを指定します。-p
オプションは、キータブを取得するプリンシパルを指定します。-k
オプションは、取得した鍵を追加するキータブファイルを指定します。ファイルが存在しない場合には、作成されます。
このコマンドでエラーが表示されない場合は、user01 で HTTP/client.idm.example.com のキータブが正常に取得されています。