OpenShiftの運用_ユーザ管理_OpenIdconnect_RHSSO連携

こんにちはサイオステクノロジーの前田です。
OpenShiftはOpenIDConnectで連携してユーザ管理する方法があります。今回はOpenShiftの中でRed Hat Single Sign-On(RHSSO)を利用して連携する方法を記載します。

OpenShiftのユーザー管理_IDP

ユーザ管理を行う時に、エクセルのような表計算やtextファイルで扱うこともあります。しかしパスワードやセキュリティを考慮すると、2023年現時点では基本的にはアプリケーション(Azure AD等)でユーザを管理してパスワード情報は利用者しかわからないような形式が多いです。OpenShiftでHtpasswd形式でユーザを作れますが、secretというファイル形式に近い管理のため、複数の立場のユーザが利用する場合は別の方法を選びたいです。

本記事では、OpenShiftのユーザー管理で利用するIDPについて説明します。

GoogleやMicrosoft等のアカウント等でサービス提供しているIDPはIdentify Providerの略称で、ユーザーの認証情報を管理するサービスです. 

IDPに関連する用語

IDPに関してはよく混合される用語としては、SSO(シングルサインオン)、OIDC(オープンアイディコネクト)、SAMLがあります。区別をつけず全部まとめてSSOとしている方もおります。利用上は大きな問題にならないですが、今回は少し深掘りして明確にしていきます。

まずはIDPとSSOの関係性の絵になります。

ユーザー ──> SP ──> IDP
  ^        |    |    |
  |        |    |    |
  └───────<────<
  • SPはサービスプロバイダー、ユーザが利用したいサービス
  • IDPはユーザーの認証情報を提供するサービス
  • SSOはこのように一度IDPにログインするだけで、複数のSPにアクセスできる仕組み

 

SSOの仕組みをつくるためにIDPを利用して、IDPとアプリケーションを関連付けるためにOIDCを利用します。そのためOIDCを利用することがSSOの仕組みを作ることになり、省略して話している方がおられます。

 

OIDCは、IDPとSSOを実現するための認証プロトコルです。類似なものとしてSAMLが存在します。差異としては下記になります。

項目 OIDC SAML
ベースとなるプロトコル OAuth 2.0 XML
トークンの形式 JSON XML
トークンの種類 IDトークンとアクセストークン アサーション
ユーザー情報の取得方法 userinfoエンドポイントにアクセストークンを送る アサーションに含まれる
適用するシナリオ モバイルやWebアプリケーションなどのAPIベースのサービス エンタープライズやWebブラウザベースのサービス

 

RHSSOについて

RHSSOとはRed Hat Single Sign-Onの略称です。Keycloakをもとにしており、シングルサインオン機能を提供します。3scaleで連携してOpenID Connectを実装する目的や、OpenShiftのユーザ管理として利用します。RHSSOは他のIDP(AzureAD)と連携することも可能です

OpenShift環境にインストール可能です。OpenShiftのサブスクリプションではRHSSOのImageに関しての保証があります。OpenShiftではOperatorでインストールする方法とテンプレートでインストールする方法の2種類が存在します。

OpenShift 簡易RHSSO_IDPの設定

RHSSOを利用したユーザ管理の設定を行います。RHSSOのインストール方法はいくつかあります。一番簡単な方法である開発者ポータルのテンプレート機能を利用してデプロイします。

  • 環境情報
    • OpenShift環境
      • OCP 4.12
      • AWS基盤を利用
      • 外部ネットワーク接続可能
      • 証明書設定済み(Let’s Encrypt)

※証明書がない場合はRHSSOのデプロイと操作はできますが、OpenShiftとの連携は成功しません。

RHSSOデプロイ

RHSSOをデプロイするためOpenShiftにログインして開発者向け表示に移動
まずは新規プロジェクトを作成しますを選択(testssoと名前に設定)
すべてのサービス を選択し、キーワードのフィルタでssoと入力します。コンテナが再起動してもデータが保存する目的で、Red Hat Single Sign-On 7.5 on OpenJDK + PostgreSQL(Persistent)のタイプを選択
インストールを進めるため、Templateのインスタンス化を選択
複数のパラメータが表示されますが、今回は変更せずに 作成 を選択
デプロイが完了(それぞれのリングが青色)するまで待機
※5分程度しても完全な青色にならない場合やURLアクセスしてもアクセスできない場合はエラーを確認
デプロイが完了するまで、RHSSOにログインするためのユーザ情報を確認
ssoを選択して、画面右に情報表示
リソースを選択し該当podを選択
環境を選択
ログインするためのSSO_ADMIN_USERNAMEとSSO_ADMIN_PASSWORDの情報を取得
 
ssoの右上の矢印にアクセスしてwebページにアクセス
rhssoの管理画面にアクセスして、 Adminconsoleを選択してログイン画面に先ほどの認証情報を入力してログイン

 

ログインできたらRHSSOのデプロイ完了となります。

RHSSO レルム設定

レルムの設定をします。この設定を完了することでOpenShiftに情報連携できるようになります。
画面左上(Master)の部分から新規レルムを作成
 
Nameにrhssotestを記載してCreateを選択
clientsを選択後、Createを選択
clientt IDにssoclient 記載してSaveを選択
Access Typeで confidentialを選択
Valid Redirect URIs を https://* と設定
Saveを選択
Credentialsタブを選択しSecretの値を取得
■ログインユーザを作成
画面左のUsersを選択後、Add userを選択
Usernameに testocpuserと入力します。その後Saveを選択
Credentialsタブを選択して、Passwordを入力 例 test123
temporaryをOFFであることを確認してください。そしてSet Passwordを選択
こちらでRHSSO側の設定が完了となります。

OpenShiftとRHSSOの連携 IDP設定

OpenShiftとRHSSOを連携していきましょう。
OpenShiftにcluster-admin権限をもつユーザでログインします。
管理→クラスター設定→設定→OAuthの順に選択
アイデンティティープロバイダーの追加でOpenIDconnect選択
設定値をそれぞれ入力
  • 名前に rhssoid (任意の値)
  • クライアントIDに  ssoclientと入力
  • クライアントシークレットに先ほど取得したCredentialsのSecret情報を入力
  • 発行側のURLに SSOの URL/auth/realms/レルム名 の形で入力 
    • 例) https://sso-testsso.apps.ocp410test2.xxxxxxx.xx.yyyyyyy.sios.jp/auth/realms/rhssotest
  • 追加を選択

※SSOのアクセスが証明書エラーの場合はOpenShiftのCA証明書を設定
設定が追加されていることを確認
※反映まで時間がかかる場合(10分以上)はClusterOperator画面でエラーが出ていないことを確認
設定確認として管理 → クラスター設定 → ClusterOperator → authenticationの内容でエラーが出てないことを確認
ログアウトして連携設定を確認

追加設定表示のrhssoidを選択
Usernameとパスワードを入力
開発者ポータルにログイン

RHSSOとOpenShiftが連携して、RHSSSOでユーザ管理可能になりました。
OCPのユーザ権限(role)に設定するのは、RHSSOではなくOCPから設定変更を行ってください。

最後に

RHSSOと連携してOpenShiftにユーザ管理機能を追加しました。他のIDPとも連携可能ですが、今回は一番簡単なRHSSOを使用した連携を紹介しました。ユーザ管理もOpenShift初心者の躓きポイントの一つとなっています。本記事が読者の一助となれば幸いです。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です