第4章 ディレクトリサービス LDAP

目次

4.1. LDAP と NIS
4.2. LDAP のディレクトリツリー構造
4.3. YaST を利用した LDAP サーバの設定
4.4. YaST を利用した LDAP クライアントの設定
4.5. YaST による LDAP ユーザとグループの設定
4.6. LDAP ディレクトリツリーの参照
4.7. LDAP サーバの手動設定
4.8. LDAP データの手作業での管理
4.9. さらなる情報

概要

Lightweight Directory Access Protocol (LDAP) は、ディレクトリ構造の情報に アクセスしたり、それらを管理したりするためのプロトコル集です。 LDAP は ユーザやグループの管理に利用できるほか、システム設定の管理やアドレスの 管理などに利用できます。本章では、 OpenLDAP の動作に関する基礎知識と、 YaST を利用した場合の LDAP データの管理方法について述べています。

ネットワークを利用する環境では、重要な情報を構造的に管理し、素早く提供する ことが必須の要件となります。いわゆる電話帳のようなディレクトリサービスでは、 情報をうまく分類し、読みやすく探しやすい形式で保存します。

理想的には中央のサーバのディレクトリ内にデータを保管し、すべてのクライアント に対して、うまく設計されたプロトコルを利用して配布する、という形式を取ること でしょう。また、データが構造化されていることにより、様々なアプリケーション から幅広くアクセスできるようになります。さらに、データの保管を中央に集める ことで、管理にかかる手間を省くことができます。 LDAP のようなオープンで標準化 されたプロトコルを利用することで、数多くのクライアントアプリケーションから これらの情報にアクセスできます。

本章でディレクトリとは、読み込みや検索の速度や、その効率に重点を置いた データベースのことを指しています:

LDAP のようなディレクトリサービスはその設計上、複雑な更新や問い合わせの 仕組みを備えているわけではありません。すべてのアプリケーションからの アクセスが素早く簡単に完了するように作られています。

4.1. LDAP と NIS

Unix システムの管理者は従来、 NIS (Network Information Service) を利用 してネットワーク内での名前解決とデータ配布を行なっていました。 /etc ディレクトリ内にある group, hosts, mail, netgroup, networks, passwd, printcap, protocols, rpc, services の各ファイルには設定データが含まれていて、 クライアントに対してネットワーク経由で配布を行なっていました。これらの ファイルはシンプルなテキストファイルであるため、特に労を要することなく 管理することができていましたが、大規模な環境では構造が複雑化してしまい、 難易度を大きく押し上げることになっていました。また、 NIS は Unix プラットフォームにしか対応しておらず、異なる OS が混在するような ネットワークでの集中型管理ツールとしては不適切でした。

NIS とは異なり、 LDAP サービスは純粋な Unix ネットワークに制限される ようなことはありません。 Windows サーバ (Windows 2000 以降) では LDAP をディレクトリサービスとして利用することができますし、上記のような アプリケーションも非 Unix システムで対応するようになっています。

LDAP の考え方は、集中管理型のデータ構造であればどのようなものにでも 適用することができるものです。たとえば下記のような使い方が考えられます:

  • NIS サービスの代替

  • メールの経路制御 (postfix, sendmail)

  • メールクライアント (Mozilla, Evolution, Outlook) 向けのアドレス帳

  • BIND9 ネームサーバのゾーン定義の管理

  • 異種混在型のネットワーク内で使用される Samba のユーザ認証

LDAP は NIS とは異なり拡張性に富んだ構造になっているため、上記に限らず 数多くの用途に使用する子ができます。また、わかりやすく設計された階層 構造型のデータ構造は、巨大なデータ量の管理を行ないやすくする効果が あるばかりか、検索もより容易になります。

4.2. LDAP のディレクトリツリー構造

LDAP サーバがどのように動作するのかと、どのようにデータを保管するのかに ついて、背景となる知識を得るには、サーバ上でのデータ保持方法のほか、この ようなデータ構造をどのように扱えば高速に検索できるのかを理解しておくこと が必要不可欠です。 LDAP の構築を正しく行なうには、基本的な LDAP 用語に ついても慣れておく必要があります。この章では、 LDAP のディレクトリ構造に 関する基本的な構造のほか、 LDAP に関する基本的な用語説明を行なっています。 既に LDAP に関する基礎知識をお持ちであり、 openSUSE における LDAP 環境の構築方法について知りたい場合は、本章は読み飛ばしてかまいません。 それぞれ 4.3項 「YaST を利用した LDAP サーバの設定」4.7項 「LDAP サーバの手動設定」 をお読みください。

LDAP ディレクトリはツリー状の構造になっています。ディレクトリ内のすべての 項目 (オブジェクトと呼びます) には、このツリー構造内の場所が定義されます。 このような構造を ディレクトリ情報ツリー (DIT; Directory Information Tree) と呼びます。また、特定の項目に対するツリー構造 上の完全な位置 (略したり相対的に記述したりしないもの) を、 識別名 (DN; Distinguished Name) と呼びます。逆に特定の 項目に対して単一の階層だけを示すものを、 相対識別名 (RDN; Relative Distinguished Name) と呼びます。

LDAP のディレクトリツリーにおける関係は、 図4.1「LDAP ディレクトリの構造」 の例をご覧ください。

図4.1 LDAP ディレクトリの構造

LDAP ディレクトリの構造

上記の図は架空の企業を例にしたディレクトリ構造を示しています。項目は 3 段階の階層から構成されていて、 1 つの項目を 1 つの箱で示しています。 たとえば Geeko Linux という 架空の従業員に対する、正しい 識別名 (DN) は、 この例では cn=Geeko Linux,ou=doc,dc=example,dc=com という書き方になります。これは階層構造の上位に対する識別名 ou=doc,dc=example,dc=com に対して、相対識別名 cn=Geeko Linux を前に追加したものになります。

DIT 内に保管できるオブジェクトの種類は、 スキーマ と呼ばれるものに従って決定されます。また、オブジェクトの種類は オブジェクトクラス で決定されます。これは、 そのオブジェクトに対してどのような属性を割り当てなければならないのか、 もしくは割り当てることができるのかを決めるものです。そのためスキーマは、 特定の用途に適合するすべてのオブジェクトクラスや属性に関する定義を含んで いなければならないことになります。スキーマにはいくつか汎用的なもの (RFC 2252, 2256 をお読みください) もあります。また LDAP の RFC でも、 いくつか一般的に使用されるスキーマが定義されています (RFC 4519 など) 。 それ以外にも、様々な用途に合わせたスキーマも存在している (たとえば Samba や NIS の代替など) ほか、独自のスキーマを作成したり、必要であれば 複数のスキーマを相互に補完させる目的で使用したりすることもできます。

表4.1「よく使用されるオブジェクトクラスと属性」 には、 core.schemainetorgperson.schema で提供されているオブジェクト クラスについて、その概要と使用例、必要な属性と有効な属性値の一覧が書かれています。

表4.1 よく使用されるオブジェクトクラスと属性

オブジェクトクラス

意味

項目例

必要な属性

dcObject

domainComponent (ドメインの名前部分)

example

dc

organizationalUnit

organizationalUnit (団体単位)

doc

ou

inetOrgPerson

inetOrgPerson (イントラネットやインターネットの 個人関連データ)

Geeko Linux

sn および cn


また、 例4.1「schema.core からの抜粋」 では、スキーマからの 抜粋と、その説明が書かれています。

例4.1 schema.core からの抜粋

attributetype (2.5.4.11 NAME ( 'ou' 'organizationalUnitName') 1
       DESC 'RFC2256: organizational unit this object belongs to' 2
       SUP name ) 3

...
objectclass ( 2.5.6.5 NAME 'organizationalUnit' 4
       DESC 'RFC2256: an organizational unit' 5
       SUP top STRUCTURAL 6
       MUST ou 7
MAY (userPassword $ searchGuide $ seeAlso $ businessCategory 8
  $ x121Address $ registeredAddress $ destinationIndicator 
  $ preferredDeliveryMethod $ telexNumber 
  $ teletexTerminalIdentifier $ telephoneNumber 
  $ internationaliSDNNumber $ facsimileTelephoneNumber 
  $ street $ postOfficeBox $ postalCode $ postalAddress 
  $ physicalDeliveryOfficeName
  $ st $ l $ description) )
  ...

属性の種類 organizationalUnitName とそれに関連する オブジェクトクラス organizationalUnit は、この例の とおりに動作します。

1

属性の名称と属性に対するユニークな OID (オブジェクト 識別子) (数値) 、そして属性の略称です。

2

DESC には、属性に対する概要説明を記述します。 ベースとしている RFC の番号などを記述します。

3

SUP には、この属性が属する上位の属性名を記述します。

4

ここから organizationalUnit のオブジェクトクラスが 始まります。属性の定義と同じで、 OID とオブジェクトクラスの名称を 記述します。

5

オブジェクトクラスに対する概要説明を記述します。

6

SUP top と記述すると、このオブジェクトクラスには 上位の属性名が存在していないことを指定します。

7

MUST の一覧には、 organizationalUnit という種類を使用した場合に指定しなければならない属性をすべて記述します。

8

MAY の一覧には、このオブジェクトクラスでの指定を許可 する属性をすべて記述します。

スキーマの使用方法について、わかりやすい説明は OpenLDAP のドキュメンテーション (openldap2-doc) 内に用意されています。インストール後、 /usr/share/doc/packages/openldap2/adminguide/guide.html (英語) をお読みください。

4.3. YaST を利用した LDAP サーバの設定

LDAP サーバを設定するには YaST を使用します。 LDAP サーバの一般的な 用途としては、ユーザアカウントのデータやメールサーバ/DNS サーバ/DHCP サーバの設定などがあります。

図4.2 YaST LDAP サーバ設定

YaST LDAP サーバ設定

図4.3 YaST LDAP サーバ—新しいデータベース

YaST LDAP サーバ—新しいデータベース

ユーザアカウントデータを保管するために LDAP サーバを設定するには、まず yast2-ldap-serveropenldap2 の各パッケージがインストールされていることを確認してください。その後、 下記の手順を実施します:

  1. YaST を root で起動し、 ネットワークサービス+LDAP サーバ を選択します。 すると設定ウイザードが表示されます。

  2. まずは LDAP サーバの 一般設定 を行ないます。 図4.2「YaST LDAP サーバ設定」 をご覧ください:

    1. LDAP を起動するように設定します。

    2. LDAP サーバを SLP でアナウンスするように設定するには、 SLP デーモンに登録 にチェックを入れます。

    3. ファイアウオールの設定 で必要な設定を行ないます。

    4. 次へ を押します。

  3. 次にサーバの種類を選択します: 単独サーバ, レプリケーション設定 内でのマスターサーバ, レプリカ (スレーブ) サーバの中から選択します。

  4. さらにセキュリティオプションを設定します (TLS 設定) 。

    なお、 TLS を有効にする を選択して、 TLS を有効にして おくことを強くお勧めします。詳しくは ステップ 4 をお読みください。

    [Warning]パスワードの暗号化について

    TLS による暗号化を行なうと、ネットワーク上にパスワードを流す際、 それらを暗号化することになります。このオプションを有効にしない場合は、 パスワードが暗号化されずに送信されてしまいます。

    また、必要であれば LDAP over SSL と証明書の設定を行ないます。

  5. さらに 基本的なデータベースの設定 に移動します。 ここでは LDAP 管理者パスワード とその確認欄に入力を 行ない、 次へ を押します。詳しくは 図4.3「YaST LDAP サーバ—新しいデータベース」 をご覧ください。

  6. 最後に LDAP サーバの設定概要 に表示された内容を 確認し、 完了 を押すと設定ウイザードを終了する ことができます。

図4.4 YaST LDAP サーバ設定

YaST LDAP サーバ設定

設定の変更や追加を行なう場合は、 LDAP サーバモジュールを再度起動し、 左側のペインで グローバル設定 を選択します。 詳しくは 図4.4「YaST LDAP サーバ設定」 をご覧ください:

  1. ログレベルの設定 では、 LDAP サーバのログ動作に 関する設定 (ログ出力の頻度に関わる設定) を行なうことができます。 一覧に表示された項目から、ログに出力したいものを選んでください。 選択を増やすほど、ログファイルが大きくなることに注意してください。

  2. サーバ側でどのような接続を許すのかについては、 機能の許可/拒否 で設定を行ないます。下記の ものを選択することができます:

    LDAPv2 バインド要求

    このオプションを選択すると、 LDAP の旧バージョン (LDAPv2) を使用する クライアントからの接続要求 (バインド要求) を受け付けるようになります。

    認証情報が記入されている匿名バインド

    通常 LDAP サーバは、認証情報 (DN またはパスワード) に何も記入されて いない場合、認証を拒否するようになっています。このオプションを選択する と、 DN のないパスワードのみの接続を受け付けるようになります。

    DN が記入されていて認証情報のないバインド

    このオプションを選択すると、 DN は設定されているがパスワードのない (認証情報のない匿名の) 接続を受け付けるようになります。

    未認証時の更新

    このオプションを選択すると、認証情報のない匿名の更新操作を受け付ける ようになります。アクセスは ACL やその他のルールで制限する必要が あります。

  3. 機能の許可/拒否 では、下記のフラグを設定することも できます:

    匿名バインド要求の受け入れを禁止する

    このオプションを選択すると、匿名でのバインド要求を受け入れないように なります。ただし、これは匿名でのディレクトリアクセスを禁止するわけ ではないことに注意してください。

    簡易バインド認証を無効にする

    簡易バインド認証を完全に無効化します。

    StartTLS 操作を受け取った際、セッションに対して匿名状態の強要を禁止する

    このオプションを選択すると、 StartTLS の操作を受け取った際、 サーバ側で認証済みの状態を匿名の状態に戻さないようにします。

    認証したあとは StartTLS を禁止する

    このオプションを選択すると、既に認証が完了している接続に対しては StartTLS を許可しないようになります。

  4. クライアントとサーバの間での暗号化接続を設定するには、 TLS 設定 で行ないます:

    1. クライアントとサーバの間で TLS や SSL による暗号化を有効に するには、 TLS を有効にする を選択します。

    2. 証明書のインポート で証明書の正確な場所を 指定するか、もしくは 共通サーバ証明書の使用 を選択します。今までに共通サーバ証明書を作成していない場合は、 左記のボタンを利用することができませんので、 証明機関管理モジュールの起動 を押して証明書を 作成してください。詳しくは 16.2項 「CA 管理用の YaST モジュール」 をお読みください。

なお、ダイアログの左側のペインで スキーマファイル を選択することで、スキーマファイルをサーバの設定ファイルに含めるように 設定することができます。スキーマファイルの選択の既定値は、 YaST の ユーザアカウントデータのソースを提供するように設定されています。

YaST では、スキーマファイルとして従来の形式 (通常は .schema で終わるファイル) のものを追加できるほか、 OpenLDAP の LDIF スキーマ形式の ものを追加することもできます。

図4.5 YaST LDAP サーバデータベース設定

YaST LDAP サーバデータベース設定

お使いの LDAP サーバで管理するデータベースを設定するには、下記の手順で 行ないます:

  1. ダイアログの左側のペインで、 データベース の項目を 選択します。

  2. 追加 を押してデータベースを追加します。

  3. 下記のとおり必要なデータを入力します:

    ベース DN

    LDAP サーバでのベース DN を入力します。

    管理者 DN

    サーバ管理者の DN を入力します。なお、 ベース DN を追加 を選択した場合は、管理者の cn 部分だけを指定する だけで、残りはシステム側で自動的に設定するようになります。

    LDAP 管理者パスワード

    データベース管理者のパスワードを入力します。

    このデータベースを OpenLDAP クライアント向けの既定値とする

    必要であれば、利便性のためオプションを選択します。

  4. 次のダイアログではレプリケーションの設定を行ないます。

  5. 次のダイアログでは、パスワードポリシーの強制を設定し、 LDAP サーバに 対するセキュリティの強化を設定することができます:

    1. パスワードポリシーを設定できるようにするには、 パスワードポリシーを有効にする を選択します。

    2. 暗号化されていないパスワードに対して、それらをデータベースに追加 したり修正したりする際、事前にハッシュ化する場合は、 平分パスワードをハッシュする を選択します。

    3. ロック (施錠) されたアカウントに対してバインド要求を送信した際、 その旨のエラーメッセージを提供する場合は、 アカウントロック状態を通知する を選択します。

      [Warning]セキュリティの厳しい環境におけるロック済みアカウントについて

      お使いの環境がセキュリティに厳しい環境の場合は、 アカウントロック状態を通知する を選択しては なりません。これは ロックされている ことを示すエラーメッセージを 通知してしまうと、潜在的な攻撃者に対してセキュリティ関連の情報を 公開することになってしまうためです。

    4. 次に既定のポリシーオブジェクトに対する DN を指定します。 YaST が 提案する値以外の DN を使用するには、その旨入力してください。それ以外の 場合は、既定値のまま進めてください。

  6. 最後に 完了 を押すと、データベースの作成作業を 完了することができます。

パスワードポリシーを有効にするように選択していない場合、この時点でサーバ が利用できるようになります。パスワードポリシーを有効にするように選択した 場合は、ここからパスワードポリシーに関する詳細を設定します。また、 存在していないパスワードポリシーのオブジェクトを指定した場合は、 YaST でそれを作成します:

  1. まずは LDAP サーバのパスワードを入力します。左側のペインから データベース を選び、作成したデータベースオブジェクト のツリーを開いていって、 パスワードポリシーの設定 を選択します。

  2. パスワードポリシーを有効にする が選択されていることを 確認し、 ポリシーの編集 を押します。

  3. まずはパスワードの変更ポリシーを設定します:

    1. まずはパスワード履歴に保存するパスワード数を指定します。 保存されたパスワードは、新しいパスワードとして設定することが できなくなります。

    2. また、各ユーザに対して自分自身のパスワードの変更を許可するか、および 管理者によるパスワードリセット時に、パスワード変更を求められるかどうか を設定します。さらに、パスワード変更時に古いパスワードの入力を必要と するかどうかを (任意で) 選択することもできます。

    3. それ以外にも、パスワードに対して品質チェックを行なうかどうか、どの ように行なうのかを設定することもできます。まず最小のパスワード長は、 パスワードの有効性が検証される前に確認される項目です。 確認できないパスワードを受け付ける を選択すると、 品質チェックが実施できない場合にでもパスワードを受け付けるように なります。逆に 確認済みパスワードのみを受け付ける を選択すると、品質テストを通過したもののみを受け付けるようになります。

  4. パスワードの時間制限に関するポリシーは、下記のように設定します:

    1. まずはパスワード使用日数について、最小値と最大値を設定します (最小値の 設定は、パスワードをあまりに頻繁に変更させないためのものです) 。

    2. またパスワードの有効期限について、その警告日数と実際の期限切れを設定 します。

    3. パスワードが恒久的な期限切れになる前に、期限の切れたパスワード の使用を許可する回数を指定します。

  5. 最後にロックアウトポリシーを設定します:

    1. まずはパスワードロックを行なうかどうかを設定します。

    2. 次に、パスワードロックを発動するバインド失敗回数を設定します。

    3. パスワードロックの期間を設定します。

    4. パスワードの失敗をキャッシュ内に保持する期間を設定します。

  6. すべてを設定したら OK を押すと、パスワード ポリシーを保存することができます。

以前に作成したデータベースを編集するには、左側のペインのツリー表示から、 ベース DN を選択します。選択すると右側のペインには、作成したときと似た表示 形態でデータベースが表示されます (ただしベース DN の項目のみ、グレーで 表示されて変更できなくなっています) 。

完了 を押して LDAP のサーバ設定を終了すると、 LDAP サーバに対して基本的な設定が完了します。この設定をさらに詳しく調整 するには、 OpenLDAP の動的な設定バックエンドをご利用ください。

また、 OpenLDAP の動的な設定バックエンドでは、 LDAP データベース内に設定 情報を保管しています。データベースは /etc/openldap/slapd.d 内に存在し、複数の .ldif ファイルから構成されています。 これらのファイルに直接アクセスする必要はありません。設定にアクセスしたい 場合は、 YaST の LDAP サーバモジュール (yast2-ldap-server パッケージ) か、 ldapmodifyldapsearch のような LDAP クライアントツールを利用して行ないます。 OpenLDAP の動的な 設定について、詳しくは OpenLDAP の管理ガイドをお読みください。

4.4. YaST を利用した LDAP クライアントの設定

YaST には LDAP ベースのユーザを管理するためのモジュールが用意されて います。インストール時にこの機能を有効化していない場合は、 ネットワークサービス+LDAP クライアント を選択して、モジュールを起動してください。 YaST では LDAP を動作させるのに必要な PAM の有効化作業と NSS 関連の変更、および必要な ファイルのインストールまでを自動的に行ないます。後は単純にサーバに対する 接続設定を行なうことで、 YaST はユーザを LDAP 経由で管理するようになります。 基本的な設定方法は 4.4.1項 「基本的な設定」 で説明しています。

YaST の LDAP クライアント機能を利用することで、 YaST のユーザとグループ の設定モジュール側でも設定を行なうことができるようになります。これには新規に 作成するユーザやグループに対する既定値の変更のほか、ユーザやグループに割り 当てる属性値などを設定することができます。 LDAP のユーザ管理では、通常の ユーザやグループの管理機能よりも多くの種類の属性を、ユーザやグループに対して 設定することができます。こちらについて、詳しくは 4.4.2項 「YaST ユーザとグループの管理モジュールの設定」 をお読みください。

4.4.1. 基本的な設定

インストール時に LDAP によるユーザ管理を選択した場合や、インストール済みの システムで YaST のコントロールセンターから、 ネットワークサービス+LDAP クライアント を選択すると、 LDAP クライアントの基本設定ダイアログ (図4.6「YaST: LDAP クライアントの設定」) が表示されます。

図4.6 YaST: LDAP クライアントの設定

YaST: LDAP クライアントの設定

お使いのマシンで、 OpenLDAP サーバを利用したユーザ認証とユーザ管理を 行なうには、下記の手順を実施します:

  1. LDAP を使用するには、まず LDAP を使用する を選択 します。 LDAP を認証には使用するものの、他のユーザがこのクライアントに ログインできないようにするには、 LDAP を使用するがログインは禁止する を選択します。

  2. 使用する LDAP サーバの IP アドレスを入力します。

  3. LDAP サーバ上での検索ベースを設定するには、 LDAP ベース DN に入力します。ベース DN を自動的に取得させたい場合は、 DN の取得 を押します。このボタンを押すと、 YaST は上記でアドレスを設定した LDAP サーバに対してデータベースを検索します。 あとは検索結果が表示されますので、ここから適切なベース DN を選択します。

  4. サーバとの通信を TLS や SSL で保護する必要がある場合は、 LDAP TLS/SSL を選択します。特定の URL から PEM 形式で証明書をダウンロードしたい場合は、 証明機関の証明書をダウンロード を押します。

  5. リモートで管理されている /home が存在する ような環境の場合は、 automounter を起動 を選択します。

  6. 初回のユーザログイン時に、自動的にユーザのホームディレクトリを 作成するには、 ログイン時にホームディレクトリを作成 を選択します。

  7. 最後に OK を押し、設定を適用します。

管理者としてサーバ上のデータを修正するには、 詳細設定 を押します。 図4.7「YaST: 詳細設定」 のダイアログは、 2 つの タブから構成されています。

図4.7 YaST: 詳細設定

YaST: 詳細設定

  1. クライアント設定 のタブでは下記の設定を行なうことができます:

    1. LDAP ベース DN で指定した DN とは異なる検索ベース をユーザやパスワード、グループに対して設定するには、それぞれ ユーザマップ, パスワードマップ, グループマップ で設定します。

    2. 次にパスワードの変更プロトコルを設定します。パスワードを変更する 場合の標準的なプロトコルは crypt です。 これは crypt で生成されたパスワード ハッシュを利用する意味になります。詳細やその他のオプションについては、 pam_ldap のマニュアルページをお読みください。

    3. 使用する LDAP グループについては、 グループメンバー属性 を利用します。既定値は member です。

    4. 証明書確認に暗号化の接続が必要となる場合は、 証明機関の証明書ファイル で PEM 形式のファイルを 指定するか、もしくは証明書のあるディレクトリを指定します。

    5. お使いの LDAP サーバが現在も LDAPv2 を使用している場合は、 LDAP バージョン 2 を選択して LDAPv2 を使用するように します。

  2. 管理設定 では下記の設定を行なうことができます:

    1. まずはユーザ管理データを保存するベース DN を、 設定のベース DN で指定します。

    2. 次に 管理者 DN に適切な値を代入します。 特定のユーザに対して LDAP サーバ内に保管されたデータを操作できる ようにするため、 /etc/openldap/slapd.conf 内の rootdn の値と同じでなければなりません。ここには 完全 DN (例: cn=Administrator,dc=example,dc=com) を入力することができるほか、 cn=Administrator のように入力して ベース DN を追加 を選択し、 ベース DN を自動的に追加させることもできます。

    3. また、 LDAP でユーザ管理を行なうため、基本的な設定オブジェクトを作成 するには、 既定の設定オブジェクトを作成 を選択 します。

    4. お使いのマシンが、ネットワーク経由でホームディレクトリを提供する ファイルサーバとして動作する場合は、 このマシン内にホームディレクトリを設置 を選択します。

    5. 使用するパスワードポリシーを追加したり削除したり、修正したりするには、 パスワードポリシー のセクションを利用します。 YaST でのパスワードポリシー設定は、 LDAP サーバの設定の一部です。

    6. 詳細設定 を終了するには、 OK を押します。すると元の画面に戻りますので、 完了 を押すと設定を適用することができます。

LDAP サーバ内の項目を編集したい場合は、 ユーザ管理の設定 を押します。サーバ上の設定モジュールへのアクセスは、サーバ側の ACL や ACI に従って許可されます。あとは 4.4.2項 「YaST ユーザとグループの管理モジュールの設定」 の手順に従って作業を行なってください。

4.4.2. YaST ユーザとグループの管理モジュールの設定

ユーザやグループの管理を行なうために YaST モジュールを設定するには、 YaST の LDAP クライアントを使用します。ここではデータ登録を簡略化する ため、それぞれの属性に対して既定値のあるテンプレートを作成することが できます。ここで作成した既定値は、 LDAP ディレクトリ内に LDAP オブジェクトとして保管されます。ユーザデータの登録は YaST のユーザと グループの管理モジュールから登録することもできます。こちらのデータに ついても、サーバ内で LDAP オブジェクトとして保管されます。

図4.8 YaST: モジュール設定

YaST: モジュール設定

モジュール設定のダイアログ (図4.8「YaST: モジュール設定」) では、新しいモジュールの作成のほか、既存の設定モジュールの選択や修正、 モジュール向けテンプレートの設計と修正を行なうことができます。

新しい設定モジュールを作成するには、下記の手順で行ないます:

  1. LDAP クライアント設定詳細設定 を押し、 管理設定 のタブを開きます。 ユーザ管理の設定 を押して、 LDAP サーバに対する 認証情報を入力します。

  2. 新規 を押して作成するモジュールの種類を選択します。 ユーザ設定モジュールの場合は suseUserConfiguration を、グループ設定モジュールの場合は suseGroupConfiguration を選択します。

  3. 新しいテンプレートに設定する名前を選択します (例: userConfig) 。 内容ビューでは、このモジュールで許可されているすべての属性と、それらに 割り当てられた値が表形式で一覧になっています。

  4. 事前に設定されている値をそのまま受け入れるか、もしくは属性値を選択 してから 編集 を押し、ユーザやグループの既定値と して設定する値を入力します。モジュールの名前を変更するには、 モジュールの属性値内にある cn の値を変更 します。 削除 を押すと、現在選択されている モジュールを削除することができます。

  5. 最後に OK を押すと、新規モジュールが選択メニュー 内に追加されます。

YaST のユーザとグループの管理モジュールには、既定値付きのテンプレート が用意されています。設定モジュールに関連づけられたテンプレートを編集 するには、オブジェクトテンプレートの設定を起動します (図4.9「YaST: オブジェクトのテンプレート設定」) 。

  1. モジュールの設定 ダイアログで、 テンプレートの設定 を押します。

  2. このテンプレートに割り当てる一般的な属性値を設定するか、もしくは値を 入力しないままにしておきます。入力を行なわないと、 LDAP サーバ内では 属性が削除されます。

  3. 新しいオブジェクト (LDAP ツリー内でのユーザやグループの設定オブジェクト) に対する新しい既定値を修正/削除/追加します。

図4.9 YaST: オブジェクトのテンプレート設定

YaST: オブジェクトのテンプレート設定

テンプレートを特定のモジュールに結びつけるには、モジュールの susedefaulttemplate の属性値に、結びつけるテンプレート の DN を指定します。

[Tip]

属性の既定値は、絶対値の代わりに他の属性の値を指定することもできます。 たとえば新しいユーザを作成する際、 cn=%sn %givenName のように指定すると、それぞれ属性値の sngivenName の値から自動生成されるようになります。

すべてのモジュールとテンプレートを設定し終えたら、通常の YaST での 作成方法を利用して新しいユーザ/グループを作成することができます。

4.5. YaST による LDAP ユーザとグループの設定

実際のユーザやグループの登録作業は、 LDAP を使用していない場合と比べると 少しだけ異なります。下記の手順ではユーザの管理について説明していますが、 グループの管理もほぼ同様です。

  1. YaST を起動して、 セキュリティとユーザ+ユーザとグループの管理 を選択し、 ユーザ管理モジュールを起動します。

  2. LDAP のユーザだけが表示されるようにするには、 フィルタの設定 を押し、ルート DN のパスワードを 入力します。

  3. 追加 を押してユーザ設定画面を表示させます。 ダイアログは 4 つのタブから構成されています:

    1. ユーザ情報 のタブでは、ユーザ名とログイン、 パスワードをそれぞれ設定します。

    2. 詳細 タブではグループのメンバー設定のほか、ログイン シェルや新しいユーザに割り当てるホームディレクトリを設定します。必要で あれば既定値を修正して使用することができます。既定値 (パスワードの設定 タブでも同様です) は、 4.4.2項 「YaST ユーザとグループの管理モジュールの設定」 に示されている 手順で設定することができます。

    3. パスワードの設定 で既定値をそのまま受け入れるか、 もしくは修正して設定します。

    4. プラグイン のタブでは LDAP プラグインを選択して 起動 を押すと、新しく作成するユーザに設定する 追加の LDAP 属性を設定することができます (詳しくは 図4.10「YaST: 追加の LDAP 設定」 をご覧ください) 。

  4. 最後に OK を押すと、設定を保存してユーザ設定を 終了することができます。

図4.10 YaST: 追加の LDAP 設定

YaST: 追加の LDAP 設定

ユーザ管理の最初の入力フォームでは、 LDAP オプション の機能が用意されています。ここでは利用可能なユーザの中から、検索フィルタ に適合するユーザを捜し出すことができるようになっています。これ以外にも、 LDAP ユーザとグループの設定 を選択することで、 LDAP のユーザとグループを設定するモジュールを起動することもできます。

4.6. LDAP ディレクトリツリーの参照

LDAP のディレクトリツリーとその項目を便利に参照するには、 YaST の LDAP ブラウザを利用するのが便利です:

  1. root でログインします。

  2. YaST+ネットワークサービス+LDAP ブラウザ を選択します。

  3. まずは LDAP サーバのアドレスと管理者 DN 、そして LDAP サーバの パスワード (サーバ上に保管されているデータに対して、読み込みと書き込みの 両方を必要とする場合) をそれぞれ入力します。

    上記以外にも、パスワードを入力せずに 匿名アクセス を押し、ディレクトリに対する読み込みアクセスだけを行なう方法もあります。

    LDAP ツリー のタブには、接続先のマシンでの LDAP ツリーの内容が表示されます。それぞれのツリーを押すことで、項目を展開 することができます。

    図4.11 LDAP ディレクトリツリーの参照

    LDAP ディレクトリツリーの参照

  4. 特定の項目について詳細を読むには、 LDAP ツリー の ビューで項目を選んで、 項目データ 他部を開きます。

    なお、項目に対するすべての属性とその値が表示されます。

    図4.12 項目データの参照

    項目データの参照

  5. 設定されている値を変更するには、対象の属性を選んで 編集 を押します。その後、新しい値を入力して 保存 を押します。 場合によってはルート DN のパスワード入力を求められる場合があります。

  6. 閉じる を押すと LDAP ブラウザを終了することができます。

4.7. LDAP サーバの手動設定

YaST では OpenLDAP の動的な設定データベース (back-config) を利用して、 LDAP サーバの設定を保管しています。動的な設定バックエンドについて、 詳しくは slapd-config(5) のマニュアルページ、または openldap2 パッケージをインストールすることで配置 される、 /usr/share/doc/packages/openldap2/guide/admin/guide.html にある OpenLDAP ソフトウエア 2.4 管理者ガイドをお読みください。

[Tip]古い OpenLDAP 環境のアップグレードについて

YaST では /etc/openldap/slapd.conf に配置されて いる OpenLDAP の設定ファイルは、もはや読み込まないようになっています。 システムアップグレードの際は、 /etc/openldap/slapd.conf にある元の設定ファイルは、 /etc/openldap/slapd.conf.YaSTsave としてコピーされます。

設定バックエンドにアクセスしやすくするため、 SASL 外部認証をご利用になる ことをお勧めします。たとえば下記の ldapsearch コマンド を root で実行すると、 slapd の設定すべてを表示させることができます:

ldapsearch -Y external -H ldapi:/// -b cn=config

4.7.1. サーバの起動と停止

LDAP サーバをすべて設定し、必要な全項目を 4.8項 「LDAP データの手作業での管理」 にあるパターンに従って作成したあとは、 rootrcldap start を実行し、 LDAP サーバを起動します。サーバを手作業で停止するには、同様に rcldap stop を実行します。また、 サーバの状態を問い合わせるには、 rcldap status を実行します。

4.8. LDAP データの手作業での管理

OpenLDAP では LDAP のディレクトリ内のデータを管理するのに、各種のツール が用意されています。本章では、それぞれ追加や削除、検索や修正を行なうため の 4 種類のツールについて紹介しています。

4.8.1. LDAP ディレクトリへのデータ挿入

LDAP サーバの設定を行なったあと (それぞれ suffix, directory, rootdn, rootpw, index に対して 必要な設定を行なったあと) は、レコードの追加を行なうことができる ようになります。 OpenLDAP では ldapadd コマンドでこれを行なうことができます。また、可能であればオブジェクト を一括で追加してください (実際の用途でも一括で登録します) 。 LDAP はシンプルな LDIF 形式 (LDAP データ交換フォーマット) のファイルで 処理を行ないます。 LDIF ファイルはシンプルなテキストファイルで、任意の 数の属性と値の対を記述することができます。 図4.1「LDAP ディレクトリの構造」 にある例のようなレコードを作成 する際の LDIF ファイルは、 例4.2「LDIF ファイル」 のような形で記述します。

[Important]LDIF ファイルのエンコーディング

LDAP は UTF-8 (Unicode) で動作しています。また、発音記号などは 正しくエンコードされていなければなりません。正しくエンコード されていない場合は発音記号や特殊記号類を削除するか、もしくは iconv コマンドで入力ファイルを UTF-8 に エンコードしてください。

例4.2 LDIF ファイル

# The Organization
dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
o: Example dc: example

# The organizational unit development (devel)
dn: ou=devel,dc=example,dc=com
objectClass: organizationalUnit
ou: devel

# The organizational unit documentation (doc)
dn: ou=doc,dc=example,dc=com
objectClass: organizationalUnit
ou: doc

# The organizational unit internal IT (it)
dn: ou=it,dc=example,dc=com
objectClass: organizationalUnit
ou: it

.ldif という拡張子でファイルを保存したあと、下記の コマンドでサーバに渡します:

ldapadd -x -D 管理者の_DN -W -f file.ldif

-x はこの場合、 SASL による認証を無効化する設定です。 また、 -D は操作を呼び出すユーザを指定するものです。 ここには slapd.conf で設定した、正しい管理者の DN を入力します。上記の例では cn=Administrator,dc=example,dc=com という DN になっています。また、 -W はコマンドライン 内に (暗号化されない形で) パスワードを入力しないようにするもので、 これを指定すると実行後にパスワードプロンプトが表示されるようになります。 -f オプションにはファイル名を指定します。 ldapadd を実行する際の詳細は、 例4.3「example.ldif を利用した場合の ldapadd」 をお読みください。

例4.3 example.ldif を利用した場合の ldapadd

ldapadd -x -D cn=Administrator,dc=example,dc=com -W -f example.ldif 

Enter LDAP password: 
adding new entry "dc=example,dc=com" 
adding new entry "ou=devel,dc=example,dc=com" 
adding new entry "ou=doc,dc=example,dc=com" 
adding new entry "ou=it,dc=example,dc=com"

各個人のユーザデータは、別々の LDIF ファイルとして用意することが できます。たとえば 例4.4「Tux 向けの LDIF データ」 では、 Tux という新しい LDAP 項目を 追加しています。

例4.4 Tux 向けの LDIF データ

# coworker Tux
dn: cn=Tux Linux,ou=devel,dc=example,dc=com
objectClass: inetOrgPerson
cn: Tux Linux
givenName: Tux
sn: Linux
mail: tux@example.com
uid: tux
telephoneNumber: +49 1234 567-8

LDIF ファイルには任意の数のオブジェクトを含めることができます。また、 サーバにある複数のディレクトリの項目を一括で追加することもできますし、 例に示しているとおり個別に追加することもできます。ただし、複数のデータ に関連性があるものの場合は、それらはまとめて追加することをお勧めします。

4.8.2. LDAP ディレクトリ内のデータ修正

ldapmodify というツールで保管されているデータの修正 を行なうことができます。最も簡単な方法として、修正する LDIF ファイルを用意 して、それらを LDAP サーバに送信する方法があります。たとえば Tux という 従業員の電話番号を、 +49 1234 567-8 から +49 1234 567-10 に変更するには、 LDIF ファイルを 例4.5「修正済みの LDIF ファイル tux.ldif」 のように修正します。

例4.5 修正済みの LDIF ファイル tux.ldif

# coworker Tux
dn: cn=Tux Linux,ou=devel,dc=example,dc=com 
changetype: modify
replace: telephoneNumber 
telephoneNumber: +49 1234 567-10

LDAP ディレクトリ内の項目をファイルから修正するには、下記のコマンド を入力します:

ldapmodify -x -D cn=Administrator,dc=example,dc=com -W -f tux.ldif

上記の方法以外にも、 ldapmodify コマンドに 対して変更する属性を直接指定する方法もあります:

  1. ldapmodify コマンドを下記のように入力し、 パスワードを入力します:

    ldapmodify -x -D cn=Administrator,dc=example,dc=com -W 
    Enter LDAP password:
  2. 文法と順序に注意しながら、下記のように変更内容を入力します:

    dn: cn=Tux Linux,ou=devel,dc=example,dc=com
    changetype: modify
    replace: telephoneNumber
    telephoneNumber: +49 1234 567-10

ldapmodify コマンドとその文法について、詳しくは ldapmodify のマニュアルページをお読みください。

4.8.3. LDAP ディレクトリの検索と読み込み

OpenLDAP では ldapsearch コマンドを利用することで、 LDAP ディレクトリ内にあるデータを検索することができるほか、それらの データを表示することができます。最も簡単な問い合わせ方法は下記のとおり です:

ldapsearch -x -b dc=example,dc=com "(objectClass=*)"

-b オプションは検索ベース (検索を開始するツリー) を指定 するためのものです。上記の例では dc=example,dc=com を 指定しています。たとえば LDAP ディレクトリ内の特定のサブツリー内を検索 するような場合は、そのツリーを -b で指定します。 -x は簡易認証を有効にする設定です。また、 (objectClass=*) はディレクトリ内に含まれるすべての オブジェクトを読み込むための指定です。このコマンドは、新しいディレクトリ ツリーを作成した後に使用し、すべての項目が正しく作成されていて、サーバが 正しく応答するかどうかを確認する際にも使用できます。 ldapsearch の使用方法について、詳しくは ldapsearch(1) のマニュアルページをお読みください。

4.8.4. LDAP ディレクトリ内のデータ削除

不要な項目は ldapdelete で削除することができます。 コマンドの文法は他のコマンドとほぼ同様です。たとえば Tux Linux の項目を削除するには、下記のコマンドを 入力します:

ldapdelete -x -D cn=Administrator,dc=example,dc=com -W cn=Tux \
Linux,ou=devel,dc=example,dc=com

4.9. さらなる情報

良く複雑な設定方法 (たとえば SASL の設定や複数のスレーブにデータを配置 するレプリケーション付き LDAP サーバなど) については、本章では省略して います。これらの詳細について、詳しくは OpenLDAP 2.4 Administrator's Guide または OpenLDAP 2.3 管理者ガイド に書かれている OpenLDAP 2.4 Administrator's Guide をお読み ください。

OpenLDAP プロジェクトの Web サイトでは、下記のように様々な初心者向け/ 上級者向けのドキュメントが用意されています:

OpenLDAP Faq-O-Matic

OpenLDAP のインストールや設定、使用方法などについて、よくある 質問やその回答が記されています。 http://www.openldap.org/faq/data/cache/1.html (英語) をお読みください。

Quick Start Guide

LDAP サーバをはじめてインストールする際の、手順を追った概要説明が 記されています。 http://www.openldap.org/doc/admin24/quickstart.html または、インストール後のシステムで /usr/share/doc/packages/openldap2/guide/admin/guide.html ファイルをお読みください (いずれも英語です) 。

OpenLDAP 2.4 Administrator's Guide

LDAP の設定について、重要なすべての要素が書かれた詳細な紹介です。 アクセス制御や暗号化などにも言及しています。 http://www.openldap.org/doc/admin24/ または、インストール後のシステムで /usr/share/doc/packages/openldap2/guide/admin/guide.html をお読みください (いずれも英語です) 。

OpenLDAP 2.3 管理者ガイド

少しバージョンの古い情報ですが、 LDAP の管理者に向けた文書です。 http://www5f.biglobe.ne.jp/~inachi/openldap/admin23/index-ja.html をお読みください (日本語です) 。

Understanding LDAP

LDAP における基本的な考え方を紹介している、一般向けの情報です: http://www.redbooks.ibm.com/redbooks/pdfs/sg244986.pdf.

LDAP に関する書籍もあります:

  • LDAP System Administration by Gerald Carter (ISBN 1-56592-491-6) (英語)

  • Understanding and Deploying LDAP Directory Services by Howes, Smith, and Good (ISBN 0-672-32316-8)

  • LDAP -設定・管理・プログラミング- (Gerald Carter, でびあんぐる) (ISBN-13 978-4274065507)

  • 入門 LDAP/OpenLDAP - ディレクトリサービス導入・運用ガイド (デージーネット) (ISBN-13 978-4798018003)

LDAP に関する巨大なリファレンスとしては、関連する RFC (Request For Comments) である 2251 から 2256 もあります。


openSUSE セキュリティガイド 13.1