26.6. Ansible Playbook を使用して IdM ユーザー、グループ、ホスト、またはホストグループでサービスのキータブを作成できるようにする手順
キータブは、Kerberos プリンシパルと暗号化鍵のペアを含むファイルです。キータブファイルは通常、人の介入なしで、またはプレーンテキストファイルに保存されたパスワードを使用せずに、スクリプトで自動的に Kerberos で認証を行えるようにするために使用します。その後、スクリプトは取得した認証情報を使用してリモートシステムに保存されているファイルにアクセスできます。
Identity Management (IdM) 管理者は、他のユーザーが、IdM で実行しているサービスのキータブを取得したり、作成したりできるようにします。特定のユーザーおよびユーザーグループがキータブを作成できるようにすると、IdM 管理者パスワードを共有せずにサービスの管理を委譲できます。このように委譲することで、システムを詳細にわたり管理できます。
以下の手順に従って、特定の IdM ユーザー、ユーザーグループ、ホスト、およびホストグループが、IdM クライアントで実行している HTTP サービスのキータブを作成できるようにします。具体的には、IdM ユーザー user01 が、client.idm.example.com という名前の IdM クライアントで実行中の 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 に登録 している。
- 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_create_keytab-present.yml
) のコピーを作成します。以下に例を示します。$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
-
Ansible Playbook ファイル (
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
) を開きます。 以下を変更してファイルを調整します。
-
ipaadmin_password
変数で指定した IdM 管理者パスワード。 - HTTP サービスが実行されている IdM クライアントの名前。現在の例では、HTTP/client.idm.example.com です。
-
allow_create_keytab_user:
セクションに記載されている IdM ユーザー名。現在の例では user01 です。 -
allow_create_keytab_group:
セクションに記載されている IdM ユーザーグループ名。 -
allow_create_keytab_host:
セクションに記載されている IdM ホスト名。 -
allow_create_keytab_hostgroup:
セクションに記載されている IdM ホストグループ名。 tasks
セクションのname
変数で指定されているタスク名。現在の例に合わせて調節すると、コピーされたファイルは以下のようになります。
--- - name: Service member allow_create_keytab present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com members allow_create_keytab present for user01 ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com allow_create_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_create_keytab-present-copy.yml
検証
特定の HTTP サービスのキータブを作成する権限のある IdM ユーザーで、IdM サーバーに SSH 接続します。
$ ssh user01@server.idm.example.com Password:
ipa-getkeytab
コマンドを使用して、HTTP サービスの新規キータブを生成します。$ ipa-getkeytab -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 のキータブが正常に作成されています。