こんにちはサイオステクノロジーの前田です。
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)
- OpenShift環境
※証明書がない場合はRHSSOのデプロイと操作はできますが、OpenShiftとの連携は成功しません。
RHSSOデプロイ
ログインできたらRHSSOのデプロイ完了となります。
RHSSO レルム設定
OpenShiftとRHSSOの連携 IDP設定
- 名前に rhssoid (任意の値)
- クライアントIDに ssoclientと入力
- クライアントシークレットに先ほど取得したCredentialsのSecret情報を入力
- 発行側のURLに SSOの URL/auth/realms/レルム名 の形で入力
- 例) https://sso-testsso.apps.ocp410test2.xxxxxxx.xx.yyyyyyy.sios.jp/auth/realms/rhssotest
- 追加を選択
最後に
RHSSOと連携してOpenShiftにユーザ管理機能を追加しました。他のIDPとも連携可能ですが、今回は一番簡単なRHSSOを使用した連携を紹介しました。ユーザ管理もOpenShift初心者の躓きポイントの一つとなっています。本記事が読者の一助となれば幸いです。