Red Hat Training

A Red Hat training course is available for RHEL 8

61.4. Ansible を使用したスマートカード認証用の IdM クライアント設定

このセクションでは、ansible-freeipa ipasmartcard_client モジュールを使用して特定の Identity Management (IdM) クライアントを設定し、IdM ユーザーがスマートカードで認証できるようにする方法について説明します。この手順を実行し、以下のいずれかを使用して IdM にアクセスする IdM ユーザーのスマートカード認証を有効にします。

注記

この手順は、IdM Web UI に対する認証には必要ありません。IdM Web UI の認証には 2 つのホストが関係しますが、どちらも IdM クライアントである必要はありません。

  • ブラウザーが実行されているマシン。マシンは IdM ドメインの外にある場合があります。
  • httpd が実行している IdM サーバー

前提条件

  • Ansible を使用したスマートカード認証用の IdM サーバー設定 に説明されているとおり、IdM サーバーがスマートカード認証用に設定されている。
  • IdM サーバーと IdM クライアントに root アクセス権限がある。
  • ルート CA 証明書、IdM CA 証明書、すべての中間 CA の証明書がある。
  • 次の要件を満たすように Ansible コントロールノードを設定しました。

    • Ansible バージョン 2.8 以降を使用している。
    • Ansible コントローラーに ansible-freeipa パッケージがインストールされている。
    • この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としています。
    • この例では、secret.yml Ansible ボールトに ipaadmin_password が保存されていることを前提としています。

手順

  1. CA 証明書が DER などをはじめとする別の形式のファイルに保存されている場合、それらを PEM 形式に変換します。

    # openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM

    IdM CA 証明書は PEM 形式で、/etc/ipa/ca.crt ファイルにあります。

  2. 必要に応じて、openssl x509 ユーティリティーを使用して PEM 形式のファイルの内容を表示し、Issuer および Subject の値が正しいことを確認します。

    # openssl x509 -noout -text -in root-ca.pem | more
  3. Ansible コントロールノードで、~/MyPlaybooks/ ディレクトリーに移動します。

    $ cd ~/MyPlaybooks/
  4. CA 証明書専用のサブディレクトリーを作成します。

    $ mkdir SmartCard/
  5. 便宜上、必要なすべての証明書を ~/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
  6. 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
  7. 次の内容で 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
  8. ファイルを保存します。
  9. 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