2. Directory Serverのインスタンスと接尾辞
dsutilコマンドを使用して通常ユーザーにユーザー・アカウントを管理させるには:
7. Directory Serverのパスワード・ポリシー
8. Directory Serverのバックアップとリストア
9. Directory Serverのグループ、ロールおよびCoS
16. Directory Proxy Serverのツール
17. Directory Proxy Serverのインスタンス
19. Directory Proxy Serverの証明書
20. Directory Proxy Serverのロード・バランシングとクライアント・アフィニティ
22. Directory Proxy Serverによる仮想化
24. Directory Proxy ServerとバックエンドLDAPサーバーの接続
25. クライアントとDirectory Proxy Serverの接続
26. Directory Proxy Serverのクライアント認証
27. Directory Proxy Serverのロギング
28. Directory Proxy Serverの監視とアラート
第3部 Directory Service Control Centerの管理
ディレクトリのエントリのアクセス・ポリシーを管理する場合、定義したACIのセキュリティへの影響を把握する必要があります。Directory Serverでは、ACIで特定のエントリ上の特定のユーザーに付与した実効権限を確認して、既存のACIを評価できます。
Directory Serverは、検索操作に含めることができる「実効権限取得」制御に応答します。この制御に対するレスポンスは、検索結果のエントリおよび属性に関する実効権限情報を返すことです。この追加情報としては、各エントリとその中の各属性に対する読取り権限および書込み権限などがあります。検索に使用されるバインドDNや任意のDNでは権限をリクエストできます。これを選択することで、管理者はディレクトリ・ユーザーの権限をテストできます。
実効権限の機能は、LDAP制御に依存します。リモート・サーバーとのバインドに使用されるプロキシ・アイデンティティにも、実効権限属性へのアクセスを許可する必要があります。
実効権限を表示する操作は、保護されていることおよび適切に制限されていることが必要なディレクトリ操作になります。
実効権限情報へのアクセスを制限するには、getEffectiveRights属性のデフォルトACIを変更します。その後、getEffectiveRightsInfo属性の新しいACIを作成します。
たとえば次のACIは、Directory Administratorsグループのメンバーのみに実効権限の取得を許可しています。
aci: (targetattr != "aci")(version 3.0; acl "getEffectiveRights"; allow(all) groupdn = "ldap:///cn=Directory Administrators,ou=Groups,dc=example,dc=com";)
実効権限情報を取得するには、実効権限制御を使用するアクセス制御権限およびaclRights属性の読取りアクセス権が必要です。このような二重の層のアクセス制御により、基本的なセキュリティを必要に応じて微調整できます。プロキシと同様に、エントリのaclRights属性への読取りアクセス権があれば、任意のユーザーのエントリとその属性に対する権限に関する情報をリクエストできます。つまり、リソースを管理するユーザーは、誰がそのリソースに対する権限を持っているかを特定できます。これは、そのユーザーが実際にはその権限を使用してリソースを管理していない場合も同様です。
権限情報をリクエストしているユーザーに実効権限制御を使用する権限がない場合、操作は失敗し、エラー・メッセージが返されます。ただし、権限情報をリクエストしているユーザーに制御を使用する権限はあってもaclRights属性を読み取る権限がない場合、返されるエントリの中にaclRights属性はありません。この動作は、Directory Serverの通常の検索動作を反映しています。
「実効権限取得」制御を指定するには、ldapsearchコマンドで-J "1.3.6.1.4.1.42.2.27.9.5.2"オプションを使用します。デフォルトでは、検索結果でエントリとその属性に対するバインドDNエントリの実効権限が返されます。
次のオプションを使用して、デフォルトの動作を変更します。
-c "dn: bind DN " — 検索結果には、指定されたDNにバインドされているユーザーの実効権限が示されます。管理者は、このオプションを使用して他のユーザーの実効権限をチェックできます。オプション-c "dn:"を指定すると、匿名認証に対する実効権限が表示されます。
-X "attributeName ... " — 検索結果に、指定された属性に対する実効権限も含まれます。このオプションを使用して、検索結果にない属性を指定します。たとえば、このオプションを使用して、エントリ内に現在存在しない属性を追加する権限をユーザーが持つかどうかを特定できます。
-cオプションまたは-Xオプションまたはその両方を使用する場合、-Jオプションに「実効権限取得」制御のOIDが暗黙的に指定されるため、このオプションを指定する必要はありません。実効権限制御でNULL値を指定すると、現在のユーザーの権限が取得されます。また、現在のldapsearch操作で返される属性およびエントリに対する権限も取得されます。
その後、表示する情報のタイプを選択する必要があります。権限のみを表示するか、権限がどのように許可または拒否されているかを示す詳細なロギング情報を表示するか、いずれかを選択します。情報のタイプは、検索結果で返す属性として、aclRightsまたはaclRightsInfoをそれぞれ追加することで特定します。両方の属性をリクエストすると、実行権限の情報をすべて取得できます。ただし、単純な権限情報は基本的には詳細なロギング情報の写しです。
注意: aclRightsおよびaclRightsInfo属性は、仮想の操作属性のように動作します。これらの属性はディレクトリには格納されず、明示的にリクエストしないかぎり返されません。これらの属性は、「実効権限取得」制御に対するレスポンスとしてDirectory Serverで生成されます。
このため、これらの属性を、フィルタやなんらかの検索操作に使用することはできません。
実効権限機能は、アクセス制御に影響するその他のパラメータを継承します。これらのパラメータには、時刻、認証方式、マシンのアドレスおよび名前が含まれます。
次の例は、Carla Fuenteというユーザーがディレクトリ内の自身の権限を表示する方法を示します。その結果において、1は権限が付与されていること、0は権限が拒否されていることを意味します。
$ ldapsearch -J "1.3.6.1.4.1.42.2.27.9.5.2" -h host1.Example.com -p 389 \ -D "uid=cfuente,ou=People,dc=example,dc=com" -w - -b "dc=example,dc=com" \ "(objectclass=*)" aclRights Enter bind password: dn: dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: ou=Groups, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: cn=Accounting Managers,ou=groups,dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: cn=HR Managers,ou=groups,dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: uid=bjensen,ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: uid=cfuente, ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:1,proxy:0
この結果では、Carla Fuenteが少なくとも読取り権限を持つディレクトリ内のエントリが表示され、彼女が自信のエントリを変更できることが示されています。実効権限制御は、通常のアクセス権限をバイパスしないため、ユーザー自身が読取り権限を持たないエントリは表示されません。次の例で、ディレクトリ・マネージャは、Carla Fuenteが読取り権限を持たないエントリを確認できます。
$ ldapsearch -h host1.Example.com -p 389 -D cn=admin,cn=Administrators,cn=config -w - \ -c "dn: uid=cfuente,ou=People,dc=example,dc=com" -b "dc=example,dc=com" \ "(objectclass=*)" aclRights Enter bind password: dn: dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: ou=Groups, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: cn=Directory Administrators, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:0,write:0,proxy:0 dn: ou=Special Users,dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:0,write:0,proxy:0 dn: ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: cn=Accounting Managers,ou=groups,dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: cn=HR Managers,ou=groups,dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: uid=bjensen,ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0 dn: uid=cfuente, ou=People, dc=example,dc=com aclRights;entryLevel: add:0,delete:0,read:1,write:1,proxy:0
前述の出力で、ディレクトリ・マネージャは、Carla Fuenteがディレクトリ・ツリーのSpecial UsersブランチもDirectory Administratorsブランチも参照できないことを確認できます。次の例で、ディレクトリ・マネージャは、Carla Fuenteが自身のエントリのmail属性およびmanager属性を変更できないことを確認できます。
$ ldapsearch -h host1.Example.com -p 389 -D cn=admin,cn=Administrators,cn=config -w - \ -c "dn: uid=cfuente,ou=People,dc=example,dc=com" -b "dc=example,dc=com" \ "(uid=cfuente)" aclRights "*" Enter bind password: version: 1 dn: uid=cfuente, ou=People, dc=example,dc=com aclRights;attributeLevel;mail: search:1,read:1,compare:1, write:0,selfwrite_add:0,selfwrite_delete:0,proxy:0 mail: cfuente@Example.com aclRights;attributeLevel;uid: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 uid: cfuente aclRights;attributeLevel;givenName: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 givenName: Carla aclRights;attributeLevel;sn: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 sn: Fuente aclRights;attributeLevel;cn: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 cn: Carla Fuente aclRights;attributeLevel;userPassword: search:0,read:0, compare:0,write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 userPassword: {SSHA}wnbWHIq2HPiY/5ECwe6MWBGx2KMiZ8JmjF80Ow== aclRights;attributeLevel;manager: search:1,read:1,compare:1, write:0,selfwrite_add:0,selfwrite_delete:0,proxy:0 manager: uid=bjensen,ou=People,dc=example,dc=com aclRights;attributeLevel;telephoneNumber: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 telephoneNumber: (234) 555-7898 aclRights;attributeLevel;objectClass: search:1,read:1,compare:1, write:1,selfwrite_add:1,selfwrite_delete:1,proxy:0 objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetorgperson aclRights;entryLevel: add:0,delete:0,read:1,write:0,proxy:0