第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 user1
Copy 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 user1
Copy 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-config
1 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 whoami
Copy 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-secret
Secret
オブジェクトから取得し、ファイルをお使いのファイルシステムに保存します。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.htpasswd
Copy 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-secret
Secret
オブジェクトを、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>" deleted
Copy 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>" deleted
Copy 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 を指定することができます。