3.3. Red Hat build of Keycloak を Trusted Artifact Signer の OpenID Connect プロバイダーとして設定する手順
Red Hat’s build of Keycloak (RHBK) を Red Hat Trusted Artifact Signer (RHTAS) サービスの OpenID Connect (OIDC) として設定できます。この手順では、RHBK と RHTAS を統合する方法を説明します。
同じ SecureSign 設定で、Fulcio の複数の異なる OIDC プロバイダーを定義できます。
前提条件
手順
-
cluster-admin
ロールを持つユーザーで OpenShift Web コンソールにログインします。 Keycloak サービスをデプロイする新規プロジェクトを作成します。
- Administrator パースペクティブのナビゲーションメニューから Home を展開し、Projects をクリックします。
- Create Project ボタンをクリックします。
-
新しいプロジェクト名は
keycloak-system
で、Create ボタンをクリックします。
永続データを保存するために Keycloak が使用する PostgreSQL インスタンスをデプロイします。
重要Keycloak で使用するデータベースがすでに存在する場合は、データベースインスタンスに対応する
Secret
リソースのusername
、password
およびdatabase
名の値を置き換えます。PostgreSQL サービスと StatefulSet の作成手順をスキップして、次の手順に進むことができます。データベース情報を保存するための
Secret
リソースを作成します。- ナビゲーションメニューから Workloads を展開し、Secrets をクリックします。
-
Project ドロップダウンメニューから
keycloak-system
を選択します。 - Create ドロップダウンメニューをクリックし、Key/Value secret を選択します。
-
Secret name フィールドに
postgresql-db
と入力します。 -
Key フィールドに
username
を入力します。 -
Value フィールドに
keycloak
と入力します。これは、Keycloak が PostgreSQL データベースインスタンスへの認証に使用するユーザー名です。 - 別のキーと値のペアを追加するには、Add key/value リンクをクリックします。
-
Key フィールドに
password
を入力します。 - Value フィールドに任意のパスワードを入力します。これは、Keycloak が PostgreSQL データベースインスタンスへの認証に使用するパスワードです。
- 別のキーと値のペアを追加するには、Add key/value リンクをクリックします。
-
Key フィールドに
database
を入力します。 -
Value フィールドに
keycloak
と入力します。これは、PostgreSQL データベースインスタンス内に Keycloak データを格納するためのデータベースの名前です。 - Create ボタンをクリックします。
PostgreSQL サービスと StatefulSet を作成します。
- + アイコンをクリックします。
- Service および StatefulSet YAML 設定テキスト をコピーし、Import YAML ページでテキストエディターボックスに テキストを貼り付けます。
-
Create ボタンをクリックして、Service と StatefulSet を
keycloak-system
プロジェクトに追加します。
ワークステーションからターミナルを開き、OpenShift クラスターにログインします。
構文
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
例
$ oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
注記OpenShift Web コンソールからコマンドラインで使用するログイントークンと URL を確認できます。OpenShift Web コンソールにログインします。ユーザー名をクリックし、Copy login command をクリックします。入力を求められた場合はユーザー名とパスワードをもう一度入力し、Display Token をクリックしてコマンドを表示します。
Transport Layer Security (TLS) 証明書と対応する秘密鍵を含めて、新しい
Secret
リソースを作成します。構文
oc create secret tls SECRET_NAME -n NAMESPACE --cert CERTIFICATE_FILE_NAME --key PRIVATE_KEY_FILE_NAME
例
$ oc create secret tls keycloak-tls -n keycloak-system --cert certificate.pem --key key.pem
注記OpenShift のサービス提供証明書は、Keycloak で使用する TLS 証明書の生成と管理を自動化できます。詳細は 付録 を参照してください。
- OpenShift Web コンソールで、ナビゲーションメニューから Operator を展開し、OperatorHub をクリックします。
- 検索フィールドに keycloak と入力し、認定済みの Red Hat カタログから Keycloak Operator タイルをクリックします。
- Install ボタンをクリックして、Operator の詳細を表示します。
-
Install Operator ページで、Installed Namespace ドロップダウンメニューから
keycloak-system
を選択し、Install ボタンをクリックします。インストールが完了するまで待ちます。 - インストールが完了したら、View Operator ボタンをクリックします。
- Keycloak タイルで Create instance をクリックします。
Create Keycloak ページで、YAML view を選択します。
-
name
の行で、example-keycloak
をカスタム名 (例:keycloak
) に置き換えます。 ホスト名は、
hostname
プロパティー内で明示的に指定することも、他のルートと同様に自動的に生成することもできます。hostname
の行で、example.org
をカスタムホスト名に置き換えます。注記OpenShift で Keycloak インスタンスのホスト名を生成するために必要な手順は、付録 を参照してください。
spec
セクションの下に、データベースの詳細を追加します。例
spec: ... db: vendor: postgres host: postgresql-db usernameSecret: name: postgresql-db key: username passwordSecret: name: postgresql-db key: password ...
また、
spec
セクションのhttp
プロパティーに、TLS 証明書を含むSecret
リソースの名前を指定します。例
spec: ... http: tlsSecret: keycloak-tls ...
- Create ボタンをクリックします。
-
- Networking ナビゲーションメニューを展開し、Routes をクリックします。
- Keycloak 管理コンソールを開くには、Keycloak インスタンスに関連付けられたルートへのリンクをクリックします。
-
admin
ユーザーのデフォルトの認証情報は keycloak-initial-admin という Secret に保存されます。パスワードを見つけるには、Workloads ナビゲーションメニューを展開し、Secrets をクリックします。 - keycloak-initial-admin シークレットを選択します。
- Data セクションでパスワードキーを探し、 アイコンをクリックします。
-
Keycloak 管理コンソールのログインページで、ユーザー名として
admin
と入力し、前の手順の内容をパスワードとして貼り付けます。 trusted-artifact-signer
という新しいレルムを作成します。- ナビゲーションメニューで、Red Hat build of Keycloak ドロップダウンメニューを選択します。
- Create Realm を選択します。
-
リソース名 として
trusted-artifact-signer
と入力します。 - Create をクリックして新しいレルムを作成します。
新しい ユーザー を作成します。新しいユーザーは、Keycloak 管理コンソールにログインでき、RHTAS を使用してコンテナーとコミットに署名することもできます。
- ナビゲーションメニューの Manage セクションで、Clients を選択します。
- Create Client ボタンをクリックします
-
Client Id フィールドに、
trusted-artifact-signer
と入力します。 - オプションで、対応するフィールドに 名前 と 説明 を入力できます。
- Next をクリックします。
- 新しいクライアント作成プロセスの Capability Config ステップでデフォルトオプションを確定します。
- Next をクリックします。
-
Valid redirect URIs フィールドに
*
と入力します。 - Save をクリックしてクライアントを作成します。
-
ナビゲーションメニューの Configure セクションで、Realm Settings を選択して、
trusted-artifact-signer
レルムの Issuer URL を見つけます。 - Endpoints の横にある OpenID Endpoint Configuration リンクをクリックします。
-
issuer
プロパティーから URL をコピーします。 RHTAS の
SecureSign
リソースの.spec.fulcio.config.OIDCIssuers
セクションで、CLIENT_ID をtrusted-artifact-signer
に置き換え、URL コンテンツを貼り付けてRHBK_REALM_ISSUER_URL を置き換えます。構文
spec: ... fulcio: config: OIDCIssuers: - ClientID: CLIENT_ID Issuer: 'RHBK_REALM_ISSUER_URL' IssuerURL: 'RHBK_REALM_ISSUER_URL' Type: email ...
例
spec: ... fulcio: config: OIDCIssuers: - ClientID: trusted-artifact-signer Issuer: 'https://keycloak-ingress-keycloak-system.apps.openshift.example.com/realms/trusted-artifact-signer' IssuerURL: 'https://keycloak-ingress-keycloak-system.apps.openshift.example.com/realms/trusted-artifact-signer' Type: email ...