This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第13章 LDAP フェイルオーバーの設定
OpenShift Container Platform は Lightweight Directory Access Protocol (LDAP) セットアップで使用するための 認証プロバイダーを提供しますが、接続できるのは単一の LDAP サーバーのみです。OpenShift Container Platform インストール時に、LDAP フェイルオーバーについて System Security Services Daemon (SSSD) を設定し、ある LDAP サーバーが失敗した場合にクラスターにアクセスできるようにします。
この設定には、詳細な設定および通信先となる OpenShift Container Platform の認証サーバー (リモート Basic 認証サーバー とも呼ばれます) が別途必要となります。メールアドレスなどの追加の属性を OpenShift Container Platform に渡すようにこのサーバーを設定し、それらの属性を Web コンソールで表示できるようにします。
このトピックでは、専用の物理または仮想マシン (VM) のセットアップを実行する方法や、コンテナーでの SSSD の設定方法についても説明します。
このトピックのすべてのセクションを完了する必要があります。
13.1. 基本リモート認証設定の前提条件 リンクのコピーリンクがクリップボードにコピーされました!
セットアップを始める前に、LDAP サーバーの以下の情報について知っておく必要があります。
- ディレクトリーサーバーが FreeIPA、Active Directory、または別の LDAP ソリューションでサポートされているかどうか。
- LDAP サーバーの Uniform Resource Identifier (URI) (例: ldap.example.com)。
- LDAP サーバーの CA 証明書の場所。
- LDAP サーバーがユーザーグループの RFC 2307 または RFC2307bis に対応しているかどうか。
サーバーを準備します。
remote-basic.example.com: リモート Basic 認証サーバーとして使用する VM。
- Red Hat Enterprise Linux 7.0 以降などの、このサーバーの SSSD バージョン 1.12.0 を含むオペレーティングシステムを選択します。
openshift.example.com: OpenShift Container Platform の新規インストール。
- このクラスターに認証方法を設定することはできません。
- このクラスターで OpenShift Container Platform を起動することはできません。
13.2. 証明書の生成およびリモート Basic 認証サーバーとの共有 リンクのコピーリンクがクリップボードにコピーされました!
Ansible ホストインベントリーファイル (デフォルトは /etc/ansible/hosts) に一覧表示された 1 つ目のマスターホストで以下の手順を実行します。
リモート Basic 認証サーバーと OpenShift Container Platform 間の通信に新異性をもたせるために、このセットアップの他のフェーズで使用する Transport Layer Security (TLS) 証明書のセットを作成します。以下のコマンドを実行します。
openshift start \ --public-master=https://openshift.example.com:8443 \ --write-config=/etc/origin/
# openshift start \ --public-master=https://openshift.example.com:8443 \ --write-config=/etc/origin/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力には、/etc/origin/master/ca.crt および /etc/origin/master/ca.key の署名用証明書が含まれます。
署名用証明書を使用してリモート Basic 認証サーバーで使用するキーを生成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- リモート Basic 認証サーバーにアクセスする必要のある、すべてのホスト名およびインターネット IP アドレスのコンマ区切りの一覧です。
注記生成する証明書ファイルは 2 年間有効です。この期間は、
--expire-days
および--signer-expire-days
の値を変更して変更することができますが、セキュリティー上の理由により、730 より大きな値を設定しないでください。重要リモート Basic 認証サーバーにアクセスする必要のあるすべてのホスト名およびインターフェース IP アドレスを一覧表示しない場合、HTTPS 接続は失敗します。
必要な証明書およびキーをリモート Basic 認証サーバーにコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3. SSSD での LDAP フェイルオーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
リモート Basic 認証サーバーで以下の手順を実行します。
メールアドレスおよび表示名などの属性を取得し、それらを OpenShift Container Platform に渡して Web インターフェースに表示することができるように SSSD を設定します。以下の手順では、メールアドレスを OpenShift Container Platform に指定するように SSSD を設定します。
必要な SSSD および Web サーバーコンポーネントをインストールします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow LDAP サーバーに対してこの VM を認証するように SSSD を設定します。LDAP サーバーが FreeIPA または Active Directory 環境の場合、realmd を使用してこのマシンをドメインに参加させることができます。
realm join ldap.example.com
# realm join ldap.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow より高度なケースの場合については、『システムレベル認証ガイド』を参照してください。
- SSSD を使用して LDAP のフェイルオーバーの状態を使用するには、ldap_uri 行の /etc/sssd/sssd.conf ファイルにその他のエントリーを追加します。FreeIPA に登録されたシステムは DNS SRV レコードを使用してフェイルオーバーを自動的に処理します。
/etc/sssd/sssd.conf ファイルの [domain/DOMAINNAME] セクションを変更し、この属性を追加します。
[domain/example.com] ... ldap_user_extra_attrs = mail
[domain/example.com] ... ldap_user_extra_attrs = mail
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- LDAP ソリューションについてのメールアドレスの取得に必要な適切な属性を指定します。IPA の場合は、
mail
を指定します。他の LDAP ソリューションはemail
などの別の属性を使用する可能性があります。
/etc/sssd/sssd.conf ファイルの domain パラメーターには [domain/DOMAINNAME] セクションに一覧表示されているドメイン名のみが含まれていることを確認します。
domains = example.com
domains = example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow メール属性を取得するために Apache パーミッションを付与します。以下の行を /etc/sssd/sssd.conf ファイルの [ifp] セクションに追加します。
[ifp] user_attributes = +mail allowed_uids = apache, root
[ifp] user_attributes = +mail allowed_uids = apache, root
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべての変更が適切に適用されていることを確認するには、SSSD を再起動します。
systemctl restart sssd.service
$ systemctl restart sssd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザー情報が適切に取得できるかテストします。
getent passwd <username>
$ getent passwd <username> username:*:12345:12345:Example User:/home/username:/usr/bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定したメール属性がドメインからメールアドレスを返すことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - LDAP ユーザーとして VM へのログインを試行し、LDAP 認証情報を使用してログインできることを確認します。ログインにはローカルコンソールまたは SSH などのリモートサービスを使用できます。
デフォルトで、すべてのユーザーは LDAP 認証情報を使用してリモート Basic 認証サーバーにログインできます。この動作は変更することができます。
- IPA に参加するシステムを使用する場合、ホストベースのアクセス制御を設定します。
- Active Directory に参加するシステムを使用する場合には、グループポリシーオブジェクトを使用します。
- その他のケースについては、SSSD 設定 についてのドキュメントを参照してください。
13.4. Apache での SSSD の使用の設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の内容を含む /etc/pam.d/openshift ファイルを作成します。
auth required pam_sss.so account required pam_sss.so
auth required pam_sss.so account required pam_sss.so
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定により、認証要求が openshift スタックに対して発行された時に PAM (プラグ可能な認証モジュール) は pam_sss.so を使用して認証とアクセス制御を決定できるようになります。
/etc/httpd/conf.modules.d/55-authnz_pam.conf ファイルを編集して、以下の行のコメントを解除します。
LoadModule authnz_pam_module modules/mod_authnz_pam.so
LoadModule authnz_pam_module modules/mod_authnz_pam.so
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apache httpd.conf ファイルをリモート Basic 認証用に設定するには、openshift-remote-basic-auth.conf ファイルを /etc/httpd/conf.d ディレクトリーに作成します。以下のテンプレートを使用して必要な設定および値を指定します。
重要テンプレートを十分に確認し、その内容を環境に合うようにカスタマイズします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow check_user.php スクリプトを /var/www/html ディレクトリーに作成します。以下のコードを組み込みます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apache がモジュールを読み込めるようにします。/etc/httpd/conf.modules.d/55-lookup_identity.conf ファイルを変更し、以下の行のコメントを解除します。
LoadModule lookup_identity_module modules/mod_lookup_identity.so
LoadModule lookup_identity_module modules/mod_lookup_identity.so
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux ブール値を設定し、SElinux が Apache が D-BUS を介して SSSD に接続することを許可するようにします。
setsebool -P httpd_dbus_sssd on
# setsebool -P httpd_dbus_sssd on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SELinux に Apache による PAM サブシステムへの問い合わせを受け入れることを指示するブール値を設定します。
setsebool -P allow_httpd_mod_auth_pam on
# setsebool -P allow_httpd_mod_auth_pam on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Apache を起動します。
systemctl start httpd.service
# systemctl start httpd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.5. SSSD を基本リモート認証サーバーとして使用するよう OpenShift Container Platform を設定する リンクのコピーリンクがクリップボードにコピーされました!
作成した新規のアイデンティティープロバイダーを使用するようクラスターのデフォルト設定を変更します。Ansible ホストインベンリーファイルに最初に一覧表示されるマスターホストで以下の手順を実行します。
- /etc/origin/master/master-config.yaml ファイルを開きます。
identityProviders セクションの場所を見つけ、これを以下のコードに置き換えます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された設定を使って OpenShift Container Platform を起動します。
openshift start \ --public-master=https://openshift.example.com:8443 \ --master-config=/etc/origin/master/master-config.yaml \ --node-config=/etc/origin/node-node1.example.com/node-config.yaml
# openshift start \ --public-master=https://openshift.example.com:8443 \ --master-config=/etc/origin/master/master-config.yaml \ --node-config=/etc/origin/node-node1.example.com/node-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc
CLI を使用してログインをテストします。oc login https://openshift.example.com:8443
oc login https://openshift.example.com:8443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有効な LDAP 認証情報のみを使用してログインすることができます。
アイデンティティーを一覧表示し、各ユーザー名のメールアドレスが表示されていることを確認します。以下のコマンドを実行します。
oc get identity -o yaml
$ oc get identity -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow