7.9. OpenID Connect ID プロバイダーの設定


oidc アイデンティティープロバイダーを、Authorization Code Flow を使用して OpenID Connect アイデンティティープロバイダーと統合するように設定します。

7.9.1. OpenShift Container Platform のアイデンティティープロバイダーについて

デフォルトでは、kubeadmin ユーザーのみがクラスターに存在します。アイデンティティープロバイダーを指定するには、アイデンティティープロバイダーを記述し、これをクラスターに追加するカスタムリソースを作成する必要があります。

注記

/:、および % を含む OpenShift Container Platform ユーザー名はサポートされません。

7.9.2. OpenID Connect 認証について

OpenShift Container Platform の認証 Operator では、設定済みの OpenID Connect アイデンティティープロバイダーが OpenID Connect Discovery 仕様を実装する必要があります。

注記

ID Token および UserInfo の復号化はサポートされていません。

デフォルトで、openid の範囲が要求されます。必要な場合は、extraScopes フィールドで追加の範囲を指定できます。

要求は、OpenID アイデンティティープロバイダーから返される JWT id_token から読み取られ、指定される場合は UserInfo URL によって返される JSON から読み取られます。

1 つ以上の要求をユーザーのアイデンティティーを使用するように設定される必要があります。標準のアイデンティティー要求は sub になります。

また、どの要求をユーザーの推奨ユーザー名、表示名およびメールアドレスとして使用するか指定することができます。複数の要求が指定されている場合は、値が入力されている最初の要求が使用されます。次の表に、標準クレームを示します。

要求説明

sub

subject identifier の省略形です。 発行側のユーザーのリモートアイデンティティーです。

preferred_username

ユーザーのプロビジョニング時に優先されるユーザー名です。janedoe などのユーザーを参照する際に使用する省略形の名前です。通常は、ユーザー名またはメールなどの、認証システムのユーザーのログインまたはユーザー名に対応する値です。

email

メールアドレス。

name

表示名。

詳細は、OpenID claim のドキュメント を参照してください。

注記

OpenID Connect ID プロバイダーがリソース所有者パスワード認証情報 (ROPC) 付与フローをサポートしていない限り、ユーザーはコマンドラインツールで使用するために <namespace_route>/oauth/token/request からトークンを取得する必要があります。

7.9.3. サポートされている OIDC プロバイダー

Red Hat は、OpenShift Container Platform を使用して特定の OpenID Connect (OIDC) プロバイダーをテストし、サポートします。以下の Open IDConnect (OIDC) プロバイダーは、OpenShift Container Platform でテストおよびサポートされています。次のリストにない OIDC プロバイダーの使用は OpenShift Container Platform で動作する可能性がありますが、そのプロバイダーは Red Hat によってテストされていないため、Red Hat のサポート外となります。

  • GitLab
  • Google
  • Keycloak
  • Okta
  • Ping Identity
  • Red Hat Single Sign-On

7.9.4. シークレットの作成

アイデンティティープロバイダーは openshift-config namespace で OpenShift Container Platform Secret オブジェクトを使用して、クライアントシークレット、クライアント証明書およびキーをこれに組み込みます。

手順

  • 以下のコマンドを使用して、文字列を含む Secret オブジェクトを作成します。

    $ oc create secret generic <secret_name> --from-literal=clientSecret=<secret> -n openshift-config
    ヒント

    または、以下の YAML を適用してシークレットを作成できます。

    apiVersion: v1
    kind: Secret
    metadata:
      name: <secret_name>
      namespace: openshift-config
    type: Opaque
    data:
      clientSecret: <base64_encoded_client_secret>
  • 以下のコマンドを実行して、証明書ファイルなどのファイルの内容を含む Secret オブジェクトを定義できます。

    $ oc create secret generic <secret_name> --from-file=<path_to_file> -n openshift-config

7.9.5. 設定マップの作成

アイデンティティープロバイダーは、openshift-config namespace で OpenShift Container Platform ConfigMap オブジェクトを使用し、認証局バンドルをこれに組み込みます。これらは、主にアイデンティティープロバイダーで必要な証明書バンドルを組み込むために使用されます。

注記

この手順は、GitHub Enterprise にのみ必要です。

手順

  • 以下のコマンドを使用して、認証局が含まれる OpenShift Container Platform ConfigMap オブジェクトを定義します。認証局は ConfigMap オブジェクトの ca.crt キーに保存する必要があります。

    $ oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config
    ヒント

    または、以下の YAML を適用して設定マップを作成できます。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ca-config-map
      namespace: openshift-config
    data:
      ca.crt: |
        <CA_certificate_PEM>

7.9.6. OpenID Connect CR のサンプル

以下のカスタムリソース (CR) は、OpenID Connect アイデンティティープロバイダーのパラメーターおよび許可される値を示します。

カスタム証明書バンドル、追加の範囲、追加の認可要求パラメーター、または userInfo URL を指定する必要がある場合、完全な OpenID Connect CR を使用します。

標準の OpenID Connect CR

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: oidcidp 1
    mappingMethod: claim 2
    type: OpenID
    openID:
      clientID: ... 3
      clientSecret: 4
        name: idp-secret
      claims: 5
        preferredUsername:
        - preferred_username
        name:
        - name
        email:
        - email
        groups:
        - groups
      issuer: https://www.idp-issuer.com 6

1
このプロバイダー名はアイデンティティー要求の値に接頭辞として付加され、アイデンティティー名が作成されます。これはリダイレクト URL を作成するためにも使用されます。
2
このプロバイダーのアイデンティティーと User オブジェクト間にマッピングが確立される方法を制御します。
3
OpenID プロバイダーに登録されているクライアントのクライアント ID です。このクライアントは https://oauth-openshift.apps.<cluster-name>.<cluster-domain>/oauth2callback/<idp-provider-name> にリダイレクトすることを許可されている必要があります。
4
クライアントシークレットを含む OpenShift Container Platform Secret オブジェクトへの参照。
5
アイデンティティーとして使用する要求の一覧です。空でない最初の要求が使用されます。
6
OpenID 仕様に記述される発行者 ID。クエリーまたはフラグメントコンポーネントのない https を使用する必要があります。

完全な OpenID Connect CR

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: oidcidp
    mappingMethod: claim
    type: OpenID
    openID:
      clientID: ...
      clientSecret:
        name: idp-secret
      ca: 1
        name: ca-config-map
      extraScopes: 2
      - email
      - profile
      extraAuthorizeParameters: 3
        include_granted_scopes: "true"
      claims:
        preferredUsername: 4
        - preferred_username
        - email
        name: 5
        - nickname
        - given_name
        - name
        email: 6
        - custom_email_claim
        - email
        groups: 7
        - groups
      issuer: https://www.idp-issuer.com

1
オプション: 設定済みの URL のサーバー証明書を検証するために使用する PEM エンコードされた認証局バンドルを含む OpenShift Container Platform 設定マップへの参照。
2
オプション: 認可トークン要求時に openid の範囲のほかに要求する範囲の一覧です。
3
オプション: 認証トークン要求に追加する追加パラメーターのマップです。
4
このアイデンティティーのユーザーをプロビジョニングする際に推奨ユーザー名として使用される要求の一覧です。空でない最初の要求が使用されます。
5
表示名として使用する要求の一覧です。空でない最初の要求が使用されます。
6
メールアドレスとして使用する要求の一覧です。空でない最初の要求が使用されます。
7
ユーザーのログイン時に Open IDConnect プロバイダーから OpenShift Container Platform にグループを同期するために使用するクレームのリスト。空でない最初の要求が使用されます。

関連情報

7.9.7. アイデンティティープロバイダーのクラスターへの追加

クラスターのインストール後に、アイデンティティープロバイダーをそのクラスターに追加し、ユーザーの認証を実行できるようにします。

前提条件

  • OpenShift Container Platform クラスターを作成します。
  • アイデンティティープロバイダーのカスタムリソース (CR) を作成します。
  • 管理者としてログインしている必要があります。

手順

  1. 定義された CR を適用します。

    $ oc apply -f </path/to/CR>
    注記

    CR が存在しない場合、oc apply は新規 CR を作成し、さらに以下の警告をトリガーする可能性があります。Warning: oc apply should be used on resources created by either oc create --save-config or oc applyこの場合は、この警告を無視しても問題ありません。

  2. OAuth サーバーからトークンを取得します。

    kubeadmin ユーザーが削除されている限り、oc login コマンドは、トークンを取得できる Web ページにアクセスする方法についての情報を提供します。

    Web コンソールからこのページにアクセスするには、(?) Help Command Line Tools Copy Login Commandに移動します。

  3. 認証するトークンを渡して、クラスターにログインします。

    $ oc login --token=<token>
    注記

    OpenID Connect アイデンティティープロバイダーが Resource Owner Password Credentials (ROPC) Grant フローをサポートする場合、ユーザー名とパスワードを使用してログインすることができます。アイデンティティープロバイダーの ROPC Grant フローを有効にする手順を実行する必要がある場合があります。

    OIDC アイデンティティープロバイダーを OpenShift Container Platform で設定した後に、以下のコマンドを使用してログインできます。この場合、ユーザー名とパスワードの入力が求めるプロンプトが出されます。

    $ oc login -u <identity_provider_username> --server=<api_server_url_and_port>
  4. ユーザーが正常にログインされていることを確認し、ユーザー名を表示します。

    $ oc whoami

7.9.8. Web コンソールを使用したアイデンティティープロバイダーの設定

CLI ではなく Web コンソールを使用してアイデンティティープロバイダー (IDP) を設定します。

前提条件

  • クラスター管理者として Web コンソールにログインしている必要があります。

手順

  1. Administration Cluster Settings に移動します。
  2. Configuration タブで、OAuth をクリックします。
  3. Identity Providers セクションで、Add ドロップダウンメニューからアイデンティティープロバイダーを選択します。
注記

既存の IDP を上書きすることなく、Web コンソールで複数の IDP を指定することができます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.