OpenShiftの運用_ユーザ管理_IDP_クラスタローカル設定HTPasswd

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

こんにちはサイオステクノロジーの前田です。

OpenShiftを複数人で利用する環境では、ユーザー管理が必要です。KubernetesにあるサービスアカウントではなくユーザーというOpenShift独自機能があります。OpenShiftのブラウザ操作時の利用や、クライアント操作時の認証として利用します。初期構築ではユーザ管理機能のIDPはなく、IDPといわれても聞きなれなくてどうしたらいいか悩んでしまいます。全体を話すとさらに混乱が進むことも多いのでわかりやすさを重視していきます。

OpenShiftのユーザー管理

OpenShiftのユーザー管理と一口に言っても色々考えたり理解しないといけないことがあるため、初期知識についてまとめます。

OpenShift(Kubernetes含む) ユーザーについて

UserはOpenShiftクラスタにログインするための認証情報を持つ人間のユーザーであり、ServiceAccountはOpenShiftクラスタ内のアプリケーションコンテナがOpenShiftのAPIサーバーに対してリクエストを送信するための認証情報を持つアカウントであります。下記に比較した表を記載します。

 

リソース名

ServiceAccount

User
機能の有無Kubernetes、OpenShift両方に存在OpenShiftのみの機能
利用用途

APIサーバに対してリクエストを送信するアカウント

podをデプロイするときの認証情報や設定で利用

ユーザーが操作、GUIやクラスターへの設定等で利用
アカウント or ユーザー 管理元OCPクラスタIDP
備考プロジェクト作成時に自動生成されるアカウントあり初期構築時にkubeadmin User作成

 

OpenShift ユーザーにかかわる用語

OpenShiftのUserに関する用語について説明します。

IDPOAuthGroupUserRoleRolebinding
概要ユーザーのアイデンティティを認証するためのシステムOpenShiftのIDPを設定するリソースOpenShiftのユーザーをグループ分けするための機能OpenShiftにログインするための認証情報を持つユーザーOpenShiftのユーザーがアクセス可能なリソースを制御するための機能RoleとUser/Groupを関連付け、アクセス制御を設定する機能
目的ユーザー認証OpenShiftのユーザー認証を設定OpenShiftユーザーのグループ分けOpenShiftにログインするための認証リソースへのアクセス権限を制御RoleとUser/Groupを関連付け、アクセス制御を設定
特徴外部システムにユーザー認証を委託OpenShiftの認証設定を行う複数のユーザーをグループ化OpenShiftクラスターにログインするために必要リソースへのアクセス権限を指定するRoleとUser/Groupを関連付けることで、アクセス制御を簡単に設定可能
Active Directory、LDAP、RHSSOActive Directory、LDAP、RHSSOの設定Developers、OperatorsJohn、Jane、BobAdmin、Edit、ViewAdminRoleにJohnを割り当てる

IDPだけはOpenShiftのリソースではなく、OAuthに設定するパラメータの一つになります。IDPはOpenID Connectで連携できるため、既存のユーザ管理と連携して利用することが可能です。

OpenShift 簡単なIDPの設定

実際に設定してみましょう。HTPasswd形式のIDPを設定していきます。HTPasswdはwebのベーシック認証のような形で、htpasswdの内容をSecretとしてOpenShiftに保存します。ユーザ情報とパスワードはそのSeceret内容を利用してログインを行います。

設定の流れ

  1. htpasswdコマンドを利用してユーザとパスワード情報を作成
  2. OpenShiftのOAuthにHTPasswdのIDP連携設定を追加
  3. 自分専用のプロジェクトを作成 (もしくは権限追加)
  • 環境情報
    • OpenShift環境
      • OCP 4.12
      • AWS基盤を利用
    • クライアント端末
      • Linux
      • htpasswardインストール済み

 

htpasswardコマンドがない場合は、下記等でインストールしてください

yum install httpd-tools

初期設定

クライアント端末(linux)とWebブラウザを利用して設定していきます。CLI操作で設定する場合はリンクを参考にしてください。

■1. ユーザ情報作成

ユーザ情報を作成します。ユーザをtestパスワードをtest123で作成します。今回はわかりやすいように標準出力するモードで設定します。OpenShiftではセキュリティが高いBオプションが必要になります。

htpasswd -n -bB  test test123
結果
test:$2y$05$G8RtGVeCnmH5LYZfDvi96.VhX.2SQ./kmpaJBW96AJGgcHaB5fxnW

    上記内容が、認証情報になりOpenShiftのIDP設定に利用します。複数ある場合等はファイルに作成して登録します。

    ■2. IDPの設定

    OpenShiftの管理コンソールにcluster-adminロールの権限を持つユーザでログインして、操作していきます。

    OpenShiftにログインしてAdministoration → Cluster Settings を選択します.

    設定 → OAuthを選択します。

    アイデンティティ―プロバイダーの 『追加』を選択後、HTpasswdを選択します。

    Htpasswdファイルの下の記入欄に先ほど作成した認証情報の内容を貼り付けます。

    追加を選択して、OCPクラスタに反映されるまで少し待ちます。

    ■補足 設定反映の待ち時間の確認

    反映される間の待ち時間に設定を確認するためYAMLタブを選択します。

    spec.identityProviders.htpasswd.fileData.nameに書かれている内容はopenshift-configプロジェクト内のsecretになります。パスワードやユーザ情報を変更するときはこちらの内容を編集してください。

    ■3. 作成ユーザでログイン

    画面右上からログアウトします。ログインするときに二つの選択肢がでます。『htpasswd』を選択したあと、設定するユーザ名『test』とパスワードは『test123』と入力します。

    権限が違うのでログイン画面が少し違います。スキップを選択します。

    『新規プロジェクトを作成します』を選択します。名前にtestprojectと入力して、作成を選択します。

    project(namespace)の開発補助画面が表示されます。

    この画面が出たら、後は開発者に渡したりサンプルデプロイ等を行いましょう。

    ■4. 権限追加

    権限を設定していきます。プロジェクトを作成したら作成した人にプロジェクトのadmin権限が付与されます。初期構築の設定のkubeadminと同等の権限(cluster-admin)を設定していきます。

    確認コマンド

    oc get rolebindings.authorization.openshift.io

    上記でtestprojectには初期状態で複数のroleの設定がされていることがわかります。

    権限を追加するたため下記コマンド実施します。

    oc adm policy add-cluster-role-to-user cluster-admin test

    先ほどした確認コマンドには表示されません。プロジェクトへのロールバインディングとクラスターのロールバインディングは違うので、表示されないので驚きます。そんなもんだと考えてください。CLIでは醜いのでGUIを利用して確認していきます。

    管理コンソールに再度ログインします。画面左上の開発者向け表示を選択し、管理者向け表示を選択します。画面が変わり管理者向け表示が出るためユーザ管理 → Userの順で選択します。

    プロジェクトにadmin権限とクラスター全体へcluster-admin権限が付与されていることを確認してください。

    最後に

    OpenShiftのIDP設定は初期設定時に悩む項目の一つです。初期設定のDay1構築終わってほっとしたときに『ユーザー管理機能ついてないの!!』っと驚きます。商用設定の場合はAzureADとの連携やRedHatSSOとの連携等を考える必要があります。本記事で全部を記載すると頭がパンクしてしまうため簡単なIDPの設定と基本的な権限設定について記載しました。本記事がOpenShift導入時の運用負担を減らす一助になれば幸いです。

    アバター画像
    About 前田周哉 29 Articles
    血液はみかん色。インフラを中心に対応、認証、DB、API、コンテナ基盤,クラウド、iotなど複数のシステムインフラを対応するサーバエンジニア。現在はOpenShift中心にkubernetesに関連する対応が中心。
    ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

    役に立った 役に立たなかった

    0人がこの投稿は役に立ったと言っています。


    ご覧いただきありがとうございます。
    ブログの最新情報はSNSでも発信しております。
    ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



    >> 雑誌等の執筆依頼を受付しております。
       ご希望の方はお気軽にお問い合わせください!

    Be the first to comment

    Leave a Reply

    Your email address will not be published.


    *


    質問はこちら 閉じる