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