10.2. Gateway API の OpenID Connect (OIDC) 認証の設定


OpenShift AI 管理者は、外部 OIDC アイデンティティープロバイダーのパラメーターを使用して、Gateway API の OpenID Connect (OIDC) 認証を設定できます。

重要

Gateway が適切に機能するために、OpenShift AI Gateway を設定する前に、外部 OIDC アイデンティティープロバイダーを使用したダイレクト認証のために OpenShift を設定しておく必要があります。

前提条件

注記

Gateway が使用するのと同じ OIDC プロバイダーを使用して、直接認証用に OpenShift を設定する必要があります。

  • OpenShift AI が正常にインストールされ、デプロイされている。

    • DataScienceCluster (DSC) と DSCInitialization をデプロイしている。詳細は、OpenShift AI コンポーネントのインストールと管理 を参照してください。
    • OpenShift AI Operator を rhods-operator namespace にデプロイしている。
    • Istio Gateway を使用して、OCP 4.19 以降で Gateway API サポートを有効化している。
    • 以下の外部認証プロバイダーの詳細情報を把握している。

      • 発行者 URL
      • クライアント ID
      • クライアントシークレット
      • レルム名 (Keycloak 用)
    • シークレットを作成し、GatewayConfig を設定するために必要なクラスター管理者アクセス権がある。

段階的な手順、トラブルシューティング、およびフィールド定義についての詳細は、OpenShift のドキュメントの 外部 OIDC アイデンティティープロバイダーの設定 を参照してください。

手順

  1. OpenShift CLI (oc) で、次のコマンドを実行して OpenShift 認証タイプを確認します。

    $ oc get authentication.config/cluster -o jsonpath='{.spec.type}'
    Copy to Clipboard Toggle word wrap

    認証が成功すると、次の出力が表示されます: OIDC

  2. 次のコマンドを実行して、OIDC プロバイダーが期待どおりに設定されていることを確認します。

    $ oc get authentication.config/cluster -o jsonpath='{.spec.oidcProviders[*].name}'
    Copy to Clipboard Toggle word wrap

    OIDC 設定が成功すると、プロバイダー名 (例: keycloak) が表示されます。

  3. kube-apiserver が期待どおりに変更をロールアウトしたことを確認します。

    $ oc get co kube-apiserver
    Copy to Clipboard Toggle word wrap

    成功が示されている場合、予想される出力は次の例のようになります。

    NAME              VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE
    kube-apiserver    4.14.9    True        False         False      1d
    Copy to Clipboard Toggle word wrap
    注記

    ロールアウトには 20 分以上かかる場合があります。すべてのノードに新しいリビジョンが反映されるまで待機してから、続行します。oc get authentication.config/clustertype: OIDC と表示され、oc get co kube-apiserver で認証のロールアウトが完了したことが表示され、OIDC 認証情報を使用して OpenShift に正常に認証できる場合は、Gateway の設定手順に進むことができます。

  4. 次の環境変数を定義します。プレースホルダーの値は、OIDC アイデンティティープロバイダー (IdP) からの実際の詳細に置き換える必要があります。

    # 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 Toggle word wrap
  5. openshift-ingress namespace にクライアントシークレットを作成します。

    $ oc create secret generic keycloak-client-secret \
        --from-literal=clientSecret=$KEYCLOAK_CLIENT_SECRET \
        -n openshift-ingress
    Copy to Clipboard Toggle word wrap
  6. シークレット参照と OIDC の詳細をパッチして、GatewayConfig カスタムリソースを更新し、OIDC 認証を有効にします。

    $ oc patch gatewayconfig default-gateway --type='merge' -p='{
        "spec": {
          "oidc": {
            "issuerURL": "https://'$KEYCLOAK_DOMAIN'/realms/'$KEYCLOAK_REALM'",
            "clientID": "'$KEYCLOAK_CLIENT_ID'",
            "clientSecretRef": {
              "name": "keycloak-client-secret",
              "key": "clientSecret"
            }
          }
        }
      }'
    Copy to Clipboard Toggle word wrap
  7. クライアントシークレットが作成され、GatewayConfig に正しい OIDC 設定が表示されていることを確認します。

    $ oc get secret keycloak-client-secret -n openshift-ingress
    $ oc get gatewayconfig default-gateway -o jsonpath='{.spec.oidc}'
    Copy to Clipboard Toggle word wrap

    シークレットと 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 Toggle word wrap

検証

  1. アイデンティティープロバイダーの Gateway を設定して認証した後、OpenShift コンソールにアクセスできることを確認する必要があります。

    1. コンソールリンクにアクセスして Gateway にアクセスします。

      $ oc get consolelink
      Copy to Clipboard Toggle word wrap
    2. OIDC 認証情報を使用してログインし、以下を確認します。

      1. OIDC プロバイダーのログインページにリダイレクトされます。認証が成功すると、Gateway にリダイレクトされます。
      2. OpenShift AI コンポーネント (ダッシュボード、Notebook など) にアクセスできます。
  2. GatewayConfig ステータスをチェックして、OIDC 設定が正常にプロビジョニングされたことを確認します。

    $ oc get gatewayconfig default-gateway -o yaml
    Copy to Clipboard Toggle word wrap

    予想される出力は、GatewayConfig リソースの完全な YAML 設定です。これには、spec.oidc の下に OIDC 設定の詳細が表示され、かつ ReadyProvisioningSucceeded の両方の条件が status: "True" の値を示していることで、デプロイが成功したことを確認できます。

  3. kube-auth-proxy デプロイメントが openshift-ingress namespace で正常に実行されていることを確認します。

    $ oc get deployment kube-auth-proxy -n openshift-ingress
    Copy to Clipboard Toggle word wrap

    予想される出力は次の例のようになります。

    NAME              READY   UP-TO-DATE   AVAILABLE   AGE
    kube-auth-proxy   1/1     1            1           5m
    Copy to Clipboard Toggle word wrap
  4. data-science-gateway のステータスとアクセス可能性を確認します。

    $ oc get gateway data-science-gateway -n openshift-ingress
    Copy to Clipboard Toggle word wrap

    予想される出力は次の例のようになります。

    NAME                   CLASS                        ADDRESS                                                                        PROGRAMMED   AGE
    data-science-gateway   data-science-gateway-class   aa87f5da7f0c748d5aa63b4916604108-107643684.us-east-1.elb.amazonaws.com         True         5m
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、OIDC 検出エンドポイントをテストします。

    curl -s https://your-keycloak-domain/realms/your-realm/.well-known/openid-configuration
    Copy to Clipboard Toggle word wrap

    予想される出力は、OIDC プロバイダーが公開で検出可能であることを確認する、OIDC 設定エンドポイント (issuerauthorization_endpointtoken_endpoint など) を含む JSON オブジェクトです。

次のステップ

外部 OIDC が設定され認証されると、クラスター管理者は、外部アイデンティティープロバイダー (IdP) グループを特定の OpenShift ClusterRoles にマッピングして、プロジェクトとリソースへのアクセスを許可することにより、必要な認可を実行する必要があります。

  1. コンソールで OpenShift プロジェクトへの読み取りおよびリスト表示アクセス権をユーザーに付与する ClusterRole を作成します。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: odh-projects-read
    rules:
    - apiGroups: ["project.openshift.io"]
      resources: ["projects"]
      verbs: ["get","list"]
    Copy to Clipboard Toggle word wrap
  2. odh-projects-read ClusterRole を IdP グループ (たとえば、odh-users) にバインドします。

    $ oc adm policy add-cluster-role-to-group odh-projects-read odh-users
    Copy to Clipboard Toggle word wrap
  3. 組み込みのセルフプロビジョナー ClusterRole をグループに割り当てることで、新しいプロジェクトを作成および管理する権限を付与します。

    $ oc adm policy add-cluster-role-to-group self-provisioner odh-users
    Copy to Clipboard Toggle word wrap

10.2.1. セキュリティーに関する考慮事項

  • シークレット管理: OIDC クライアントシークレットをセキュアに保存し、定期的にローテーションします。
  • ネットワークポリシー: 認証プロキシーへのアクセスを制限するネットワークポリシーの実装を検討してください。
  • TLS 設定: すべての OIDC 通信で Transport Layer Security (TLS) が使用されていることを確認します。
  • トークンの検証: kube-auth-proxy がトークンを検証する際、OIDC プロバイダーが適切なトークン有効期間で設定されていることを確認してください。
  • 監査ロギング: 認証イベントの監査ログを有効にします。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat