この特集のトップページへ

Directory first step 6... ディレクトリサービス製品
sankaku.gif 権限の継承

 NDSやActive Directoryには,コンテナオブジェクトに対してアクセス権限を設定することで,その配下にある全オブジェクトに同じアクセス権限を割り当てる機能がある。NDSは動的な権限継承モデルを採用しているが,Active Directoryは静的な権限継承モデルを採用している。

 NDSの場合,コンテナオブジェクトにアクセス権限を設定すると,そのセキュリティ情報はコンテナオブジェクトのACL(Access Control List)に格納される。コンテナオブジェクトのACLに格納されたセキュリティ情報を変更しても,その配下のオブジェクトのACLが変更されることはない。クライアントのユーザーがオブジェクトにアクセスすると,ディレクトリサーバーは目的のオブジェクトのACLと親のコンテナオブジェクトのACLとを参照し,動的にアクセス権限を決定するのである。したがって,アクセス権限の継承が設定されているコンテナオブジェクトの配下に新しいオブジェクトを作成すると,親のコンテナオブジェクトのアクセス権限が自動的に新しいオブジェクトにも継承される。必然的に,親のコンテナオブジェクトに対する情報の変更量がレプリケーションのデータ量となり,レプリケーショントラフィックは少なくてすむ。また,オブジェクトを別のコンテナオブジェクトに移動すると,元のコンテナオブジェクトのACLは継承されず,自動的に移動先のコンテナオブジェクトのアクセス権限に変更される。このため,コンテナオブジェクトに割り当てられたリソースを,ただちに利用できるようになる。一般的に,人事異動に伴って,異動元のアクセス権限は異動先のアクセス権限に変更しなければならないことが多い。このような実務に沿った設定が自動的に行われるため,NDSの動的な権限継承メカニズムは合理的であるといえる。また,権限の継承をフィルタリングする機能も備えているので,権限の自動継承を停止させることもできる。しかし,NDSの動的な権限継承メカニズムにも,欠点はある。ディレクトリのオブジェクトに対するアクセスが生じるたびに,親のコンテナオブジェクトのアクセス権限を参照しなければならないので,性能上のオーバーヘッドが大きくなってしまうのである。

 これに対してActive Directoryの場合は,コンテナオブジェクトに対してアクセス権限を設定すると,その配下のオブジェクトに対して同じACLが設定される。したがって,コンテナオブジェクトに対する権限を備えるユーザーは,そのコンテナオブジェクトの配下に存在するすべてのオブジェクトに対して同じ権限を持つことになる。また,コンテナオブジェクトの配下に新たなオブジェクトを作成したときには,そのオブジェクトに対して明示的にアクセス権限を設定しなければならない。さらに,静的な権限継承メカニズムでは,コンテナオブジェクトの配下に置かれた個々のオブジェクト自体にすべての権限情報を格納することになるため,ディレクトリのサイズが増大する傾向にある。ディレクトリのサイズが増大すると,応答性能が劣化したり,レプリケーショントラフィックが増大したりするおそれもある。Active Directoryでは,別のコンテナオブジェクトにオブジェクトを移動しても,元のアクセス権限は変更されず,そのまま引き継がれる。一見すると合理的ではないようにも見えるが,プロジェクトに参加しているメンバーなど,特定の個人に対して権限が与えられている場合,所属部署が変わってもアクセス権限を再設定する必要がないので,このような場合には便利である。ただし,Active Directoryの場合にはドメインの制限があるため,ドメインをまたぐような移動については,アクセス権限を引き継ぐことはできない。なお,クライアントのユーザーからオブジェクトにアクセスするときには,目的のオブジェクトのACLだけを参照してアクセス権限を判別できるので,性能上のオーバーヘッドは小さくてすむ。

 Netscape Directory Serverの場合は,ディレクトリ全体,ディレクトリの特定のサブツリー,ディレクトリ内の特定のエントリ(組織や組織ユニットなど),エントリ属性の特定の属性値,特定のユーザー,特定のグループに所属する全ユーザー,ディレクトリの全ユーザー,IPアドレス,DNS名,といった各要素に対してアクセス権限を設定することができる。設定されたアクセス権限は,ディレクトリツリーの上位から下位に継承される。ユーザーがディレクトリエントリにアクセスしようとすると,ディレクトリサービスはアクセス要求のあったエントリから最上位のルートまでさかのぼってアクセス権限を調べる。アクセス権限は,上位の設定ほど優先される。Netscape Directory Serverのアクセス制御は,ほかのディレクトリサービスよりも細かく設定することができる半面,大規模なディレクトリではアクセス性能が劣化するうえ,設定が複雑化してしまうという欠点もある。NDSやNetscape Directory Serverを利用する場合には,アクセス性能の劣化を回避するため,なるべくディレクトリの階層を少なくすべきである。

prevpg.gif Directory first step(後編) 12/14 nextpg.gif