Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

13.3.8. Basic 認証 (リモート)

Basic 認証は、ユーザーがリモートのアイデンティティープロバイダーに対して検証した認証情報を使用して OpenShift Container Platform にログインすることを可能にする汎用バックエンド統合メカニズムです。

Basic 認証は汎用性があるため、このアイデンティティープロバイダー使用して詳細な認証設定を実行できます。詳細なリモート Basic 認証設定の開始点として、LDAP フェイルオーバー を設定したり、コンテナー化された Basic 認証 リポジトリーを使用できます。

注意

Basic 認証では、ユーザー ID とパスワードのスヌーピングを防ぎ、中間者攻撃を回避するためにリモートサーバーへの HTTPS 接続を使用する必要があります。

BasicAuthPasswordIdentityProvider を設定していると、ユーザーはユーザー名とパスワードを OpenShift Container Platform に送信し、サーバー間の要求を行い、認証情報を Basic 認証ヘッダーとして渡すことで、これらの認証情報をリモートサーバーに対して検証することができます。このため、ユーザーはログイン時に認証情報を OpenShift Container Platform に送信する必要があります。

注記

これはユーザー名/パスワードログインの仕組みにのみ有効で、OpenShift Container Platform はリモート認証サーバーに対するネットワーク要求を実行できる必要があります。

identityProviders スタンザで BasicAuthPasswordIdentityProvider を設定し、サーバー間の Basic 認証要求を使用してユーザー名とパスワードをリモートサーバーに対して検証できるようにします。ユーザー名とパスワードは Basic 認証で保護されるリモート URL に対して検証され、JSON を返します。

401 応答は認証の失敗を示しています。

200 以外のステータスまたは空でないエラーキーはエラーを示しています。

{"error":"Error message"}

sub (サブジェクト) キーを持つ 200 ステータスは、成功を示しています。

{"sub":"userid"} 1
1
このサブジェクトは認証ユーザーに固有である必要があり、変更することができません。

正常な応答により、以下のような追加データがオプションで提供されることがあります。

  • name キーを使用した表示名。以下に例を示します。

    {"sub":"userid", "name": "User Name", ...}
  • email キーを使用したメールアドレス。以下に例を示します。

    {"sub":"userid", "email":"user@example.com", ...}
  • preferred_username キーを使用した推奨ユーザー名。これは、固有の変更できないサブジェクトがデータベースキーまたは UID であり、判読可能な名前が存在する場合に便利です。これは、認証されたアイデンティティーの OpenShift Container Platform ユーザーをプロビジョニングする場合にヒントとして使われます。以下に例を示します。

    {"sub":"014fbff9a07c", "preferred_username":"bob", ...}

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

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

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

      $ mkdir basicauthconfig; cp master-config.yaml basicauthconfig
    • 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=basicauthconfig
      注記

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

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

    oauthConfig:
      ...
      identityProviders:
      - name: my_remote_basic_auth_provider 1
        challenge: true 2
        login: true 3
        mappingMethod: claim 4
        provider:
          apiVersion: v1
          kind: BasicAuthPasswordIdentityProvider
          url: https://www.example.com/remote-idp 5
          ca: /path/to/ca.file 6
          certFile: /path/to/client.crt 7
          keyFile: /path/to/client.key 8
    1
    このプロバイダー名は返されるユーザー名に接頭辞として付加され、アイデンティティー名が作成されます。
    2
    true の場合、非 Web クライアント (CLI など) からの認証されていないトークン要求は、このプロバイダーの WWW-Authenticate challenge ヘッダーと共に送信されます。
    3
    true の場合、Web クライアント (Web コンソールなど) からの認証されていないトークン要求は、このプロバイダーがサポートするログインページにリダイレクトされます。
    4
    このプロバイダーのアイデンティティーとユーザーオブジェクト間のマッピングの確立方法を制御します (上記 を参照してください)。
    5
    Basic 認証ヘッダーで認証情報を受け入れる URL。
    6
    オプション: 設定された URL のサーバー証明書を検証するために使用する証明書バンドルです。
    7
    オプション: 設定された URL に対して要求を実行する際に提示するクライアント証明書です。
    8
    クライアント証明書のキーです。certFile が指定されている場合は必須です。

    以下の変更を identityProviders スタンザに加えます。

    1. プロバイダーの name をデプロイメントに対して固有で関連するものに設定します。この名前は返されるユーザー ID に接頭辞として付加され、アイデンティティー名が作成されます。
    2. 必要な場合、mappingMethod を設定 して、プロバイダーのアイデンティティーとユーザーオブジェクト間でマッピングを確立する方法を制御します。
    3. Basic 認証ヘッダーで認証情報を受け入れるサーバーへの接続に使用する HTTPS url を指定します。
    4. オプションで、設定された URL のサーバー証明書を検証するために ca を使用する証明書バンドルに設定するか、またはこれを空にしてシステムで信頼されるルートを使用します。
    5. オプションで、certFile を削除するか、またはこれを設定された URL へ要求を行う時に提示するクライアント証明書に設定します。
    6. certFile を指定する場合、keyFile をクライアント証明書のキーに設定する必要があります。
  3. 変更を保存してファイルを閉じます。
  4. OpenShift Container Platform API サーバーを起動し、変更したばかりの設定ファイルを指定します。

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

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