第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
パッケージをインストールして利用できます。
手順
ユーザー名およびハッシュされたパスワードを含むフラットファイルを作成します。
$ htpasswd -c -B -b </path/to/users.htpasswd> <username> <password>
コマンドにより、ハッシュされたバージョンのパスワードが生成されます。
以下に例を示します。
$ htpasswd -c -B -b users.htpasswd <username> <password>
出力例
Adding password for user user1
ファイルに対する認証情報の追加またはその更新を継続します。
$ htpasswd -B -b </path/to/users.htpasswd> <user_name> <password>
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 users.htpasswd <username> <password>
出力例
Adding password for user user1
ファイルに対する認証情報の追加またはその更新を継続します。
> htpasswd.exe -b <\path\to\users.htpasswd> <username> <password>
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 1
- 1
- 上記のコマンドが示すように、
--from-file
引数についてのユーザーファイルを含むシークレットキーにはhtpasswd
という名前を指定する必要があります。
ヒントまたは、以下の YAML を適用してシークレットを作成できます。
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 1 mappingMethod: claim 2 type: HTPasswd htpasswd: fileData: name: htpass-secret 3
関連情報
-
すべてのアイデンティティープロバイダーに共通するパラメーターの詳細は、アイデンティティープロバイダーのパラメーター (
mappingMethod
など) について参照してください。
7.1.6. アイデンティティープロバイダーのクラスターへの追加
クラスターのインストール後に、アイデンティティープロバイダーをそのクラスターに追加し、ユーザーの認証を実行できるようにします。
前提条件
- OpenShift Container Platform クラスターを作成します。
- アイデンティティープロバイダーのカスタムリソース (CR) を作成します。
- 管理者としてログインしている必要があります。
手順
定義された 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
この場合は、この警告を無視しても問題ありません。アイデンティティープロバイダーのユーザーとしてクラスターにログインし、プロンプトが出されたらパスワードを入力します。
$ oc login -u <username>
ユーザーが正常にログインされていることを確認し、ユーザー名を表示します。
$ 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
オブジェクトから取得し、ファイルをお使いのファイルシステムに保存します。$ oc get secret htpass-secret -ojsonpath={.data.htpasswd} -n openshift-config | base64 --decode > users.htpasswd
users.htpasswd
ファイルからユーザーを追加したり、削除したりします。新規ユーザーを追加するには、以下を実行します。
$ htpasswd -bB users.htpasswd <username> <password>
出力例
Adding password for user <username>
既存ユーザーを削除するには、以下を実行します。
$ htpasswd -D users.htpasswd <username>
出力例
Deleting password for user <username>
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 -
ヒントまたは、以下の YAML を適用して Operator を置き換えることもできます。
apiVersion: v1 kind: Secret metadata: name: htpass-secret namespace: openshift-config type: Opaque data: htpasswd: <base64_encoded_htpasswd_file_contents>
複数のユーザーを削除した場合は、追加でユーザーごとに既存のリソースを削除する必要があります。
User
オブジェクトを削除します。$ oc delete user <username>
出力例
user.user.openshift.io "<username>" deleted
ユーザーを必ず削除してください。削除しない場合、ユーザーは期限切れでない限り、トークンを引き続き使用できます。
ユーザーの
Identity
オブジェクトを削除します。$ oc delete identity my_htpasswd_provider:<username>
出力例
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 を指定することができます。