Menu Close

7.2. Keystone アイデンティティープロバイダーの設定

keystone アイデンティティープロバイダーを、OpenShift Container Platform クラスターを Keystone に統合し、ユーザーを内部データベースに保存するように設定された OpenStack Keystone v3 サーバーによる共有認証を有効にするように設定します。この設定により、ユーザーは Keystone 認証情報を使って OpenShift Container Platform にログインできます。

Keystone は、アイデンティティー、トークン、カタログ、およびポリシーサービスを提供する OpenStack プロジェクトです。

新規 OpenShift Container Platform ユーザーが Keystone ユーザー名または一意の Keystone ID をベースに設定されるように Keystone との統合を設定できます。どちらの方法でも、ユーザーは Keystone ユーザー名およびパスワードを入力してログインします。OpenShift Container Platform ユーザーのベースを Keystone ID としない方法がより安全な方法になります。Keystone ユーザーを削除し、そのユーザー名で新規の Keystone ユーザーを作成する場合、新規ユーザーが古いユーザーのリソースにアクセスできる可能性があるためです。

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

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

注記

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

7.2.2. シークレットの作成

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

  • 以下のコマンドを使用して、OpenShift Container Platform シークレットを定義できます。

    $ oc create secret generic <secret_name> --from-literal=clientSecret=<secret> -n openshift-config
  • 以下のコマンドを実行して、証明書ファイルなどのファイルの内容を含む OpenShift Container Platform シークレットを定義できます。

    $ oc create secret generic <secret_name> --from-file=/path/to/file -n openshift-config

7.2.3. ConfigMap の作成

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

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

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

7.2.4. Keystone CR のサンプル

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

Keystone CR

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: keystoneidp 1
    mappingMethod: claim 2
    type: Keystone
    keystone:
      domainName: default 3
      url: https://keystone.example.com:5000 4
      ca: 5
        name: ca-config-map
      tlsClientCert: 6
        name: client-cert-secret
      tlsClientKey: 7
        name: client-key-secret

1
このプロバイダー名は、プロバイダーのユーザー名にプレフィックスとして付加され、アイデンティティー名が作成されます。
2
このプロバイダーのアイデンティティーとユーザーオブジェクト間にマッピングが確立される方法を制御します。
3
Keystone のドメイン名です。Keystone では、ユーザー名はドメインに固有の名前です。単一ドメインのみがサポートされます。
4
Keystone サーバーへの接続に使用する URL です (必須) 。https を使用する必要があります。
5
オプション: 設定済みの URL のサーバー証明書を検証するために使用する PEM エンコードされた認証局バンドルを含む OpenShift Container Platform ConfigMap への参照。
6
オプション: 設定済み URL への要求を実行する際に存在させるクライアント証明書を含む OpenShift Container Platform シークレットへの参照。
7
クライアント証明書のキーを含む OpenShift Container Platform シークレットへの参照。tlsClientCert が指定されている場合には必須になります。

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

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

前提条件

  • 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. アイデンティティープロバイダーのユーザーとしてクラスターにログインし、プロンプトが出されたらパスワードを入力します。

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

    $ oc whoami