OpenShift4でのユーザー追加方法(HTPasswdの場合)
『IT自動化の力でビジネス加速を全ての企業に』
”IT自動化の専門会社”、リアルグローブ・オートメーティッド(RGA)の技術ブログ編集部の水谷です。本日もRGAの技師がまとめた技術情報を読者の皆様にお届けしていきます!
RGAでは Red Hat社が提供する、エンタープライズ向けコンテナプラットフォーム製品「OpenShift 」を利用したインフラ基盤環境の構築支援やコンテナアプリケーションの開発支援を提供しています。
GUIで各種操作が行え、コンテナ運用に関する機能が充実しているOpenShiftなのですが、今回はOpenShiftを活用していく上での大切な作業の1つであるユーザー登録について、その手順をまとめた記事をお送りしたいと思います。
――――――――――――――――――――――――――――――――――
OpenShiftを使っていて、手間がかかる作業の1つに、ユーザー登録がある。単純にUserリソースを作るだけではなく、アイデンティティプロバイダーの設定やOAuthリソースの設定などが必要となる。利用できるアイデンティティプロバイダーはこのリストのように多岐にわたるのだが、今回はたまたまHTPasswdを使う機会があったため、HTPasswdをアイデンティティプロバイダーとして使ったときのユーザー登録の手順をまとめた。
OpenShiftでのユーザー作成・削除手順
ユーザーの作成・削除は以下のステップで行う。
1. HTPasswdファイルを作業端末上で作成
2. HTPasswdファイルをsecretとして openshift-config(namespace) に登録
3. OAuth(カスタムリソース)を編集
4. (必要であれば)cluster-admin 権限を付与
では、それぞれのステップを見ていこう。
HTPasswdファイルを作成
まずは、HTPasswdファイルの作成から。HTPasswdファイルを新規作成するには、以下のコマンドを実行する。
$ htpasswd -c -B -b </path/to/users.htpasswd> <user_name> <password>
e.g.
$ htpasswd -c -B -b ./example.htpasswd aoshima Passw0rd
既にHTPasswdファイルが存在し、そこにユーザーを追加する場合は、以下のコマンドを実行する。
$ htpasswd -b </path/to/users.htpasswd> <user_name> <password>
HTPasswdファイルをSecretとしてopenshift-configに登録
続いて、htpasswdファイルの内容をsecretとして登録。これには、以下のコマンドを実行する。
$ oc create secret generic <secret-name> --from-file=htpasswd=</path/to/users.htpasswd> -n openshift-config
e.g.
$ oc create secret generic example-secret --from-file=htpasswd=./example.htpasswd -n openshift-config
OAuthリソースを編集
そして、OAuth というカスタムリソースにHTPasswdの設定を追加(or 編集)する。
OAuth の現在の設定は、CUIなら oc get oauth 、GUIならAdministrator用のコンソール画面の、Administration > Cluster Settings > Global Configuration > OAuth で確認することができる。
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
name: cluster
spec:
identityProviders:
- name: my_htpasswd_provide
mappingMethod: claim
type: HTPasswd
htpasswd:
fileData:
name: <secret-name>
以上でユーザー登録の作業が完了する。
なお、以下のようにしてプロバイダーを複数追加することもできる。
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
name: cluster
spec:
identityProviders:
- name: htpasswd_provider
mappingMethod: claim
type: HTPasswd
htpasswd:
fileData:
name: htpasswd-secret
- name: my_htpasswd_provider
type: HTPasswd
mappingMethod: claim
htpasswd:
fileData:
name: example-secret
複数のプロバイダーを追加すると、Webコンソールのログイン画面では、以下のようにアイデンティティープロバイダーを選択してから認証情報を入力することになる。
(必要であれば)cluster-admin 権限の付与
最後に、必要があれば新規作成したユーザーにクラスターの管理者権限を付与する。これは次のコマンドで実現できる。
(内部的には `cluster-admin`というClusterRoleリソースを新規ユーザーに紐付けるような ClusterRoleBindingリソースの作成を行っている。)
$ oc adm policy add-cluster-role-to-user cluster-admin <ユーザー名>
e.g.
$ oc adm policy add-cluster-role-to-user cluster-admin aoshima
補足情報
・Administrator用のコンソール画面の、Administration > Cluster Settings > Global Configuration > OAuth で設定を確認することができる。
・oauth リソースから特定のアイデンティティープロバイダー情報を削除すれば、そのプロバイダーに認証情報が登録しているユーザーはログインができなくなる。(すでにログイン済みであればログアウトするまでCLIでもGUIでも使い続けられる。)しかし、ユーザー情報が削除されるわけではない。 oc get user の結果には表示されるし、role情報なども削除されない。アイデンティティープロバイダー設定を戻せば、以前の設定内容のまま(cluster-adminユーザーはcluster-adminユーザーのまま)使うことができる。
・これらのステップを繰り返し実行するのは手間がかかるので、ユーザー管理用のAnsible Roleを作った(https://github.com/aoshimash/ocp_users)。
執筆者:株式会社リアルグローブ・オートメーティッド技師 青島――――――――――――――――――――――――――――――――――
執筆者プロフィール:青島 秀治
株式会社リアルグローブ・オートメーティッド 技師
九州大学大学院理学府博士課程中退。
大学院では理論天文学が専門。数値計算プログラム開発の傍ら、研究用の計算機郡や学内システムの開発・運用を経験。
2019年よりAnsibleを用いた運用作業自動化や自社サービスのKubernetes移行、OpenShiftのインフラCI実装などの業務に従事。
【ご案内】
ITシステム開発やITインフラ運用の効率化、高速化、品質向上、その他、情シス部門の働き方改革など、IT自動化導入がもたらすメリットは様々ございます。
IT業務の自動化にご興味・ご関心ございましたら、まずは一度、IT自動化の専門家リアルグローブ・オートメーティッド(RGA)にご相談ください!
お問合せは以下の窓口までお願いいたします。
【お問い合わせ窓口】
株式会社リアルグローブ・オートメーティッド
代表窓口:info@rg-automated.jp
URL: https://rg-automated.jp