26.7. Ansible Playbook を使用して IdM ユーザー、グループ、ホスト、またはホストグループでサービスのキータブを取得できるようにする手順
キータブは、Kerberos プリンシパルと暗号化鍵のペアを含むファイルです。キータブファイルは通常、人の介入なしで、またはプレーンテキストファイルに保存されたパスワードを使用せずに、スクリプトで自動的に Kerberos で認証を行えるようにするために使用します。その後、スクリプトは取得した認証情報を使用してリモートシステムに保存されているファイルにアクセスできます。
IdM 管理者は、他のユーザーが、IdM で実行しているサービスのキータブを取得したり、作成したりできるようにします。
以下の手順に従って、特定の IdM ユーザー、ユーザーグループ、ホスト、およびホストグループが、IdM クライアントで実行している HTTP サービスのキータブを取得できるようにします。具体的には IdM ユーザー user01 が、client.idm.example.com で実行する HTTP サービスのキータブを取得できるように設定する方法を説明します。
前提条件
コントロールノードでは、
- Ansible バージョン 2.13 以降を使用している。
-
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
$ touch inventory.fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow inventory.fileを開き、[ipaserver]セクションに、設定する IdM サーバーを定義します。たとえば、Ansible に対して server.idm.example.com を設定するように指示するには、次のコマンドを実行します。[ipaserver] server.idm.example.com
[ipaserver] server.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ 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.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
コピーしたファイル
/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変数を使用して、タスク名を指定します。現在の例に合わせて調節すると、コピーされたファイルは以下のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
- ファイルを保存します。
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
$ 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.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
HTTP サービスのキータブ取得権限がある IdM ユーザーとして、IdM サーバーに SSH 接続します。
ssh user01@server.idm.example.com Password:
$ ssh user01@server.idm.example.com Password:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -rオプションを指定してipa-getkeytabコマンドを使用してキータブを取得します。ipa-getkeytab -r -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytab
$ ipa-getkeytab -r -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytabCopy to Clipboard Copied! Toggle word wrap Toggle overflow -sオプションは、キータブの取得元となるキー配布センター (KDC) サーバーを指定します。-pオプションは、キータブを取得するプリンシパルを指定します。-kオプションは、取得した鍵を追加するキータブファイルを指定します。ファイルが存在しない場合には、作成されます。
このコマンドでエラーが表示されない場合は、user01 で HTTP/client.idm.example.com のキータブが正常に取得されています。