66.4. Ansible を使用したスマートカード認証用の IdM クライアント設定
ansible-freeipa
ipasmartcard_client
モジュールを使用して特定の Identity Management (IdM) クライアントを設定し、IdM ユーザーがスマートカードで認証できるようにするには、次の手順に従います。この手順を実行し、以下のいずれかを使用して IdM にアクセスする IdM ユーザーのスマートカード認証を有効にします。
ssh
プロトコル詳細は、スマートカード認証で SSH アクセスの設定 を参照してください。
- コンソールのログイン
- GNOME Display Manager (GDM)
-
su
コマンド
この手順は、IdM Web UI に対する認証には必要ありません。IdM Web UI の認証には 2 つのホストが関係しますが、どちらも IdM クライアントである必要はありません。
- ブラウザーが実行されているマシン。マシンは IdM ドメインの外にある場合があります。
-
httpd
が実行している IdM サーバー
前提条件
- Ansible を使用したスマートカード認証用の IdM サーバー設定 に説明されているとおり、IdM サーバーがスマートカード認証用に設定されている。
- IdM サーバーと IdM クライアントに root アクセス権限がある。
- ルート CA 証明書、IdM CA 証明書、すべての中間 CA の証明書がある。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
CA 証明書が
DER
などをはじめとする別の形式のファイルに保存されている場合、それらをPEM
形式に変換します。# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
IdM CA 証明書は
PEM
形式で、/etc/ipa/ca.crt
ファイルにあります。必要に応じて、
openssl x509
ユーティリティーを使用してPEM
形式のファイルの内容を表示し、Issuer
およびSubject
の値が正しいことを確認します。# openssl x509 -noout -text -in root-ca.pem | more
Ansible コントロールノードで、~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
CA 証明書専用のサブディレクトリーを作成します。
$ mkdir SmartCard/
便宜上、必要なすべての証明書を ~/MyPlaybooks/SmartCard/ ディレクトリーにコピーします。以下はその例です。
# cp /tmp/root-ca.pem ~/MyPlaybooks/SmartCard/ # cp /tmp/intermediate-ca.pem ~/MyPlaybooks/SmartCard/ # cp /etc/ipa/ca.crt ~/MyPlaybooks/SmartCard/ipa-ca.crt
Ansible インベントリーファイルで、以下を指定します。
- スマートカード認証用に設定する IdM クライアント。
- IdM 管理者パスワード。
CA の証明書へのパス (次の順序に従う)。
- ルート CA 証明書ファイル
- 中間 CA 証明書ファイル
- IdM CA 証明書ファイル
ファイルは次のようになります。
[ipaclients] ipaclient1.example.com ipaclient2.example.com [ipaclients:vars] ipaadmin_password=SomeADMINpassword ipasmartcard_client_ca_certs=/home/<user_name>/MyPlaybooks/SmartCard/root-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/intermediate-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/ipa-ca.crt
次の内容で
install-smartcard-clients.yml
playbook を作成します。--- - name: Playbook to set up smart card authentication for an IdM client hosts: ipaclients become: true roles: - role: ipasmartcard_client state: present
- ファイルを保存します。
Ansible Playbook を実行します。Playbook とインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-clients.yml
ipasmartcard_client
Ansible ロールは、次のアクションを実行します。- スマートカードデーモンを設定する。
- システム全体のトラストストアを設定します。
- System Security Services Daemon (SSSD) を設定して、ユーザーがユーザー名とパスワード、またはスマートカードで認証できるようにします。スマートカード認証用の SSSD プロファイルオプションの詳細は、RHEL のスマートカード認証オプション を参照してください。
これで、インベントリーファイルの ipaclients セクションにリストされているクライアントがスマートカード認証用に設定されました。
--mkhomedir
オプションを使用して IdM クライアントをインストールしている場合、リモートユーザーはホームディレクトリーにログインできます。それ以外の場合、デフォルトのログイン場所はディレクトリー構造のルート /
です。
関連情報
-
/usr/share/doc/ansible-freeipa/playbooks/
ディレクトリーでipasmartcard_server
ロールを使用するサンプル Playbook