ディレクトリ情報のアクセスは一連の規則によって制御されます。この規則によって、ユーザーが特定のエントリや属性に対しどのような操作ができるかが決まります。ユーザーに与えられるアクセス権のレベルは、ユーザーが指定する認証情報によって異なります。さらに、このレベルは、特定のエントリや属性に対してディレクトリ管理者が定義する特定の規則によっても異なります。
ディレクトリ情報のアクセス権には 5 つのレベルがあります。このレベルは、特権の低い順に次のようになります。
あるレベルの操作に対するアクセス権が与えられた場合、それより下のレベルのすべてのアクセス権がデフォルトで与えられます。たとえば、読み取りアクセス権は、デフォルトでは検索と比較のアクセス権を含みます。
アクセス制御規則は、あるエントリと属性群に対しどのユーザーにどのアクセス権を与えるかを定義するものです。たとえば、すべてのエントリにおけるパスワードを除くすべての属性の読み取りアクセス権と、パスワード属性に対する比較アクセス権をユーザーに与えることができます。
アクセス制御規則を適用するエントリまたは属性のセットは、次の機能を使用して定義できます。
識別名における正規表現 (「識別名エディタの使用方法」を参照)
LDAP フィルタ (「フィルタエディタの使用方法」を参照)
たとえば、次のアクセス制御規則を定義できます。
ユーザーは、自身のパスワード属性に対し書き込みアクセス権を持っているが、他のユーザーのパスワードに対しては比較アクセス権しかない。
エントリの属性値として locality=San Francisco を持つユーザーは、属性値として locality=San Francisco を持つすべてのエントリに対し読み取りアクセス権を持つが、そのパスワード属性値を読み取ることはできない。
アクセス制御規則は順番に適用されるので、それらをリストする順序が重要になります。つまり、特定の規則を前に記述し、一般的な規則をそれより後に記述する必要があります。構成ツールを使ってアクセス制御規則をどのように定義し、それらの順序をどのように指定するかについては、「アクセス制御の構成」を参照してください。
ディレクトリに対して定義されているアクセス制御規則によっては、一定の操作の際にディレクトリに「バインドする」必要があります。「バインド」とは、識別名とパスワードを指定することによって認証を受けることです。この処理によって、接続されている間のアクセス権のレベルが決まります。
たとえば、デフォルトのアクセス制御規則では、自身のディレクトリエントリのパスワードに対し書き込みアクセス権があります。エントリの識別名とパスワードを使ってバインドすると、そのユーザーは、そのエントリのキーワード「ユーザー自身 (self)」で識別されます。匿名のバインドでは、パスワード属性を除くすべてのエントリと属性に対し検索と読み取りのアクセス権があります。パスワード属性に対しては、比較アクセス権が与えられます。キーワード「全ユーザー (everyone)」または * が指定されているユーザーには、これらのアクセス権が与えられます。
デフォルトのアクセス制御は、インストール時に次のように定義されます。
すべてのユーザーには、userPassword 属性の値に対し比較アクセス権があります。userPassword 属性の値を変更するには、その属性を持つエントリの識別名でバインドする必要があります。つまりパスワードは、エントリの所有者だけが変更できます。
すべてのユーザーには、chapPasswd、radiusLoginPasswd、radiusPppPasswd、radiusSlipPasswd の各属性値に対して比較アクセス権があります。これらの属性を持つエントリの識別名でバインドするユーザーには、これらの属性に対する書き込みアクセス権が与えられます。
エントリの識別名でバインドするユーザーには、そのエントリの userPassword、gecos、loginShell の各属性に対する書き込みアクセス権があります。それ以外のユーザーは読み取りアクセス権だけです。
すべてのユーザーには、cn、dataSource、homeDirectory、messageStore、messageStoreSizeQuota、mail、mailServer、objectStatus、preferredRfc822Recipient、rfc822Mailbox、uid の各属性に対する読み取りアクセス権があります。
エントリのメンバー属性が TRUE と結合可能であれば、その属性に対しどのユーザーも自身の識別名を追加または削除できます。
システム管理者には、常にすべてのエントリのすべての属性に対し完全なアクセス権があります。管理者に与えられたアクセス権は構成ファイルに定義されていないので、変更できません。このため、ディレクトリのすべてのエントリのすべての属性に対してアクセス権を持つユーザーが常に少なくとも 1 人いることになります。
これらの規則は、特定のものから一般的なものへ順番に適用されます。
例 1-1 は、ディレクトリサーバー構成ファイル /etc/opt/SUNWconn/ldap/current/dsserv.acl.conf に定義されているデフォルトのアクセス制御です。
access to attrs=userPassword by self write by * compare # Radius ACLs access to attrs=chapPassword, radiusLoginPasswd, radiusPppPasswD, radiusSlipPasswd by self write by * compare access to attrs=sharedKey by self write by * compare # dsyppasswdd ACLs access to attrs=userPassword by self write by * compare access to attrs=gecos,loginShell by self write # SIMS ACLs access to attrs=cn, dataSource, homeDirectory, mail, mailHost, mailQuota, objectStatus, preferredRfc822Recipient, rfc822Mailbox, uid by self read by * read # Default ACLs access to filter="joinable=TRUE" attrs=member,entry by dnattr=member selfwrite access to * by self read |
Sun Directory Services のアクセス制御規則の構成方法については、「アクセス制御の構成」を参照してください。