4.4. SSSD および FreeIPA Identity Management の統合
Red Hat build of Keycloak には、System Security Services Daemon (SSSD) プラグインが含まれています。SSSD は Fedora および Red Hat Enterprise Linux (RHEL) に含まれており、複数の ID プロバイダーおよび認証プロバイダーへのアクセスを提供します。SSSD は、フェイルオーバーやオフラインサポートなどの利点も提供します。詳細は、Red Hat Enterprise Linux Identity Management のドキュメント を参照してください。
SSSD は、認証とアクセス制御を提供する FreeIPA アイデンティティー管理 (IdM) サーバーとも統合します。この統合により、Red Hat build of Keycloak は特権アクセス管理 (PAM) サービスに対して認証し、SSSD からユーザーデータを取得できるようになります。Linux 環境における Red Hat Identity Management の使用に関する詳細は、Red Hat Enterprise Linux Identity Management のドキュメント を参照してください。
Red Hat build of Keycloak と SSSD は、読み取り専用の D-Bus インターフェイスを介して通信します。このため、ユーザーのプロビジョニングおよび更新方法は、FreeIPA/IdM 管理インターフェイスを使用する方法です。デフォルトでは、インターフェイスはユーザー名、メール、名、および姓をインポートします。
Red Hat build of Keycloak はグループとロールを自動的に登録しますが、同期はしません。Red Hat build of Keycloak 内で Red Hat build of Keycloak 管理者が加えた変更は、SSSD と同期されません。
4.4.1. FreeIPA/IdM サーバー
FreeIPA コンテナーイメージ は Quay.io で入手できます。FreeIPA サーバーを設定するには、FreeIPA のドキュメント を参照してください。
手順
以下のコマンドを使用して FreeIPA サーバーを実行します。
docker run --name freeipa-server-container -it \ -h server.freeipa.local -e PASSWORD=YOUR_PASSWORD \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ -v /var/lib/ipa-data:/data:Z freeipa/freeipa-server
server.freeipa.local
のパラメーター-h
は FreeIPA/IdM サーバーのホスト名を表します。YOUR_PASSWORD
を独自のパスワードに変更します。コンテナーが起動したら、
/etc/hosts
ファイルを以下のように変更します。x.x.x.x server.freeipa.local
この変更を加えない場合は、DNS サーバーを設定する必要があります。
SSSD フェデレーションプロバイダーが Red Hat build of Keycloak で開始および実行されるように、以下のコマンドを使用して IPA ドメインに Linux サーバーを登録します。
ipa-client-install --mkhomedir -p admin -w password
クライアントで以下のコマンドを実行して、インストールが機能していることを確認します。
kinit admin
- パスワードを入力します。
以下のコマンドを使用して IPA サーバーにユーザーを追加します。
$ ipa user-add <username> --first=<first name> --last=<surname> --email=<email address> --phone=<telephoneNumber> --street=<street> --city=<city> --state=<state> --postalcode=<postal code> --password
kinit を使用してユーザーのパスワードを強制的に設定します。
kinit <username>
以下のコマンドを入力して通常の IPA 操作を復元します。
kdestroy -A kinit admin
4.4.2. SSSD および D-Bus
フェデレーションプロバイダーは、D-BUS を使用して SSSD からデータを取得します。PAM を使用してデータを認証します。
手順
sssd-dbus RPM をインストールします。
$ sudo yum install sssd-dbus
以下のプロビジョニングスクリプトを実行します。
$ bin/federation-sssd-setup.sh
このスクリプトは、Red Hat build of Keycloak 用に SSSD と PAM を設定するためのガイドとしても使用できます。これを実行すると、
/etc/sssd/sssd.conf
に次の変更が加えられます。[domain/your-hostname.local] ... ldap_user_extra_attrs = mail:mail, sn:sn, givenname:givenname, telephoneNumber:telephoneNumber ... [sssd] services = nss, sudo, pam, ssh, ifp ... [ifp] allowed_uids = root, yourOSUsername user_attributes = +mail, +telephoneNumber, +givenname, +sn
OS ユーザーがこのインターフェイスを介して IPA サーバーに問い合わせできるように、
ifp
サービスが SSSD に追加され、設定されます。このスクリプトは、SSSD 経由でユーザーを認証するための新しい PAM サービス (
/etc/pam.d/keycloak
) も作成します。auth required pam_sss.so account required pam_sss.so
dbus-send
を実行して、設定が正常に行われていることを確認します。dbus-send --print-reply --system --dest=org.freedesktop.sssd.infopipe /org/freedesktop/sssd/infopipe org.freedesktop.sssd.infopipe.GetUserAttr string:<username> array:string:mail,givenname,sn,telephoneNumber dbus-send --print-reply --system --dest=org.freedesktop.sssd.infopipe /org/freedesktop/sssd/infopipe org.freedesktop.sssd.infopipe.GetUserGroups string:<username>
セットアップが成功すると、各コマンドでユーザーの属性とグループがそれぞれ表示されます。タイムアウトまたはエラーが発生した場合、Red Hat build of Keycloak で実行されているフェデレーションプロバイダーはデータを取得できません。このエラーは、通常、サーバーが FreeIPA IdM サーバーに登録されていないか、SSSD サービスにアクセスするパーミッションがないために発生します。
SSSD サービスにアクセスする権限がない場合は、Red Hat build of Keycloak サーバーを実行しているユーザーが次のセクションの
/etc/sssd/sssd.conf
ファイルに存在することを確認してください。[ifp] allowed_uids = root, yourOSUsername
ホスト内に
ipaapi
システムユーザーが作成されます。このユーザーは、ifp
サービスに必要です。システムにユーザーが作成されたことを確認します。grep ipaapi /etc/passwd ipaapi:x:992:988:IPA Framework User:/:/sbin/nologin
4.4.3. SSSD フェデレーションプロバイダーの有効化
Red Hat build of Keycloak は、DBus-Java プロジェクトを使用して D-Bus および JNA と低レベルで通信し、オペレーティングシステムのプラグ可能な認証モジュール (PAM) 経由で認証します。
現在、Red Hat build of Keycloak には SSSD
プロバイダーの実行に必要なライブラリーがすべて含まれていますが、JDK バージョン 17 が必要です。そのため、ホスト設定が正しく、Red Hat build of Keycloak の実行に JDK 17 が使用されている場合に限り、SSSD プロバイダーが表示されます。
4.4.4. フェデレーションされた SSSD ストアの設定
インストール後に、フェデレーションされた SSSD ストアを設定します。
手順
- メニューの User Federation をクリックします。
- すべてが正常にセットアップされると、Add Sssd providers ボタンがページに表示されます。そのボタンをクリックします。
- 新しいプロバイダーに名前を割り当てます。
- Save をクリックします。
これで、Red Hat build of Keycloak に対して、FreeIPA/IdM ユーザーと認証情報を使用して認証できるようになりました。