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.第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
ユーティリティーを使用して、このファイルを作成できます。
7.1.3. htpasswd ファイルの作成
htpasswd ファイルの作成方法は、次のいずれかのセクションを参照してください。
7.1.3.1. Linux を使用した htpasswd ファイルの作成
htpasswd アイデンティティープロバイダーを使用するには、htpasswd
を使用してクラスターのユーザー名およびパスワードを含むフラットファイルを生成する必要があります。
前提条件
-
htpasswd
ユーティリティーへのアクセスがあること。Red Hat Enterprise Linux では、これはhttpd-tools
パッケージをインストールして利用できます。
手順
ユーザー名およびハッシュされたパスワードを含むフラットファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>
7.1.3.2. Windows を使用した htpasswd ファイルの作成
htpasswd アイデンティティープロバイダーを使用するには、htpasswd
を使用してクラスターのユーザー名およびパスワードを含むフラットファイルを生成する必要があります。
前提条件
-
htpasswd.exe
へのアクセスがあること。このファイルは、数多くの Apache httpd ディストリビューションの\bin
ディレクトリーに含まれます。
手順
ユーザー名およびハッシュされたパスワードを含むフラットファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow > 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>
7.1.4. htpasswd シークレットの作成
htpasswd アイデンティティープロバイダーを使用するには、htpasswd ユーザーファイルが含まれるシークレットを定義する必要があります。
前提条件
- htpasswd ファイルを作成します。
手順
htpasswd ユーザーファイルが含まれる
Secret
オブジェクトを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 - 1
- 上記のコマンドが示すように、
--from-file
引数についてのユーザーファイルを含むシークレットキーにはhtpasswd
という名前を指定する必要があります。
ヒントまたは、以下の YAML を適用してシークレットを作成できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: Secret metadata: name: htpass-secret namespace: openshift-config type: Opaque data: htpasswd: <base64_encoded_htpasswd_file_contents>
apiVersion: v1 kind: Secret metadata: name: htpass-secret namespace: openshift-config type: Opaque data: htpasswd: <base64_encoded_htpasswd_file_contents>
7.1.5. htpasswd CR のサンプル
以下のカスタムリソース (CR) は、htpasswd アイデンティティープロバイダーのパラメーターおよび許可される値を示します。
htpasswd CR
apiVersion: config.openshift.io/v1 kind: OAuth metadata: name: cluster spec: identityProviders: - name: my_htpasswd_provider mappingMethod: claim type: HTPasswd htpasswd: fileData: name: htpass-secret
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
name: cluster
spec:
identityProviders:
- name: my_htpasswd_provider
mappingMethod: claim
type: HTPasswd
htpasswd:
fileData:
name: htpass-secret
関連情報
-
すべてのアイデンティティープロバイダーに共通するパラメーターの詳細は、アイデンティティープロバイダーのパラメーター (
mappingMethod
など) について参照してください。
7.1.6. アイデンティティープロバイダーのクラスターへの追加
クラスターのインストール後に、アイデンティティープロバイダーをそのクラスターに追加し、ユーザーの認証を実行できるようにします。
前提条件
- OpenShift Container Platform クラスターを作成します。
- アイデンティティープロバイダーのカスタムリソース (CR) を作成します。
- 管理者としてログインしている必要があります。
手順
定義された CR を適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f </path/to/CR>
$ oc apply -f </path/to/CR>
注記CR が存在しない場合、
oc apply
は新規 CR を作成し、さらに以下の警告をトリガーする可能性があります。Warning: oc apply should be used on resources created by either oc create --save-config or oc apply
この場合は、この警告を無視しても問題ありません。アイデンティティープロバイダーのユーザーとしてクラスターにログインし、プロンプトが出されたらパスワードを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc login -u <username>
$ oc login -u <username>
ユーザーが正常にログインされていることを確認し、ユーザー名を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc whoami
$ oc whoami
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
オブジェクトから取得し、ファイルをお使いのファイルシステムに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
users.htpasswd
ファイルからユーザーを追加したり、削除したりします。新規ユーザーを追加するには、以下を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>
htpass-secret
Secret
オブジェクトを、users.htpasswd
ファイルの更新されたユーザーに置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 -
ヒントまたは、以下の YAML を適用して Operator を置き換えることもできます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: Secret metadata: name: htpass-secret namespace: openshift-config type: Opaque data: htpasswd: <base64_encoded_htpasswd_file_contents>
apiVersion: v1 kind: Secret metadata: name: htpass-secret namespace: openshift-config type: Opaque data: htpasswd: <base64_encoded_htpasswd_file_contents>
複数のユーザーを削除した場合は、追加でユーザーごとに既存のリソースを削除する必要があります。
User
オブジェクトを削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
ユーザーを必ず削除してください。削除しない場合、ユーザーは期限切れでない限り、トークンを引き続き使用できます。
ユーザーの
Identity
オブジェクトを削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
7.1.8. Web コンソールを使用したアイデンティティープロバイダーの設定
CLI ではなく Web コンソールを使用してアイデンティティープロバイダー (IDP) を設定します。
前提条件
- クラスター管理者として Web コンソールにログインしている必要があります。
手順
-
Administration
Cluster Settings に移動します。 - Configuration タブで、OAuth をクリックします。
- Identity Providers セクションで、Add ドロップダウンメニューからアイデンティティープロバイダーを選択します。
既存の IDP を上書きすることなく、Web コンソールで複数の IDP を指定することができます。