はじめに
OpenShiftでは、Basic認証やHTPasswd、OIDCなどを用いてログインすることが可能です。 また、OpenShiftでは、Operatorを利用して、keycloakをインストールし認証を行うことが可能となります。 ただ、今回は勉強も兼ねて専用のKeycloakサーバを構築しOICD認証を設定してみたいと思います。
前提
AWS上にOpenShiftとKeycloakサーバを構築していきます。 また、Keycloakではドメインを必要としますので、Route 53などでドメインを設定しておきましょう。
Keycloakをインストール
今回は、ECS(AmazonLinux2023)にKeycloakをインストールしていきたいと思いますので、最初にJavaをインストールしていきます。
# yum install java-21-amazon-corretto-devel
Javaがインストール出来たら、以下のサイトからkeycloakをダウンロードします。 https://github.com/keycloak/keycloak/releases
# curl -LO https://github.com/keycloak/keycloak/releases/download/26.4.1/keycloak-26.4.1.zip
# ls keycloak-26.4.1.zip
無事にダウンロード出来たらkeycloakを解凍します。
# unzip keycloak-26.4.1.zip Archive: keycloak-26.4.1.zip creating: keycloak-26.4.1/ creating: keycloak-26.4.1/conf/ creating: keycloak-26.4.1/themes/ creating: keycloak-26.4.1/bin/ creating: keycloak-26.4.1/bin/cli
Keycloakを起動する際に管理者ユーザを作成するため、環境変数にユーザ名とぱパスワードを登録しておきます。
export KEYCLOAK_ADMIN=<ユーザ名> export KEYCLOAK_ADMIN_PASSWORD=<パスワード>
KeycloakにアクセスするためにはHTTPS通信が必要となります(設定次第でHTTPも許可できます) 証明書が必要となりますので、今回はLetsEncryptを利用して証明 書を発行していきます。
証明書発行に必要なパッケージ取得します。
# yum install certbot※サーバには一時的で良いのでポート80からのアクセスを許可しておきましょう。
パッケージをインストールしたら証明書を発行していきます。
# certbot certonly --standalone -d <ドメイン名>Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): <適当なメールアドレス>
Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.5-February-24-2025.pdf. You must agree in order to register with the ACME server. Do you agree?
(Y)es/(N)o: Y
Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom.
(Y)es/(N)o: N Account registered. Requesting a certificate for <ドメイン名>
証明書が発行されたら、CA証明書をローカルにダウンロードしておきます。(OpenShift側でOIDC認証を設定する際に利用します。)
証明書を発行したら、いよいよKeycloakを起動します。
今回はdevモードで起動します。本番相当であれば、本番モードで起動してください。
bin/kc.sh start-dev --https-certificate-file=/etc/letsencrypt/live/<ドメイン名>/fullchain.pem --https-certificate-key-file=/etc/letsencrypt/live/<ドメイン名>/privkey.pem
Keycloakへのログイン
無事に起動したらkeycloakにログインします。
ログインする際は環境変数でしたユーザ名とパスワードを指定します。

無事にログイン出来ましたら、Manage realmsをクリックし、OpenShift用のレルムを作成していきます。

Manage realmsをクリックすると以下画面になりますので、Create realmをクリックします。

Create realm画面で、Realm nameにレルムの名前を入力します。
今回はopenshiftで作成しております。

レルムが出来ましたら、次はクライアントを作成します。
画面左側にあるClientsをクリックします。

クライアントの一覧が出ますので、Create clientをクリックします。

クライアント作成ページで、ClientIDとNameを入力します。今回はtest用なので、以下のように入力しております。

次のページで、Client authenticationをOnにします。
また、Authentication flowでStandard flowにチェックがついていることを確認します。

次のページでは、特に入力せずデフォルトのままにしておきます。
厳密には、Keycloak側で認証を行う際にValid redirect URIsなどを設定しておくべきですが、今回は検証なのでデフォルトのままにしておきます。

クライアントが無事作成されたことを確認し、タブのCredentialsをクリックします。

Credentialsの中のClient Secretの文字列をコピーします。(OpenShift側でOIDC認証を設定する際に利用します。)

クライアントまで作成したらユーザを作成していきます。
画面左のUsersをクリックします。また、Create new userをクリックし、適当なユーザを作成しておきます。

今回はtestユーザを作成します。

testユーザが作成出来たら、パスワードを設定するため、タブのCredentialsをクリックし、パスワードを設定しておきます。

ユーザまで作成したら最後にissuerのURLをコピーしておきます。
画面左のRealm settingsをクリックすると、下のほうにEndpointsのリンクがあります。
リンクを押して、https://<ドメイン名>/realms/<レルム名>のURLがあるので、コピーしておきます。(OpenShift側でOIDC認証を設定する際に利用します。)

OpenShiftにOIDC認証を実施
Keycloakを設定した後は、OpenShift側でOIDC認証を追加していきます。
OpenShiftに管理者でログインした後、クラスター設定を開きます。

設定を開くと、設定の一覧が表示されますので、OAuthをクリックします。

OAuthの画面の下のほうで、アイデンティープロバイダーの設定がありますので、追加をクリックします。
すると、登録したいアイデンティープロバイダーの一覧が表示されますので、OpenID Connectをクリックします。

OpenID Connectの設定画面が表示されますので、以下の設定を追加します。
クライアントID:test ※Keycloakで作成したクライアントIDを指定します。
クライアントシークレット:<コピーしたシークレット> ※事前にコピーしたシークレットを張り付けます。
発行側のURL:IssuerのURL(https://<ドメイン名>/realms/<レルム名>) ※事前にコピーしたIssuerを張り付けます。

最後にCAファイルを添付します。(Keycloakを構築した際にLet's Encryptで取得したCA証明書を添付します。)
CA証明書はBEGIN CERTIFICATEで始まるファイルです。ここで違うファイルを指定すると正しく設定されずエラーとなります。

OIDCの設定が完了すると、OAuth用のpodが再デプロイされますので、デプロイが完了するまで少し待ちます。

OpenShiftにログイン
デプロイ完了したらOpenShiftにログインしてみます。
OpenShiftのログイン用URLでアクセスすると、openidの項目が追加されています。
openidをクリックしてみましょう。

openidをクリックすると、Keycloak側のログイン画面にリダイレクトされます。
事前に作成したtestユーザのIDとパスワードを入力しログインします。

無事ログインできました。
今回は特に権限もないので、プロジェクトなどは見れません。

まとめ
今回はKeycloakサーバを構築し、OpenShiftのログインに利用してみました。
特に権限回りの設定をしていないためプロジェクトなどは見れてませんが、今後は権限やグループなどを設定できないか模索してみます。
少しでも参考になれば幸いです。
出くわしたエラー
OpenShiftにOIDC認証を設定する際に誤ったCAファイルをアップロードすると、メッセージに以下のエラーが出力されpodがデプロイされてませんでした。
認証設定を間違えると再度設定追加が必要になりますので、気を付けてもらえればと思います。

RELATED ARTICLE関連記事
RELATED SERVICES関連サービス
Careersキャリア採用
LATEST ARTICLE
CATEGORY
- AWS (67)
- Azure (24)
- Databricks (18)
- GCP (27)
- Nutanix (14)
- Oracle Cloud Infrastructure(OCI) (19)
- Oracle Cloud VMware Solution(OCVS) (4)
- Oracle DB (93)
- Oracle Linux KVM (19)
- Python (3)
- Snowflake (22)
- Veeam Backup & Replication (13)
- インフラ (76)
- クラウド (137)
- コンテナ技術 (18)
- セキュリティ (22)
- データエンジニアリング (64)
- ネットワーク (21)
- 仮想基盤 (37)
- 生成AI (18)




