10.2. Gateway API の OpenID Connect (OIDC) 認証の設定
OpenShift AI 管理者は、外部 OIDC アイデンティティープロバイダーのパラメーターを使用して、Gateway API の OpenID Connect (OIDC) 認証を設定できます。
Gateway が適切に機能するために、OpenShift AI Gateway を設定する前に、外部 OIDC アイデンティティープロバイダーを使用したダイレクト認証のために OpenShift を設定しておく必要があります。
前提条件
外部 OIDC アイデンティティープロバイダーによる直接認証用に OpenShift を設定している。
- 直接認証するように OpenShift を設定するには、適切な OpenShift ドキュメント 外部 OIDC アイデンティティープロバイダーによる直接認証の有効化 に従ってください。
- ROSA を使用して直接認証するように OpenShift を設定するには、適切な Red Hat OpenShift Service on AWS ドキュメント OpenID Connect 設定の作成 に従ってください。
Gateway が使用するのと同じ OIDC プロバイダーを使用して、直接認証用に OpenShift を設定する必要があります。
OpenShift AI が正常にインストールされ、デプロイされている。
- DataScienceCluster (DSC) と DSCInitialization をデプロイしている。詳細は、OpenShift AI コンポーネントのインストールと管理 を参照してください。
-
OpenShift AI Operator を
rhods-operatornamespace にデプロイしている。 - Istio Gateway を使用して、OCP 4.19 以降で Gateway API サポートを有効化している。
以下の外部認証プロバイダーの詳細情報を把握している。
- 発行者 URL
- クライアント ID
- クライアントシークレット
- レルム名 (Keycloak 用)
-
シークレットを作成し、
GatewayConfigを設定するために必要なクラスター管理者アクセス権がある。
段階的な手順、トラブルシューティング、およびフィールド定義についての詳細は、OpenShift のドキュメントの 外部 OIDC アイデンティティープロバイダーの設定 を参照してください。
手順
OpenShift CLI (
oc) で、次のコマンドを実行して OpenShift 認証タイプを確認します。oc get authentication.config/cluster -o jsonpath='{.spec.type}'$ oc get authentication.config/cluster -o jsonpath='{.spec.type}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 認証が成功すると、次の出力が表示されます:
OIDC次のコマンドを実行して、OIDC プロバイダーが期待どおりに設定されていることを確認します。
oc get authentication.config/cluster -o jsonpath='{.spec.oidcProviders[*].name}'$ oc get authentication.config/cluster -o jsonpath='{.spec.oidcProviders[*].name}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow OIDC 設定が成功すると、プロバイダー名 (例:
keycloak) が表示されます。kube-apiserverが期待どおりに変更をロールアウトしたことを確認します。oc get co kube-apiserver
$ oc get co kube-apiserverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 成功が示されている場合、予想される出力は次の例のようになります。
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE kube-apiserver 4.14.9 True False False 1d
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE kube-apiserver 4.14.9 True False False 1dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ロールアウトには 20 分以上かかる場合があります。すべてのノードに新しいリビジョンが反映されるまで待機してから、続行します。
oc get authentication.config/clusterでtype: OIDCと表示され、oc get co kube-apiserverで認証のロールアウトが完了したことが表示され、OIDC 認証情報を使用して OpenShift に正常に認証できる場合は、Gateway の設定手順に進むことができます。次の環境変数を定義します。プレースホルダーの値は、OIDC アイデンティティープロバイダー (IdP) からの実際の詳細に置き換える必要があります。
Replace with your actual values
# Replace with your actual values KEYCLOAK_DOMAIN="<keycloak.example.com>" KEYCLOAK_REALM="<your-realm>" KEYCLOAK_CLIENT_ID="<your-client-id>" KEYCLOAK_CLIENT_SECRET="<your-client-secret>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-ingressnamespace にクライアントシークレットを作成します。oc create secret generic keycloak-client-secret \ --from-literal=clientSecret=$KEYCLOAK_CLIENT_SECRET \ -n openshift-ingress$ oc create secret generic keycloak-client-secret \ --from-literal=clientSecret=$KEYCLOAK_CLIENT_SECRET \ -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow シークレット参照と OIDC の詳細をパッチして、
GatewayConfigカスタムリソースを更新し、OIDC 認証を有効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow クライアントシークレットが作成され、
GatewayConfigに正しい OIDC 設定が表示されていることを確認します。oc get secret keycloak-client-secret -n openshift-ingress oc get gatewayconfig default-gateway -o jsonpath='{.spec.oidc}'$ oc get secret keycloak-client-secret -n openshift-ingress $ oc get gatewayconfig default-gateway -o jsonpath='{.spec.oidc}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットと
GatewayConfigの予想される出力は、次の例のようになります。Expected output (for secret) Expected output (for GatewayConfig)
# Expected output (for secret) NAME TYPE DATA AGE keycloak-client-secret Opaque 1 2m # Expected output (for GatewayConfig) {"clientID":"your-client-id","clientSecretRef":{"key":"clientSecret","name":"keycloak-client-secret"},"issuerURL":"https://keycloak.example.com/realms/your-realm"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
アイデンティティープロバイダーの Gateway を設定して認証した後、OpenShift コンソールにアクセスできることを確認する必要があります。
コンソールリンクにアクセスして Gateway にアクセスします。
oc get consolelink
$ oc get consolelinkCopy to Clipboard Copied! Toggle word wrap Toggle overflow OIDC 認証情報を使用してログインし、以下を確認します。
- OIDC プロバイダーのログインページにリダイレクトされます。認証が成功すると、Gateway にリダイレクトされます。
- OpenShift AI コンポーネント (ダッシュボード、Notebook など) にアクセスできます。
GatewayConfigステータスをチェックして、OIDC 設定が正常にプロビジョニングされたことを確認します。oc get gatewayconfig default-gateway -o yaml
$ oc get gatewayconfig default-gateway -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力は、
GatewayConfigリソースの完全な YAML 設定です。これには、spec.oidcの下に OIDC 設定の詳細が表示され、かつReadyとProvisioningSucceededの両方の条件がstatus: "True"の値を示していることで、デプロイが成功したことを確認できます。kube-auth-proxyデプロイメントがopenshift-ingressnamespace で正常に実行されていることを確認します。oc get deployment kube-auth-proxy -n openshift-ingress
$ oc get deployment kube-auth-proxy -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力は次の例のようになります。
NAME READY UP-TO-DATE AVAILABLE AGE kube-auth-proxy 1/1 1 1 5m
NAME READY UP-TO-DATE AVAILABLE AGE kube-auth-proxy 1/1 1 1 5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow data-science-gatewayのステータスとアクセス可能性を確認します。oc get gateway data-science-gateway -n openshift-ingress
$ oc get gateway data-science-gateway -n openshift-ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力は次の例のようになります。
NAME CLASS ADDRESS PROGRAMMED AGE data-science-gateway data-science-gateway-class aa87f5da7f0c748d5aa63b4916604108-107643684.us-east-1.elb.amazonaws.com True 5m
NAME CLASS ADDRESS PROGRAMMED AGE data-science-gateway data-science-gateway-class aa87f5da7f0c748d5aa63b4916604108-107643684.us-east-1.elb.amazonaws.com True 5mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、OIDC 検出エンドポイントをテストします。
curl -s https://your-keycloak-domain/realms/your-realm/.well-known/openid-configuration
curl -s https://your-keycloak-domain/realms/your-realm/.well-known/openid-configurationCopy to Clipboard Copied! Toggle word wrap Toggle overflow 予想される出力は、OIDC プロバイダーが公開で検出可能であることを確認する、OIDC 設定エンドポイント (
issuer、authorization_endpoint、token_endpointなど) を含む JSON オブジェクトです。
次のステップ
外部 OIDC が設定され認証されると、クラスター管理者は、外部アイデンティティープロバイダー (IdP) グループを特定の OpenShift ClusterRoles にマッピングして、プロジェクトとリソースへのアクセスを許可することにより、必要な認可を実行する必要があります。
コンソールで OpenShift プロジェクトへの読み取りおよびリスト表示アクセス権をユーザーに付与する
ClusterRoleを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow odh-projects-readClusterRole を IdP グループ (たとえば、odh-users) にバインドします。oc adm policy add-cluster-role-to-group odh-projects-read odh-users
$ oc adm policy add-cluster-role-to-group odh-projects-read odh-usersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 組み込みのセルフプロビジョナー ClusterRole をグループに割り当てることで、新しいプロジェクトを作成および管理する権限を付与します。
oc adm policy add-cluster-role-to-group self-provisioner odh-users
$ oc adm policy add-cluster-role-to-group self-provisioner odh-usersCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2.1. セキュリティーに関する考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
- シークレット管理: OIDC クライアントシークレットをセキュアに保存し、定期的にローテーションします。
- ネットワークポリシー: 認証プロキシーへのアクセスを制限するネットワークポリシーの実装を検討してください。
- TLS 設定: すべての OIDC 通信で Transport Layer Security (TLS) が使用されていることを確認します。
-
トークンの検証:
kube-auth-proxyがトークンを検証する際、OIDC プロバイダーが適切なトークン有効期間で設定されていることを確認してください。 - 監査ロギング: 認証イベントの監査ログを有効にします。