第7章 アイデンティティープロバイダーの設定
7.1. HTPasswd アイデンティティープロバイダーの設定
7.1.1. OpenShift Container Platform のアイデンティティープロバイダーについて
デフォルトでは、kubeadmin
ユーザーのみがクラスターに存在します。アイデンティティープロバイダーを指定するには、アイデンティティープロバイダーを記述し、これをクラスターに追加するカスタムリソースを作成する必要があります。
/
、:
、および %
を含む OpenShift Container Platform ユーザー名はサポートされません。
HTPasswd アイデンティティープロバイダーを定義するには、以下の手順を実行する必要があります。
-
ユーザーおよびパスワード情報を保存するために
htpasswd
ファイルを作成します。Linux および Windows 用の手順が説明されます。 -
htpasswd
ファイルを表すために OpenShift Container Platform シークレットを作成 します 。 - HTPasswd アイデンティティープロバイダーリソースを定義します。
- リソースをデフォルトの OAuth 設定に適用します 。
7.1.2. Linux を使用した HTPasswd ファイルの作成
HTPasswd アイデンティティープロバイダーを使用するには、htpasswd
を使用してクラスターのユーザー名およびパスワードを含むフラットファイルを生成する必要があります。
前提条件
-
htpasswd
ユーティリティーへのアクセスがあること。Red Hat Enterprise Linux では、これはhttpd-tools
パッケージをインストールして利用できます。
手順
ユーザー名およびハッシュされたパスワードを含むフラットファイルを作成します。
$ htpasswd -c -B -b </path/to/users.htpasswd> <user_name> <password>
コマンドにより、ハッシュされたバージョンのパスワードが生成されます。
以下に例を示します。
$ htpasswd -c -B -b users.htpasswd user1 MyPassword!
出力例
Adding password for user user1
ファイルに対する認証情報の追加またはその更新を継続します。
$ htpasswd -B -b </path/to/users.htpasswd> <user_name> <password>
7.1.3. Windows を使用した HTPasswd ファイルの作成
HTPasswd アイデンティティープロバイダーを使用するには、htpasswd
を使用してクラスターのユーザー名およびパスワードを含むフラットファイルを生成する必要があります。
前提条件
-
htpasswd.exe
へのアクセスがあること。このファイルは、数多くの Apache httpd ディストリビューションの\bin
ディレクトリーに含まれます。
手順
ユーザー名およびハッシュされたパスワードを含むフラットファイルを作成します。
> htpasswd.exe -c -B -b <\path\to\users.htpasswd> <user_name> <password>
コマンドにより、ハッシュされたバージョンのパスワードが生成されます。
以下に例を示します。
> htpasswd.exe -c -B -b users.htpasswd user1 MyPassword!
出力例
Adding password for user user1
ファイルに対する認証情報の追加またはその更新を継続します。
> htpasswd.exe -b <\path\to\users.htpasswd> <user_name> <password>
7.1.4. HTPasswd シークレットの作成
HTPasswd アイデンティティープロバイダーを使用するには、HTPasswd ユーザーファイルが含まれるシークレットを定義する必要があります。
前提条件
- HTPasswd ファイルを作成します。
手順
HTPasswd ユーザーファイルが含まれる OpenShift Container Platform
Secret
オブジェクトを作成します。$ oc create secret generic htpass-secret --from-file=htpasswd=</path/to/users.htpasswd> -n openshift-config
注記上記のコマンドが示すように、
--from-file
引数についてのユーザーファイルを含むシークレットキーにはhtpasswd
という名前を指定する必要があります。
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 -
複数のユーザーを削除した場合は、追加でユーザーごとに既存のリソースを削除する必要があります。
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 に移動します。 - Global Configuration タブで、OAuth をクリックします。
- Identity Providers セクションで、Add ドロップダウンメニューからアイデンティティープロバイダーを選択します。
既存の IDP を上書きすることなく、Web コンソールで複数の IDP を指定することができます。