目次
概要
Lightweight Directory Access Protocol (LDAP) は、ディレクトリ構造の情報に アクセスしたり、それらを管理したりするためのプロトコル集です。 LDAP は ユーザやグループの管理に利用できるほか、システム設定の管理やアドレスの 管理などに利用できます。本章では、 OpenLDAP の動作に関する基礎知識と、 YaST を利用した場合の LDAP データの管理方法について述べています。
ネットワークを利用する環境では、重要な情報を構造的に管理し、素早く提供する ことが必須の要件となります。いわゆる電話帳のようなディレクトリサービスでは、 情報をうまく分類し、読みやすく探しやすい形式で保存します。
理想的には中央のサーバのディレクトリ内にデータを保管し、すべてのクライアント に対して、うまく設計されたプロトコルを利用して配布する、という形式を取ること でしょう。また、データが構造化されていることにより、様々なアプリケーション から幅広くアクセスできるようになります。さらに、データの保管を中央に集める ことで、管理にかかる手間を省くことができます。 LDAP のようなオープンで標準化 されたプロトコルを利用することで、数多くのクライアントアプリケーションから これらの情報にアクセスできます。
本章でディレクトリとは、読み込みや検索の速度や、その効率に重点を置いた データベースのことを指しています:
複数のクライアントからできる限り同時並行で読み込むことができるように するため、更新の同時並行数はとても低く設定されています。また、書き込み それ自身についても、管理者権限を持つごく少数のユーザに対してだけ許可 されています。通常のデータベースでは逆に、短い時間でできるだけ多くの データを受け入れることができるように設計されます。
固定のデータとして管理している場合、既存のデータに対する更新はほとんど 発生しないことになります。逆に動的なデータで作業を行なっている場合、 たとえば銀行口座の取り引きなどの場合は、データの一貫性は重要になります。 たとえばある一定額を一方の口座から差し引いて、それを他方の口座に追加 するような場合は、資金が途中で消えてしまったりすることがないようにする ため、これを 1 つの トランザクション として扱い、 操作を両方とも実施しなければなりません。従来のリレーショナルデータベース ではトランザクションの関係一貫性サポートなどの形で、データの一貫性に ついてとても強力な考慮がありますが、 LDAP のディレクトリでは短期間の 一貫性欠如は一般に受け入れられるものとして扱われます。 LDAP のディレクトリ では、リレーショナルデータベースのように強力な一貫性の要件が存在して いないためです。
LDAP のようなディレクトリサービスはその設計上、複雑な更新や問い合わせの 仕組みを備えているわけではありません。すべてのアプリケーションからの アクセスが素早く簡単に完了するように作られています。
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 とは異なり拡張性に富んだ構造になっているため、上記に限らず 数多くの用途に使用する子ができます。また、わかりやすく設計された階層 構造型のデータ構造は、巨大なデータ量の管理を行ないやすくする効果が あるばかりか、検索もより容易になります。
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 ディレクトリの構造」 の例をご覧ください。
上記の図は架空の企業を例にしたディレクトリ構造を示しています。項目は
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.schema
と inetorgperson.schema
で提供されているオブジェクト
クラスについて、その概要と使用例、必要な属性と有効な属性値の一覧が書かれています。
表4.1 よく使用されるオブジェクトクラスと属性¶
オブジェクトクラス |
意味 |
項目例 |
必要な属性 |
---|---|---|---|
|
domainComponent (ドメインの名前部分) |
example |
dc |
|
organizationalUnit (団体単位) |
doc |
ou |
|
inetOrgPerson (イントラネットやインターネットの 個人関連データ) |
Geeko Linux |
sn および cn |
また、 例4.1「schema.core からの抜粋」 では、スキーマからの 抜粋と、その説明が書かれています。
例4.1 schema.core からの抜粋¶
attributetype (2.5.4.11 NAME ( 'ou' 'organizationalUnitName') DESC 'RFC2256: organizational unit this object belongs to' SUP name ) ... objectclass ( 2.5.6.5 NAME 'organizationalUnit' DESC 'RFC2256: an organizational unit' SUP top STRUCTURAL MUST ou MAY (userPassword $ searchGuide $ seeAlso $ businessCategory $ x121Address $ registeredAddress $ destinationIndicator $ preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $ postalAddress $ physicalDeliveryOfficeName $ st $ l $ description) ) ...
属性の種類 organizationalUnitName
とそれに関連する
オブジェクトクラス organizationalUnit
は、この例の
とおりに動作します。
属性の名称と属性に対するユニークな OID (オブジェクト 識別子) (数値) 、そして属性の略称です。 | |
| |
| |
ここから | |
オブジェクトクラスに対する概要説明を記述します。 | |
| |
| |
|
スキーマの使用方法について、わかりやすい説明は OpenLDAP のドキュメンテーション
(openldap2-doc
) 内に用意されています。インストール後、
/usr/share/doc/packages/openldap2/adminguide/guide.html
(英語) をお読みください。
LDAP サーバを設定するには YaST を使用します。 LDAP サーバの一般的な 用途としては、ユーザアカウントのデータやメールサーバ/DNS サーバ/DHCP サーバの設定などがあります。
ユーザアカウントデータを保管するために LDAP サーバを設定するには、まず
yast2-ldap-server
と openldap2
の各パッケージがインストールされていることを確認してください。その後、
下記の手順を実施します:
YaST を root
で起動し、 + を選択します。
すると設定ウイザードが表示されます。
まずは LDAP サーバの 図4.2「YaST LDAP サーバ設定」 をご覧ください:
を行ないます。LDAP を起動するように設定します。
LDAP サーバを SLP でアナウンスするように設定するには、
にチェックを入れます。で必要な設定を行ないます。
を押します。
次にサーバの種類を選択します: 単独サーバ, レプリケーション設定 内でのマスターサーバ, レプリカ (スレーブ) サーバの中から選択します。
さらにセキュリティオプションを設定します (
) 。なお、 ステップ 4 をお読みください。
を選択して、 TLS を有効にして おくことを強くお勧めします。詳しくはパスワードの暗号化について | |
---|---|
TLS による暗号化を行なうと、ネットワーク上にパスワードを流す際、 それらを暗号化することになります。このオプションを有効にしない場合は、 パスワードが暗号化されずに送信されてしまいます。 |
また、必要であれば LDAP over SSL と証明書の設定を行ないます。
さらに 図4.3「YaST LDAP サーバ—新しいデータベース」 をご覧ください。
に移動します。 ここでは とその確認欄に入力を 行ない、 を押します。詳しくは最後に
に表示された内容を 確認し、 を押すと設定ウイザードを終了する ことができます。設定の変更や追加を行なう場合は、 LDAP サーバモジュールを再度起動し、 左側のペインで 図4.4「YaST LDAP サーバ設定」 をご覧ください:
を選択します。 詳しくはでは、 LDAP サーバのログ動作に 関する設定 (ログ出力の頻度に関わる設定) を行なうことができます。 一覧に表示された項目から、ログに出力したいものを選んでください。 選択を増やすほど、ログファイルが大きくなることに注意してください。
サーバ側でどのような接続を許すのかについては、
で設定を行ないます。下記の ものを選択することができます:このオプションを選択すると、 LDAP の旧バージョン (LDAPv2) を使用する クライアントからの接続要求 (バインド要求) を受け付けるようになります。
通常 LDAP サーバは、認証情報 (DN またはパスワード) に何も記入されて いない場合、認証を拒否するようになっています。このオプションを選択する と、 DN のないパスワードのみの接続を受け付けるようになります。
このオプションを選択すると、 DN は設定されているがパスワードのない (認証情報のない匿名の) 接続を受け付けるようになります。
このオプションを選択すると、認証情報のない匿名の更新操作を受け付ける ようになります。アクセスは ACL やその他のルールで制限する必要が あります。
では、下記のフラグを設定することも できます:
このオプションを選択すると、匿名でのバインド要求を受け入れないように なります。ただし、これは匿名でのディレクトリアクセスを禁止するわけ ではないことに注意してください。
簡易バインド認証を完全に無効化します。
このオプションを選択すると、 StartTLS の操作を受け取った際、 サーバ側で認証済みの状態を匿名の状態に戻さないようにします。
このオプションを選択すると、既に認証が完了している接続に対しては StartTLS を許可しないようになります。
クライアントとサーバの間での暗号化接続を設定するには、
で行ないます:クライアントとサーバの間で TLS や SSL による暗号化を有効に するには、
を選択します。16.2項 「CA 管理用の YaST モジュール」 をお読みください。
で証明書の正確な場所を 指定するか、もしくは を選択します。今までに共通サーバ証明書を作成していない場合は、 左記のボタンを利用することができませんので、 を押して証明書を 作成してください。詳しくはなお、ダイアログの左側のペインで
を選択することで、スキーマファイルをサーバの設定ファイルに含めるように 設定することができます。スキーマファイルの選択の既定値は、 YaST の ユーザアカウントデータのソースを提供するように設定されています。
YaST では、スキーマファイルとして従来の形式 (通常は .schema
で終わるファイル) のものを追加できるほか、 OpenLDAP の LDIF スキーマ形式の
ものを追加することもできます。
お使いの LDAP サーバで管理するデータベースを設定するには、下記の手順で 行ないます:
ダイアログの左側のペインで、
の項目を 選択します。を押してデータベースを追加します。
下記のとおり必要なデータを入力します:
LDAP サーバでのベース DN を入力します。
サーバ管理者の DN を入力します。なお、 cn
部分だけを指定する
だけで、残りはシステム側で自動的に設定するようになります。
データベース管理者のパスワードを入力します。
必要であれば、利便性のためオプションを選択します。
次のダイアログではレプリケーションの設定を行ないます。
次のダイアログでは、パスワードポリシーの強制を設定し、 LDAP サーバに 対するセキュリティの強化を設定することができます:
パスワードポリシーを設定できるようにするには、
を選択します。暗号化されていないパスワードに対して、それらをデータベースに追加 したり修正したりする際、事前にハッシュ化する場合は、
を選択します。ロック (施錠) されたアカウントに対してバインド要求を送信した際、 その旨のエラーメッセージを提供する場合は、
を選択します。セキュリティの厳しい環境におけるロック済みアカウントについて | |
---|---|
お使いの環境がセキュリティに厳しい環境の場合は、 「ロックされている」 ことを示すエラーメッセージを 通知してしまうと、潜在的な攻撃者に対してセキュリティ関連の情報を 公開することになってしまうためです。 を選択しては なりません。これは |
次に既定のポリシーオブジェクトに対する DN を指定します。 YaST が 提案する値以外の DN を使用するには、その旨入力してください。それ以外の 場合は、既定値のまま進めてください。
最後に
を押すと、データベースの作成作業を 完了することができます。パスワードポリシーを有効にするように選択していない場合、この時点でサーバ が利用できるようになります。パスワードポリシーを有効にするように選択した 場合は、ここからパスワードポリシーに関する詳細を設定します。また、 存在していないパスワードポリシーのオブジェクトを指定した場合は、 YaST でそれを作成します:
まずは LDAP サーバのパスワードを入力します。左側のペインから
を選び、作成したデータベースオブジェクト のツリーを開いていって、 を選択します。が選択されていることを 確認し、 を押します。
まずはパスワードの変更ポリシーを設定します:
まずはパスワード履歴に保存するパスワード数を指定します。 保存されたパスワードは、新しいパスワードとして設定することが できなくなります。
また、各ユーザに対して自分自身のパスワードの変更を許可するか、および 管理者によるパスワードリセット時に、パスワード変更を求められるかどうか を設定します。さらに、パスワード変更時に古いパスワードの入力を必要と するかどうかを (任意で) 選択することもできます。
それ以外にも、パスワードに対して品質チェックを行なうかどうか、どの ように行なうのかを設定することもできます。まず最小のパスワード長は、 パスワードの有効性が検証される前に確認される項目です。
を選択すると、 品質チェックが実施できない場合にでもパスワードを受け付けるように なります。逆に を選択すると、品質テストを通過したもののみを受け付けるようになります。パスワードの時間制限に関するポリシーは、下記のように設定します:
まずはパスワード使用日数について、最小値と最大値を設定します (最小値の 設定は、パスワードをあまりに頻繁に変更させないためのものです) 。
またパスワードの有効期限について、その警告日数と実際の期限切れを設定 します。
パスワードが恒久的な期限切れになる前に、期限の切れたパスワード の使用を許可する回数を指定します。
最後にロックアウトポリシーを設定します:
まずはパスワードロックを行なうかどうかを設定します。
次に、パスワードロックを発動するバインド失敗回数を設定します。
パスワードロックの期間を設定します。
パスワードの失敗をキャッシュ内に保持する期間を設定します。
すべてを設定したら
を押すと、パスワード ポリシーを保存することができます。以前に作成したデータベースを編集するには、左側のペインのツリー表示から、 ベース DN を選択します。選択すると右側のペインには、作成したときと似た表示 形態でデータベースが表示されます (ただしベース DN の項目のみ、グレーで 表示されて変更できなくなっています) 。
を押して LDAP のサーバ設定を終了すると、 LDAP サーバに対して基本的な設定が完了します。この設定をさらに詳しく調整 するには、 OpenLDAP の動的な設定バックエンドをご利用ください。
また、 OpenLDAP の動的な設定バックエンドでは、 LDAP データベース内に設定
情報を保管しています。データベースは /etc/openldap/slapd.d
内に存在し、複数の .ldif
ファイルから構成されています。
これらのファイルに直接アクセスする必要はありません。設定にアクセスしたい
場合は、 YaST の LDAP サーバモジュール (yast2-ldap-server
パッケージ) か、 ldapmodify や ldapsearch
のような LDAP クライアントツールを利用して行ないます。 OpenLDAP の動的な
設定について、詳しくは OpenLDAP の管理ガイドをお読みください。
YaST には LDAP ベースのユーザを管理するためのモジュールが用意されて います。インストール時にこの機能を有効化していない場合は、 4.4.1項 「基本的な設定」 で説明しています。
+ を選択して、モジュールを起動してください。 YaST では LDAP を動作させるのに必要な PAM の有効化作業と NSS 関連の変更、および必要な ファイルのインストールまでを自動的に行ないます。後は単純にサーバに対する 接続設定を行なうことで、 YaST はユーザを LDAP 経由で管理するようになります。 基本的な設定方法はYaST の LDAP クライアント機能を利用することで、 YaST のユーザとグループ の設定モジュール側でも設定を行なうことができるようになります。これには新規に 作成するユーザやグループに対する既定値の変更のほか、ユーザやグループに割り 当てる属性値などを設定することができます。 LDAP のユーザ管理では、通常の ユーザやグループの管理機能よりも多くの種類の属性を、ユーザやグループに対して 設定することができます。こちらについて、詳しくは 4.4.2項 「YaST ユーザとグループの管理モジュールの設定」 をお読みください。
インストール時に LDAP によるユーザ管理を選択した場合や、インストール済みの システムで YaST のコントロールセンターから、 図4.6「YaST: LDAP クライアントの設定」) が表示されます。
+ を選択すると、 LDAP クライアントの基本設定ダイアログ (お使いのマシンで、 OpenLDAP サーバを利用したユーザ認証とユーザ管理を 行なうには、下記の手順を実施します:
LDAP を使用するには、まず
を選択 します。 LDAP を認証には使用するものの、他のユーザがこのクライアントに ログインできないようにするには、 を選択します。使用する LDAP サーバの IP アドレスを入力します。
LDAP サーバ上での検索ベースを設定するには、
に入力します。ベース DN を自動的に取得させたい場合は、 を押します。このボタンを押すと、 YaST は上記でアドレスを設定した LDAP サーバに対してデータベースを検索します。 あとは検索結果が表示されますので、ここから適切なベース DN を選択します。サーバとの通信を TLS や SSL で保護する必要がある場合は、
を選択します。特定の URL から PEM 形式で証明書をダウンロードしたい場合は、 を押します。
リモートで管理されている /home
が存在する
ような環境の場合は、
を選択します。
初回のユーザログイン時に、自動的にユーザのホームディレクトリを 作成するには、
を選択します。最後に
を押し、設定を適用します。管理者としてサーバ上のデータを修正するには、 図4.7「YaST: 詳細設定」 のダイアログは、 2 つの タブから構成されています。
を押します。のタブでは下記の設定を行なうことができます:
で指定した DN とは異なる検索ベース をユーザやパスワード、グループに対して設定するには、それぞれ , , で設定します。
次にパスワードの変更プロトコルを設定します。パスワードを変更する
場合の標準的なプロトコルは crypt
です。
これは crypt
で生成されたパスワード
ハッシュを利用する意味になります。詳細やその他のオプションについては、
pam_ldap
のマニュアルページをお読みください。
使用する LDAP グループについては、 member
です。
証明書確認に暗号化の接続が必要となる場合は、
で PEM 形式のファイルを 指定するか、もしくは証明書のあるディレクトリを指定します。お使いの LDAP サーバが現在も LDAPv2 を使用している場合は、
を選択して LDAPv2 を使用するように します。では下記の設定を行なうことができます:
まずはユーザ管理データを保存するベース DN を、
で指定します。
次に /etc/openldap/slapd.conf
内の
rootdn
の値と同じでなければなりません。ここには
完全 DN (例: cn=Administrator,dc=example,dc=com
)
を入力することができるほか、 cn=Administrator
のように入力して を選択し、
ベース DN を自動的に追加させることもできます。
また、 LDAP でユーザ管理を行なうため、基本的な設定オブジェクトを作成 するには、
を選択 します。お使いのマシンが、ネットワーク経由でホームディレクトリを提供する ファイルサーバとして動作する場合は、
を選択します。使用するパスワードポリシーを追加したり削除したり、修正したりするには、
のセクションを利用します。 YaST でのパスワードポリシー設定は、 LDAP サーバの設定の一部です。を終了するには、 を押します。すると元の画面に戻りますので、 を押すと設定を適用することができます。
LDAP サーバ内の項目を編集したい場合は、 4.4.2項 「YaST ユーザとグループの管理モジュールの設定」 の手順に従って作業を行なってください。
を押します。サーバ上の設定モジュールへのアクセスは、サーバ側の ACL や ACI に従って許可されます。あとはユーザやグループの管理を行なうために YaST モジュールを設定するには、 YaST の LDAP クライアントを使用します。ここではデータ登録を簡略化する ため、それぞれの属性に対して既定値のあるテンプレートを作成することが できます。ここで作成した既定値は、 LDAP ディレクトリ内に LDAP オブジェクトとして保管されます。ユーザデータの登録は YaST のユーザと グループの管理モジュールから登録することもできます。こちらのデータに ついても、サーバ内で LDAP オブジェクトとして保管されます。
モジュール設定のダイアログ (図4.8「YaST: モジュール設定」) では、新しいモジュールの作成のほか、既存の設定モジュールの選択や修正、 モジュール向けテンプレートの設計と修正を行なうことができます。
新しい設定モジュールを作成するには、下記の手順で行ないます:
で を押し、 のタブを開きます。 を押して、 LDAP サーバに対する 認証情報を入力します。
suseUserConfiguration
を、グループ設定モジュールの場合は suseGroupConfiguration
を選択します。
新しいテンプレートに設定する名前を選択します (例: userConfig
) 。
内容ビューでは、このモジュールで許可されているすべての属性と、それらに
割り当てられた値が表形式で一覧になっています。
事前に設定されている値をそのまま受け入れるか、もしくは属性値を選択
してから cn
の値を変更
します。 を押すと、現在選択されている
モジュールを削除することができます。
最後に
を押すと、新規モジュールが選択メニュー 内に追加されます。YaST のユーザとグループの管理モジュールには、既定値付きのテンプレート が用意されています。設定モジュールに関連づけられたテンプレートを編集 するには、オブジェクトテンプレートの設定を起動します (図4.9「YaST: オブジェクトのテンプレート設定」) 。
ダイアログで、 を押します。
このテンプレートに割り当てる一般的な属性値を設定するか、もしくは値を 入力しないままにしておきます。入力を行なわないと、 LDAP サーバ内では 属性が削除されます。
新しいオブジェクト (LDAP ツリー内でのユーザやグループの設定オブジェクト) に対する新しい既定値を修正/削除/追加します。
テンプレートを特定のモジュールに結びつけるには、モジュールの
susedefaulttemplate
の属性値に、結びつけるテンプレート
の DN を指定します。
属性の既定値は、絶対値の代わりに他の属性の値を指定することもできます。
たとえば新しいユーザを作成する際、 |
すべてのモジュールとテンプレートを設定し終えたら、通常の YaST での 作成方法を利用して新しいユーザ/グループを作成することができます。
実際のユーザやグループの登録作業は、 LDAP を使用していない場合と比べると 少しだけ異なります。下記の手順ではユーザの管理について説明していますが、 グループの管理もほぼ同様です。
YaST を起動して、
+ を選択し、 ユーザ管理モジュールを起動します。LDAP のユーザだけが表示されるようにするには、
を押し、ルート DN のパスワードを 入力します。を押してユーザ設定画面を表示させます。 ダイアログは 4 つのタブから構成されています:
のタブでは、ユーザ名とログイン、 パスワードをそれぞれ設定します。
4.4.2項 「YaST ユーザとグループの管理モジュールの設定」 に示されている 手順で設定することができます。
タブではグループのメンバー設定のほか、ログイン シェルや新しいユーザに割り当てるホームディレクトリを設定します。必要で あれば既定値を修正して使用することができます。既定値 (パスワードの設定 タブでも同様です) は、で既定値をそのまま受け入れるか、 もしくは修正して設定します。
図4.10「YaST: 追加の LDAP 設定」 をご覧ください) 。
のタブでは LDAP プラグインを選択して を押すと、新しく作成するユーザに設定する 追加の LDAP 属性を設定することができます (詳しくは最後に
を押すと、設定を保存してユーザ設定を 終了することができます。ユーザ管理の最初の入力フォームでは、
の機能が用意されています。ここでは利用可能なユーザの中から、検索フィルタ に適合するユーザを捜し出すことができるようになっています。これ以外にも、 を選択することで、 LDAP のユーザとグループを設定するモジュールを起動することもできます。LDAP のディレクトリツリーとその項目を便利に参照するには、 YaST の LDAP ブラウザを利用するのが便利です:
root
でログインします。
+ + を選択します。
まずは LDAP サーバのアドレスと管理者 DN 、そして LDAP サーバの パスワード (サーバ上に保管されているデータに対して、読み込みと書き込みの 両方を必要とする場合) をそれぞれ入力します。
上記以外にも、パスワードを入力せずに
を押し、ディレクトリに対する読み込みアクセスだけを行なう方法もあります。のタブには、接続先のマシンでの LDAP ツリーの内容が表示されます。それぞれのツリーを押すことで、項目を展開 することができます。
特定の項目について詳細を読むには、
の ビューで項目を選んで、 他部を開きます。なお、項目に対するすべての属性とその値が表示されます。
設定されている値を変更するには、対象の属性を選んで
を押します。その後、新しい値を入力して を押します。 場合によってはルート DN のパスワード入力を求められる場合があります。を押すと LDAP ブラウザを終了することができます。
YaST では OpenLDAP の動的な設定データベース (back-config
)
を利用して、 LDAP サーバの設定を保管しています。動的な設定バックエンドについて、
詳しくは slapd-config(5)
のマニュアルページ、または
openldap2
パッケージをインストールすることで配置
される、
/usr/share/doc/packages/openldap2/guide/admin/guide.html
にある OpenLDAP ソフトウエア 2.4 管理者ガイドをお読みください。
古い OpenLDAP 環境のアップグレードについて | |
---|---|
YaST では |
設定バックエンドにアクセスしやすくするため、 SASL 外部認証をご利用になる
ことをお勧めします。たとえば下記の ldapsearch コマンド
を root
で実行すると、 slapd
の設定すべてを表示させることができます:
ldapsearch -Y external -H ldapi:/// -b cn=config
LDAP サーバをすべて設定し、必要な全項目を 4.8項 「LDAP データの手作業での管理」
にあるパターンに従って作成したあとは、 root
で rcldap start
を実行し、 LDAP
サーバを起動します。サーバを手作業で停止するには、同様に
rcldap stop
を実行します。また、
サーバの状態を問い合わせるには、
rcldap status
を実行します。
OpenLDAP では LDAP のディレクトリ内のデータを管理するのに、各種のツール が用意されています。本章では、それぞれ追加や削除、検索や修正を行なうため の 4 種類のツールについて紹介しています。
LDAP サーバの設定を行なったあと (それぞれ suffix
,
directory
, rootdn
,
rootpw
, index
に対して
必要な設定を行なったあと) は、レコードの追加を行なうことができる
ようになります。 OpenLDAP では ldapadd
コマンドでこれを行なうことができます。また、可能であればオブジェクト
を一括で追加してください (実際の用途でも一括で登録します) 。
LDAP はシンプルな LDIF 形式 (LDAP データ交換フォーマット) のファイルで
処理を行ないます。 LDIF ファイルはシンプルなテキストファイルで、任意の
数の属性と値の対を記述することができます。
図4.1「LDAP ディレクトリの構造」 にある例のようなレコードを作成
する際の LDIF ファイルは、 例4.2「LDIF ファイル」
のような形で記述します。
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 -ffile
.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 ファイルには任意の数のオブジェクトを含めることができます。また、 サーバにある複数のディレクトリの項目を一括で追加することもできますし、 例に示しているとおり個別に追加することもできます。ただし、複数のデータ に関連性があるものの場合は、それらはまとめて追加することをお勧めします。
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 コマンドに 対して変更する属性を直接指定する方法もあります:
ldapmodify コマンドを下記のように入力し、 パスワードを入力します:
ldapmodify -x -D cn=Administrator,dc=example,dc=com -W Enter LDAP password:
文法と順序に注意しながら、下記のように変更内容を入力します:
dn: cn=Tux Linux,ou=devel,dc=example,dc=com changetype: modify replace: telephoneNumber telephoneNumber: +49 1234 567-10
ldapmodify コマンドとその文法について、詳しくは ldapmodify のマニュアルページをお読みください。
OpenLDAP では ldapsearch コマンドを利用することで、 LDAP ディレクトリ内にあるデータを検索することができるほか、それらの データを表示することができます。最も簡単な問い合わせ方法は下記のとおり です:
ldapsearch -x -b dc=example,dc=com "(objectClass=*)"
-b
オプションは検索ベース (検索を開始するツリー) を指定
するためのものです。上記の例では dc=example,dc=com
を
指定しています。たとえば LDAP ディレクトリ内の特定のサブツリー内を検索
するような場合は、そのツリーを -b
で指定します。
-x
は簡易認証を有効にする設定です。また、
(objectClass=*)
はディレクトリ内に含まれるすべての
オブジェクトを読み込むための指定です。このコマンドは、新しいディレクトリ
ツリーを作成した後に使用し、すべての項目が正しく作成されていて、サーバが
正しく応答するかどうかを確認する際にも使用できます。
ldapsearch の使用方法について、詳しくは
ldapsearch(1)
のマニュアルページをお読みください。
不要な項目は ldapdelete で削除することができます。
コマンドの文法は他のコマンドとほぼ同様です。たとえば
Tux Linux
の項目を削除するには、下記のコマンドを
入力します:
ldapdelete -x -D cn=Administrator,dc=example,dc=com -W cn=Tux \ Linux,ou=devel,dc=example,dc=com
良く複雑な設定方法 (たとえば SASL の設定や複数のスレーブにデータを配置 するレプリケーション付き LDAP サーバなど) については、本章では省略して います。これらの詳細について、詳しくは OpenLDAP 2.4 Administrator's Guide または OpenLDAP 2.3 管理者ガイド に書かれている OpenLDAP 2.4 Administrator's Guide をお読み ください。
OpenLDAP プロジェクトの Web サイトでは、下記のように様々な初心者向け/ 上級者向けのドキュメントが用意されています:
OpenLDAP のインストールや設定、使用方法などについて、よくある 質問やその回答が記されています。 http://www.openldap.org/faq/data/cache/1.html (英語) をお読みください。
LDAP サーバをはじめてインストールする際の、手順を追った概要説明が
記されています。 http://www.openldap.org/doc/admin24/quickstart.html
または、インストール後のシステムで
/usr/share/doc/packages/openldap2/guide/admin/guide.html
ファイルをお読みください (いずれも英語です) 。
LDAP の設定について、重要なすべての要素が書かれた詳細な紹介です。
アクセス制御や暗号化などにも言及しています。
http://www.openldap.org/doc/admin24/
または、インストール後のシステムで
/usr/share/doc/packages/openldap2/guide/admin/guide.html
をお読みください (いずれも英語です) 。
少しバージョンの古い情報ですが、 LDAP の管理者に向けた文書です。 http://www5f.biglobe.ne.jp/~inachi/openldap/admin23/index-ja.html をお読みください (日本語です) 。
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 もあります。