見出し画像

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コンソールのログイン画面では、以下のようにアイデンティティープロバイダーを選択してから認証情報を入力することになる。

画像1

(必要であれば)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

画像2