Pivotal Knowledge Base

フォローする

Pivotal Cloud Foundry® の LDAP 連携設定

目的

Pivotal Cloud Foundry®(PCF)使用の際、既存の LDAP システムと連携することがあり得る。LDAP システムごとに設定等異なるため、既存 LDAP システムを PCF と適切に連携するために若干の設定変更を要する。本記事では、PCF をデプロイする前段階として、LDAP の設定事項を一通り紹介し、必要な情報について追加の詳細事項と設定内容を確認するためのツールについて解説する。

対象製品

PCF 1.3.x - グループ検索未サポート

PCF 1.4.x、1.5.x - グループ検索サポート済み

解説

設定項目

Ops Manager の LDAP 設定画面にて、既存 LDAP システムと連携するために必要な情報の入力を求められる。通例、接続 URL、検索対象アカウントのクレデンシャル、ユーザー検索ベース、ユーザー検索フィルター、グループ検索ベース、グループ検索フィルター、そしてユーザーの電子メールアドレスを格納する属性名を入力する必要がある。  

セキュアーな LDAP 接続のためには、既存サーバーで使用される公開鍵も必要となるかもしれないが、その場合、既存 LDAP サーバーがよく知られた認証局によって署名されていない SSL 証明書(例えば、自身で署名した証明書)を使用している場合のみ必要となる。

特定の設定項目、並びに当該設定項目に入力すべき内容に関してより詳細な情報が必要な場合は、ドキュメントの 25 ページ手順 4. を参照のこと。

LDAP 認証処理

UAA サーバーが LDAP 経由でユーザー認証を行おうとする際、以下の手順で処理を実行する。

  1. 与えられた URL と LDAP クレデンシャルを用いて、LDAP サーバーに接続する。
  2. セキュアーな LDAP に接続する際には、既存 LDAP サーバーの証明書の確認が行われる。これは、URL に指定されたサーバー名と適合する必要があり、またこの認証を通すにはよく知られた認証局によって署名されている必要がある。設定で 既存 LDAP サーバー対して SSL 証明書を指定すると、それがよく知られた認証局によって署名されていなくても、署名されたものとして見なされる。これは、既存サーバーが列挙された証明書を使用し、それがよく知られた認証局によって署名されていなくても、認証が通ることを意味する(ただし、依然として、URL のサーバー名と列挙された証明書のものとは一致させる必要があることに注意)。
  3. 与えられた LDAP 検索フィルターを用いた検索ベースから始まる LDAP 検索を実行する。この中で、ログイン時にユーザーより与えられたユーザー名で検索し、LDAP サーバー上で当該ユーザーを見つけようとする。
  4. 手順 3. が成功すると、UAA は、見つかったユーザーで、LDAP サーバーに紐付けるよう試みる。これが成功すると、当該ユーザーは認証されたことになる。
  5. ユーザーが最初に認証する際に、ユーザー名と電子メールアドレス(LDAP の email 属性からロードされる)を元に、UAA は UAA データベース上にシャドーユーザーを生成する。そのシャドーユーザーは、"LDAP" を起点としているので、すでに同一のユーザー名があったとしても競合は発生しない(UAA で手動で生成されたユーザーは、"UAA" が起点とされる)。

UAA が、LDAP サーバーに問い合わせる前にユーザー情報を当該 UAA 内部データベースに対して検索を行うことで LDAP 認証を行わない場合がある。これは、もしユーザーが UAA データベース内に存在し、入力されたパスワードが UAA 起点のものと一致した場合、LDAP 認証処理を中止し LDAP には問い合わせないことを意味する。

LDAP グループマッピング

ユーザーが認証された後、UAA はユーザーに割り当てられたロールを見つけようとする。これは、指定されたグループ検索ベースとグループ検索フィルターを元に行われる。UAA は、それらをユーザー検索ベース・フィルターと同様に取り扱うが、認証ユーザーと LDAP グループを紐付けるために使用する。任意のグループが見つかった場合は、UAA は当該 LDAP グループに UAA における権限スコープを紐付けようとする。それが成功すると、ユーザーは追加で当該スコープに基づく権限が付与される。失敗した場合は、ユーザーは単に標準スコープに基づく権限が与えられる。

LDAP 検索フィルター

LDAP 検索フィルターは上述の検索処理において重要な箇所で、UAA に対して LDAP サーバー上でユーザーを発見する方法を指示するものである。また、ユーザーが PCF にログオンする際に入力するユーザー名のフォーマットを定義するものでもある。例えば、ユーザーはユーザー名として電子メールアドレスを入力する必要があるのか、あるいは任意のユーザー名で良いのかといった定義を可能とする。PCF においては、ユーザー名として電子メールアドレスでユーザー認証するよう検索フィルターを設定することを推奨する(理由については、「影響・リスク」の項目を参照)が、必須ではない。

LDAP 検索フィルターのテスト

PCF の LDAP 設定画面で、指定された LDAP URL とクレデンシャルが有効であるか確認が行われる一方、指定された LDAP 検索フィルターに対しては行われない。したがって、検索フィルターに使用する正確な値を完全に把握していない場合は、設定に若干の困難を伴う。

以下、必要最低限のツールのインストールで、LDAP ユーザー・グループに対する検索フィルターのテストを可能とする方法を示す。

  1. Ops Manager VM にログオンする。
  2. コマンドラインより、`sudo apt-get install ldap-utils` を実行する。これにより、 `ldapsearch` ユーティリティーがインストールされる。このコマンドは、本テストを行うため一度だけ実行すればよいものである。
  3. コマンドラインより、`ldapsearch -H "<LDAP URI>" -D "<検索対象ユーザー>" -W -b "<検索ベース>" '<フィルター>'` を実行する。ただし、`<..>` の箇所にはそれぞれ、PCF の LDAP 設定画面で入力した内容に置き換える。

    例:  LDAP ユーザ−検索フィルター = 'mail={0}'

        ldapsearch -H "ldap://my-server:389" -D "cn=user,ou=users,dc=example,dc=com" -W -b "ou=users,dc=example,dc=com" 'mail=user@your-company.com'

    例:  LDAP グループ検索フィルター = 'member={0}'

        ldapsearch -H "ldap://my-server:389" -D "cn=user,ou=users,dc=example,dc=com" -W -b "ou=groups,dc=example,dc=com" 'member=uid=some.user,ou=users,dc=example,dc=com'

    注意:  ユーザー検索フィルターに対しては、'{0}' ではなく直接ユーザー名でテストを行うこと。'{0}' は UAA が入力されたユーザー名に置き換える箇所である。グループ検索古田ーに対しては、テストユーザーの完全 DNを使用し、'{0}' は使用しない。'{0}' は UAA が認証ユーザーの完全 DN に置き換える箇所である。ldapsearch ユーティリティーはこれらの置き換え処理は行わないので、手動で置き換える必要がある。

上述の手順 3. でコマンドを実行すると、LDAP 検索ユーザーのパスワードの入力を促される。これに対しては、PCF LDAP 設定画面で入力するパスワードを指定する。このパスワード認証が行われた後、ldapsearch コマンドは、検索ベースから指定した検索フィルターを適用し、LDAP ディレクトリーツリーに対して再帰的に検索を行う。  

指定した検索フィルターが期待通りに動作すれば、ユーザーの LDAP レコードが返される。ユーザーレコードが返らない場合は、指定して検索フィルターが検索対象ユーザーに対して合致していないので、調整する必要がある。

ユーザー検索で複数のレコードが返ってきた場合も、認証が失敗する可能性があるので、フィルターを調整する必要がある。ユーザー検索フィルターは単一のレコードのみを返す必要がある。グループ検索フィルター適用で複数のレコードが返ってくるのは問題はない。

影響・リスク

PCF 1.3.x においては、電子メールアドレス以外の属性を使用して LDAP 検索フィルターを設定すると、招待システムが適切に動作しない。招待機能をサポートするために、ユーザーログインは電子メールアドレスで行うことを前提に LDAP 検索フィルターを設定する必要がある。

PCF 1.4 においては、LDAP 検索グループを設定しなくてはいけない。LDAP グループ検索を設定していない場合は、ログイン機能に影響を及ぼす可能性がある。詳細については、リンク先のナレッジベースを参照すること。

コメント

Powered by Zendesk