第7章 アイデンティティープロバイダーの設定
7.1. htpasswd アイデンティティープロバイダーの設定 リンクのコピーリンクがクリップボードにコピーされました!
htpasswd アイデンティティープロバイダーを設定して、ユーザーが htpasswd ファイルの認証情報を使用して OpenShift Container Platform にログインできるようにします。
htpasswd ID プロバイダーを定義するには、次のタスクを実行します。
-
ユーザーおよびパスワード情報を保存するために
htpasswdファイルを作成 します。 -
htpasswdファイルを表す シークレットを作成 します。 - シークレットを参照する htpasswd ID プロバイダーリソースを定義 します。
- デフォルトの OAuth 設定に リソースを適用して、ID プロバイダーを追加します。
7.1.1. OpenShift Container Platform のアイデンティティープロバイダーについて リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、kubeadmin ユーザーのみがクラスターに存在します。アイデンティティープロバイダーを指定するには、アイデンティティープロバイダーを記述し、これをクラスターに追加するカスタムリソースを作成する必要があります。
/、:、および % を含む OpenShift Container Platform ユーザー名はサポートされません。
7.1.2. htpasswd 認証について リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform で htpasswd 認証を使用すると、htpasswd ファイルに基づいてユーザーを識別できます。htpasswd ファイルは、各ユーザーのユーザー名とハッシュ化されたパスワードを含むフラットファイルです。htpasswd ユーティリティーを使用して、このファイルを作成できます。
実稼働環境では、OpenShift Container Platform で htpasswd 認証を使用しないでください。htpasswd 認証は開発環境でのみ使用してください。
7.1.3. htpasswd ファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
htpasswd ファイルの作成方法は、次のいずれかのセクションを参照してください。
7.1.3.1. Linux を使用した htpasswd ファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
htpasswd アイデンティティープロバイダーを使用するには、htpasswd を使用してクラスターのユーザー名およびパスワードを含むフラットファイルを生成する必要があります。
前提条件
-
htpasswdユーティリティーへのアクセスがあること。Red Hat Enterprise Linux では、これはhttpd-toolsパッケージをインストールして利用できます。
手順
ユーザー名およびハッシュされたパスワードを含むフラットファイルを作成します。
htpasswd -c -B -b </path/to/users.htpasswd> <username> <password>
$ htpasswd -c -B -b </path/to/users.htpasswd> <username> <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドにより、ハッシュされたバージョンのパスワードが生成されます。
以下に例を示します。
htpasswd -c -B -b users.htpasswd <username> <password>
$ htpasswd -c -B -b users.htpasswd <username> <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Adding password for user user1
Adding password for user user1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルに対する認証情報の追加またはその更新を継続します。
htpasswd -B -b </path/to/users.htpasswd> <user_name> <password>
$ htpasswd -B -b </path/to/users.htpasswd> <user_name> <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.3.2. Windows を使用した htpasswd ファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
htpasswd アイデンティティープロバイダーを使用するには、htpasswd を使用してクラスターのユーザー名およびパスワードを含むフラットファイルを生成する必要があります。
前提条件
-
htpasswd.exeへのアクセスがあること。このファイルは、数多くの Apache httpd ディストリビューションの\binディレクトリーに含まれます。
手順
ユーザー名およびハッシュされたパスワードを含むフラットファイルを作成します。
> htpasswd.exe -c -B -b <\path\to\users.htpasswd> <username> <password>
> htpasswd.exe -c -B -b <\path\to\users.htpasswd> <username> <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドにより、ハッシュされたバージョンのパスワードが生成されます。
以下に例を示します。
> htpasswd.exe -c -B -b users.htpasswd <username> <password>
> htpasswd.exe -c -B -b users.htpasswd <username> <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Adding password for user user1
Adding password for user user1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルに対する認証情報の追加またはその更新を継続します。
> htpasswd.exe -b <\path\to\users.htpasswd> <username> <password>
> htpasswd.exe -b <\path\to\users.htpasswd> <username> <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.4. htpasswd シークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
htpasswd アイデンティティープロバイダーを使用するには、htpasswd ユーザーファイルが含まれるシークレットを定義する必要があります。
前提条件
- htpasswd ファイルを作成します。
手順
htpasswd ユーザーファイルが含まれる
Secretオブジェクトを作成します。oc create secret generic htpass-secret --from-file=htpasswd=<path_to_users.htpasswd> -n openshift-config
$ oc create secret generic htpass-secret --from-file=htpasswd=<path_to_users.htpasswd> -n openshift-config1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 上記のコマンドが示すように、
--from-file引数に関するユーザーファイルを含むシークレットキーにはhtpasswdという名前を指定する必要があります。
ヒントまたは、以下の YAML を適用してシークレットを作成できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.5. htpasswd CR のサンプル リンクのコピーリンクがクリップボードにコピーされました!
以下のカスタムリソース (CR) は、htpasswd アイデンティティープロバイダーのパラメーターおよび許可される値を示します。
htpasswd CR
7.1.6. アイデンティティープロバイダーのクラスターへの追加 リンクのコピーリンクがクリップボードにコピーされました!
クラスターのインストール後に、アイデンティティープロバイダーをそのクラスターに追加し、ユーザーの認証を実行できるようにします。
前提条件
- OpenShift Container Platform クラスターを作成します。
- アイデンティティープロバイダーのカスタムリソース (CR) を作成します。
- 管理者としてログインしている必要があります。
手順
定義された CR を適用します。
oc apply -f </path/to/CR>
$ oc apply -f </path/to/CR>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記CR が存在しない場合、
oc applyは新規 CR を作成し、さらに以下の警告をトリガーする可能性があります。Warning: oc apply should be used on resources created by either oc create --save-config or oc applyこの場合は、この警告を無視しても問題ありません。アイデンティティープロバイダーのユーザーとしてクラスターにログインし、プロンプトが出されたらパスワードを入力します。
oc login -u <username>
$ oc login -u <username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーが正常にログインされていることを確認し、ユーザー名を表示します。
oc whoami
$ oc whoamiCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.7. htpasswd アイデンティティープロバイダーの更新 リンクのコピーリンクがクリップボードにコピーされました!
既存の htpasswd アイデンティティープロバイダーにユーザーを追加したり、既存の htpasswd アイデンティティープロバイダーからユーザーを削除したりできます。
前提条件
-
htpasswd ユーザーファイルが含まれる
Secretオブジェクトを作成している。この手順では、htpass-secretという名前であることを前提としています。 -
htpasswd アイデンティティープロバイダーを設定している。この手順では、
my_htpasswd_providerという名前であることを前提としています。 -
htpasswdユーティリティーへのアクセスがある。Red Hat Enterprise Linux では、これはhttpd-toolsパッケージをインストールして利用できます。 - クラスター管理者の権限がある。
手順
htpasswd ファイルを
htpass-secretSecretオブジェクトから取得し、ファイルをお使いのファイルシステムに保存します。oc get secret htpass-secret -ojsonpath={.data.htpasswd} -n openshift-config | base64 --decode > users.htpasswd$ oc get secret htpass-secret -ojsonpath={.data.htpasswd} -n openshift-config | base64 --decode > users.htpasswdCopy to Clipboard Copied! Toggle word wrap Toggle overflow users.htpasswdファイルからユーザーを追加したり、削除したりします。新規ユーザーを追加するには、以下を実行します。
htpasswd -bB users.htpasswd <username> <password>
$ htpasswd -bB users.htpasswd <username> <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Adding password for user <username>
Adding password for user <username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 既存ユーザーを削除するには、以下を実行します。
htpasswd -D users.htpasswd <username>
$ htpasswd -D users.htpasswd <username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Deleting password for user <username>
Deleting password for user <username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
htpass-secretSecretオブジェクトを、users.htpasswdファイルの更新されたユーザーに置き換えます。oc create secret generic htpass-secret --from-file=htpasswd=users.htpasswd --dry-run=client -o yaml -n openshift-config | oc replace -f -
$ oc create secret generic htpass-secret --from-file=htpasswd=users.htpasswd --dry-run=client -o yaml -n openshift-config | oc replace -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヒントまたは、以下の YAML を適用してシークレットを置き換えることもできます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 複数のユーザーを削除した場合は、追加でユーザーごとに既存のリソースを削除する必要があります。
Userオブジェクトを削除します。oc delete user <username>
$ oc delete user <username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
user.user.openshift.io "<username>" deleted
user.user.openshift.io "<username>" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーを必ず削除してください。削除しない場合、ユーザーは期限切れでない限り、トークンを引き続き使用できます。
ユーザーの
Identityオブジェクトを削除します。oc delete identity my_htpasswd_provider:<username>
$ oc delete identity my_htpasswd_provider:<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
identity.user.openshift.io "my_htpasswd_provider:<username>" deleted
identity.user.openshift.io "my_htpasswd_provider:<username>" deletedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.8. Web コンソールを使用したアイデンティティープロバイダーの設定 リンクのコピーリンクがクリップボードにコピーされました!
CLI ではなく Web コンソールを使用してアイデンティティープロバイダー (IDP) を設定します。
前提条件
- クラスター管理者として Web コンソールにログインしている必要があります。
手順
-
Administration
Cluster Settings に移動します。 - Configuration タブで、OAuth をクリックします。
- Identity Providers セクションで、Add ドロップダウンメニューからアイデンティティープロバイダーを選択します。
既存の IDP を上書きすることなく、Web コンソールで複数の IDP を指定することができます。