11.2.11. ドメインの作成: LDAP

LDAP ドメインとは、単に SSSD が LDAP ディレクトリを識別プロバイダーとして使用すると言う意味です(そして、オプションとして認証プロバイダーとしても)。SSSD は数種の主要なディレクトリサービスをサポートします:
  • Red Hat ディレクトリサーバー
  • OpenLDAP
  • Identity Management (IdM または IPA)
  • Microsoft Active Directory 2008 R2

注記

一般的な LDAP ID プロバイダーで利用可能なパラメーターはすべて、このサブセットである Identity Management および Active Directory ID プロバイダーでも利用可能です。

11.2.11.1. LDAP ドメイン設定用のパラメータ

LDAP ディレクトリーは、ID プロバイダーとしても認証プロバイダーとしても機能することができます。この設定には LDAP サーバー内のユーザーディレクトリーを特定し、これに接続するための十分な情報が必要ですが、これらの接続パラメーターの定義方法は柔軟なものです。
LDAP サーバーへの接続に使用するためのユーザーアカウントの指定や、パスワード操作に他の LDAP サーバーの使用などよりきめ細かい制御を提供するために他のオプションも利用可能です。最も一般的なオプションは 表11.8「LDAP ドメイン設定のパラメータ」 に一覧表示してあります。

注記

他にも多くのオプションが LDAP ドメイン設定用の man ページ内に一覧表示されています。sssd-ldap(5)

表11.8 LDAP ドメイン設定のパラメータ

パラメーター 詳細
ldap_uri SSSD の接続先である LDAP サーバーの URI をカンマ区切りの一覧で提供します。この一覧は設定により順序を指定できるため、一覧内の最初のサーバーが最初に試行されるようにできます。サーバーを追加して一覧表示しておくとフェイルオーバー保護を提供できます。これがない場合は、DNS SRV レコードから検出可能です。
ldap_search_base LDAP ユーザー操作の実行のために使用するベース DN を提供します。
ldap_tls_reqcert TLS セッションで SSL サーバー証明書のチェックの仕方を指定します。4つのオプションがあります:
  • never は証明書への要求を無効にします。
  • allow は証明書を要求しますが、証明書が無くても、または不正な証明書が与えられても通常に進行します。
  • try は証明書を要求して証明書が与えられなくても通常に進行します。不正な証明書が与えられた場合は、セッションは終了します。
  • demandhard は同じオプションです。有効な証明書を要求して、それがないとセッションは終了します。
デフォルトは hard です。
ldap_tls_cacert SSSD が認識するすべての CA 用の CA 証明書を含んでいるファイルに完全なパスとファイル名を渡します。SSSD はこれらの CA によって発行された証明書はどれも受理します。
これが明示的に与えられていない場合は、OpenLDAP システムのデフォルトを使用します。
ldap_referrals SSSD が LDAP 参照を使用するかどうかをセットします。このことは1つの LDAP データベースから別の LDAP データベースにクエリを転送することを意味します。SSSD はデータベースレベルの参照とサブツリーの参照をサポートします。同一の LDAP サーバー内の参照には、SSSD はクエリされているエントリの DN を調節します。異なる LDAP サーバーに行く参照には、SSSD は DN 上で完全なマッチを行います。この値を true に設定すると、参照を有効にします。これが、デフォルトです。
参照は、追跡を試みる時間のために、全体的なパフォーマンスにマイナスの影響を与える場合があります。参照のチェックを無効にすると、パフォーマンスは大幅に改善します。
ldap_schema ユーザーエントリーの検索の際に使用するスキーマのバージョンを設定します。可能なのは、rfc2307rfc2307bisadipa です。デフォルトは、rfc2307 です。
RFC 2307 では、グループオブジェクトは複数値の属性である memberuid を使用しますが、これはそのグループに所属するユーザーの名前を一覧表示します。RFC 2307bis では、グループオブジェクトは member 属性を使用しますが、これはユーザーまたはグループエントリの完全識別名 (DN) を含んでいます。RFC 2307bis は、member 属性を使用している入れ子グループ (nested groups) を可能にします。これらの異なるスキーマがグループメンバーシップについて異なる定義を使用するため、SSSD において間違えた LDAP スキーマの使用は、適切な権限がある場合でもネットワークリソースの表示と管理の両方に影響を及ぼします。
例えば、RFC 2307bis の使用では、すべてのグループは入れ子グループ、あるいはプライマリ/セカンダリグループの使用時に返されます。
$ id
uid=500(myserver) gid=500(myserver) groups=500(myserver),510(myothergroup)
SSSD が RFC 2307 スキーマを使用している場合は、プライマリグループのみが返されます。
この設定は SSSD がグループメンバーを決定する方法にのみ影響します。実際のユーザーデータは変更しません。
ldap_search_timeout LDAP 検索がキャンセルになるまでに実行してキャッシュ化した結果が返される時間の長さを秒でセットします。enumerate 値が「false 」の時はデフォルトでは 5 であり、enumerate が「true」の時はデフォルトは 30 になります。
LDAP 検索がタイムアウトになると、SSSD は自動的にオフラインモードに切り替わります。
ldap_network_timeout 接続試行が失敗した後に SSSD が LDAP サーバーへ投票を試みる時間の長さを秒でセットします。デフォルトは6秒です。
ldap_opt_timeout サーバーから反応が受信されない場合に同期 LDAP 操作が中止されるまでの時間の長さを秒でセットします。このオプションは、SASL バインドの場合に KDC との通信時のタイムアウトも制御します。デフォルトは5秒です。

11.2.11.2. LDAP ドメインの例

LDAP 設定は、ユーザー特定の環境と SSSD の動作に応じてかなり柔軟になります。以下は LDAP ドメインの一般的な例の一部ですが、SSSD 設定はこれらの例に限られるものではありません。

注記

ドメインエントリの作成と並行して、SSSD 用のドメインの一覧へ新規ドメインを追加してsssd.conf ファイル内でクエリをします。例えば:
domains = LOCAL,LDAP1,AD,PROXYNIS

例11.2 基本的 LDAP ドメインの設定

LDAP ドメインは3つの項目を要求します:
  • LDAP サーバー
  • 検索ベース
  • 安全な接続を確立する手段
最後の項目は LDAP 環境に左右されます。SSSD は機密情報を取り扱うため安全な接続を必要とします。この接続は専属の TLS/SSL 接続であるか、あるいは Start TLS を使用することができます。
専属の TLS/SSL 接続の使用は単に LDAPS 接続を使用してサーバーに接続します。そのため、ldap_uri オプションの一部として設定されています:
# An LDAP domain
[domain/LDAP]
enumerate = false
cache_credentials = true

id_provider = ldap
auth_provider = ldap

ldap_uri = ldaps://ldap.example.com:636
ldap_search_base = dc=example,dc=com
Start TLS の使用には、安全でないポート上で動的に安全な接続を確立するために証明書情報を入力する手段が必要になります。これは、ldap_id_use_start_tls オプションで Start TLS を使用することと、ldap_tls_cacert で SSL サーバー証明書を発行した CA 証明書を識別することで達成できます。
# An LDAP domain
[domain/LDAP]
enumerate = false
cache_credentials = true

id_provider = ldap
auth_provider = ldap

ldap_uri = ldap://ldap.example.com
ldap_search_base = dc=example,dc=com
ldap_id_use_start_tls = true
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/pki/tls/certs/ca-bundle.crt