LoginSignup
0
0

More than 1 year has passed since last update.

Openshiftでユーザ作成及び削除を実施してみた

Posted at

はじめに

職場でOpenshift構築後の結合テストを経験することがありました。
初めての経験だったので、今回の経験を備忘録がてらまとめます。
記事のボリューム的にOpenshiftというよりも、認証と認可の話になっておりますが、ご容赦ください。

構成

Openshiftコンソールへのアクセスは
1:踏み台サーバにRDP
2:URLをブラウザに打ち込んでログイン

CLIでのOpenshiftへのアクセスは
1:踏み台サーバにRDP
2:踏み台サーバから作業用サーバにSSH

前提知識

htpasswdとは?

ホームページなどで、以下のようなポップアップが現れて、特定の人にしかアクセスできないページがあるとします。

まずこのような認証をBasic認証といいます。
他にもDigest認証Form認証というものもありますが、今回は深掘りしません。
以下のリンクで相違点についてわかりやすく説明されています。

今回実装したいのはBasic認証です。
そのために必要になるのが、「.htaccess」と「.htpasswd」いうファイルです。
ざっくり説明すると以下のようになります
.htaccess:認証パターンや(今回はBasic).htpasswdファイルの場所を指定する
.htpasswd:Basic認証のログイン情報(IDとパスワード)を記載するファイルです

認証と認可とは?

言葉の定義としては、以下になります。

認証(Authentication)
相手が誰であるかを確認することで、以下の三要素に分類されます。

Inherence factor:生体認証など
Possession factor:身分証など
Knowledge factor:パスワードなど

イメージとしては、証明書の確認です。
なので、認証されたからといって何かが起きるわけではありません。

認可(Authorization)
特定の条件に対して、リソースアクセス権限を与えることです。
イメージとしては、切符の発行です。
そのため、切符が発行されたとしても、持ち主が誰であるか関係ありません。
また、仮に誰かから切符を譲り受けたとしても、電車になることはできますね。

注意点
券売機の例に例えると、

1:券売機で、本人確認【認証】
2:券売機で、チケットを発行【認可】
3:係員が、チケットを確認して入場を許可する

となるので、あくまで係員の方がチケットを確認しているのは、認可によって与えられた権利を検証しているだけです
今回券売機に例えたように、現実世界では認証と認可がまとめて実施されることが多いです。

認証と認可はお気に入りなので、少し深掘りします。
オフィスで、一旦IDとパスワードが認証されると、様々なサービスにアクセスできるといったことがあるかと思います。
これにはSAML認証と呼ばれる認証プロセスが使用されています。
ネットワーク管理者などは、SAMLを利用して一元的にユーザー管理が可能です。

IdPとは?

上記SAML認証におけるクラウドサービスにアクセスするユーザの認証情報を保存、管理するサービスのことを指します

これに対してOAuthといった別の仕組みも存在します
わかりやすい例が有効なGoogleアカウントもつユーザが同じ資格情報を使用してさまざまなデータを活用できる。といったものです
つまり、OAuthではユーザ認証はGoogleに任せているということになりますね。

こちらの記事ではOAuthとAPIの関わりについて、より深く説明がされています

以下のリンクでSAMLとOAuthの違いについて説明されています。

作業概要

では今から本旨に移ります。
今回は構築されたOpenshift環境に対して、以下を結合テストの一部として実施しました。

・踏み台サーバからWEBコンソールにアドミンユーザでログインできるか
・踏み台サーバからCLIでOpenshiftにログインできるか
・プロジェクトの作成及び削除ができるか
・ユーザの作成及び削除ができるか

今回の記事ではユーザの作成及び削除ができるかにフォーカスしてまとめていきます

htpasswdファイルのSecret作成

以下コマンドでルートディレクトリ以下に、htpasswdファイルを作成します。

htpasswd -c -B -b ~/htpasswd admin hoge
Adding password for user admin

コマンドの意味の詳細はこちらのリンクを確認ください
今回は、ユーザで名がadminでパスワードがhogeというユーザを作成します。

作成されたhtpasswdファイルをcatコマンドで確認すると、エンコードされたユーザ名とパスワードが記載されています。

htpasswdファイルを格納したSecretを作成し、Openshiftに登録

※事前にOpenshiftにログインしておく必要がにあります

oc create secret generic myusers --from-file oc create secret generic htpass-secret --from-file=htpasswd=./users.htpasswd -n openshift-config

Basic認証は、htaccessとhtpasswdが対になって実現でます。
解釈としては、サーバ側にhtpasswdを登録するが良いかと思っています。
以下コマンドでopenshift-configの中にシークレット(IDとパスワード)が保存されていることが確認できます。

c get secrets -n openshift-config 
Identity Providerに今回作成したhtpasswdを追加

現在のOAuth設定コンソール画面の、Administration > Cluster Settings > Global Configuration > OAuth から確認することができます。
CLIからも確認→実施が可能ですが、今回はGUIで実施します。

1:作業用サーバから、htpasswdファイルを踏み台サーバに SSH SCPで転送
※権限の変更が必要になるかもしれません

2:Webコンソールに入り、 「管理」-「クラスター設定」-「OAuth」-「Identity Provider」-「Add」から[htpasswd]を選択し、保存されたusers.htpasswdをアップロード

3:Webコンソールから、「Identity Provider」に「htpasswd」が登録されていることを確認

ポリシーの設定

以下コマンドで、今回追加したユーザーにアドミンポリシーを追加

oc adm policy add-cluster-role-to-user cluster-admin <ユーザ名>
ログインの確認

CLI

oc login https://api.<clusterName>.<baseDomain>.local:6443 -u <ユーザ名>

GUI
現在ログインしているユーザからログアウトし、今回作成したユーザでログインする

以上で、ユーザの作成手順は終了です。
ユーザ削除としては、
・htpassに格納されているsecret情報を入手
・その編集(今回は削除)
・編集されたhtpasswdファイルを更新する

というステップで実行します。

$ oc get secret htpass-secret -o jsonpath={.data.htpasswd} -n openshift-config | base64 -d > users.htpasswd

$ htpasswd -D users.htpasswd <ユーザ名>

$ oc create secret generic htpass-secret --from-file=htpasswd=users.htpasswd --dry-run=client -o yaml -n openshift-config | oc replace -f -

$ oc delete user <ユーザ名>

$ oc delete identity htpasswd:<ユーザ名>

以上です。

参考

環境

確認取れ次第記載します

終わりに

今回はOpenshiftのユーザー作成を通じて、認証と認可について深堀することができました。
普段何気なく使用しているオフィスの認証も、仕組みを理解すると面白いですね。

今後とも、”とりあえず使用しているが、仕組みを理解していないもの”の深堀を続けていければと思っております。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0