Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

13.3.6. Keystone

Keystone は、アイデンティティー、トークン、カタログ、およびポリシーサービスを提供する OpenStack プロジェクトです。OpenShift Container Platform クラスターと Keystone を統合すると、内部データベースにユーザーを格納するように設定された OpenStack Keystone v3 サーバーによる共有認証を有効にできます。この設定により、ユーザーは Keystone 認証情報を使って OpenShift Container Platform にログインできます。

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

13.3.6.1. マスターでの認証の設定

  1. 状況に応じて以下のいずれかの手順を実行します。

    • Openshift のインストールがすでに完了している場合は、/etc/origin/master/master-config.yaml ファイルを新規ディレクトリーにコピーします。 以下は例になります。

      $ cd /etc/origin/master
      $ mkdir keystoneconfig; cp master-config.yaml keystoneconfig
    • OpenShift Container Platform をまだインストールしていない場合は、OpenShift Container Platform API サーバーを起動し、(将来の) OpenShift Container Platform マスターのホスト名と、起動コマンドによって作成された設定ファイルを格納するディレクトリーを指定します。

      $ openshift start master --public-master=<apiserver> --write-config=<directory>

      以下に例を示します。

      $ openshift start master --public-master=https://myapiserver.com:8443 --write-config=keystoneconfig
      注記

      Ansible を使用してインストールする場合は、identityProvider 設定を Ansible Playbook に追加する必要があります。Ansible を使用してインストールした後、以下の手順に従って設定を手動で変更した場合、インストールツールまたはアップグレードを再実行するたびに変更内容がすべて失われます。

  2. 新規の keystoneconfig/master-config.yaml ファイルの identityProviders スタンザを編集し、KeystonePasswordIdentityProvider の設定例をコピーして貼り付け、既存のスタンザを置き換えます。

    oauthConfig:
      ...
      identityProviders:
      - name: my_keystone_provider 1
        challenge: true 2
        login: true 3
        mappingMethod: claim 4
        provider:
          apiVersion: v1
          kind: KeystonePasswordIdentityProvider
          domainName: default 5
          url: http://keystone.example.com:5000 6
          ca: ca.pem 7
          certFile: keystone.pem 8
          keyFile: keystonekey.pem 9
          useKeystoneIdentity: false 10
    1
    このプロバイダー名は、プロバイダーのユーザー名に接頭辞として付加され、アイデンティティー名が作成されます。
    2
    true の場合、非 Web クライアント (CLI など) からの認証されていないトークン要求は、このプロバイダーの WWW-Authenticate challenge ヘッダーと共に送信されます。
    3
    true の場合、Web クライアント (Web コンソールなど) からの認証されていないトークン要求は、このプロバイダーがサポートするログインページにリダイレクトされます。
    4
    このプロバイダーのアイデンティティーとユーザーオブジェクト間のマッピングの確立方法を制御します (上記 を参照してください)。
    5
    Keystone のドメイン名です。Keystone では、ユーザー名はドメインに固有の名前です。単一ドメインのみがサポートされます。
    6
    Keystone サーバーへの接続に使用する URL です (必須) 。
    7
    オプション: 設定された URL のサーバー証明書を検証するために使用する証明書バンドルです。
    8
    オプション: 設定された URL に対して要求を実行する際に提示するクライアント証明書です。
    9
    クライアント証明書のキーです。certFile が指定されている場合は必須です。
    10
    true の場合、ユーザーが Keystone ユーザー名ではなく、Keystone ID で認証されていることを示します。ユーザー名で認証する場合は false に設定されます。
  3. 以下の変更を identityProviders スタンザに加えます。

    1. プロバイダーの name (my_keystone_provider) を、使用する Keystone サーバーに合わせて変更します。この名前は、プロバイダーのユーザー名に接頭辞として付加され、アイデンティティー名が作成されます。
    2. 必要な場合、mappingMethod を変更 して、プロバイダーのアイデンティティーとユーザーオブジェクト間でマッピングを確立する方法を制御します。
    3. domainName を OpenStack Keystone サーバーのドメイン名に変更します。Keystone では、ユーザー名はドメイン固有です。単一ドメインのみがサポートされます。
    4. OpenStack Keystone への接続に使用する url を指定します。
    5. オプションとして、Keystone ユーザー名ではなく Keystone ID でユーザーを認証するには、useKeystoneIdentitytrue に設定します。
    6. オプションで、設定された URL のサーバー証明書を検証できるように ca を使用する証明書バンドルに変更します。
    7. オプションで、certFile を、設定された URL に対する要求の実行時に提示するクライアント証明書に変更します。
    8. certFile が指定されている場合は、keyFile をクライアント証明書のキーに変更する必要があります。
  4. 変更を保存してファイルを閉じます。
  5. OpenShift Container Platform API サーバーを起動し、変更したばかりの設定ファイルを指定します。

    $ openshift start master --config=<path/to/modified/config>/master-config.yaml

設定が完了すると、OpenShift Container Platform Web コンソールにログインするすべてのユーザーに Keystone 認証情報を使用してログインすることを求めるプロンプトが出されます。