JavaScriptが検索に必要です。
ナビゲーション・リンクをスキップ
印刷ビューの終了
Oracle Directory Server Enterprise Edition管理ガイド 11gリリース1(11.1.1.5.0)
検索フィルタ・アイコン
検索アイコン

ドキュメント情報

はじめに

第1部 Directory Serverの管理

1.  Directory Serverのツール

2.  Directory Serverのインスタンスと接尾辞

3.  Directory Serverの構成

4.  Directory Serverのエントリ

5.  Directory Serverのセキュリティ

6.  Directory Serverのアクセス制御

ACIの作成、表示および変更

ACIを作成、変更および削除するには:

ACI属性値を表示するには:

ルート・レベルでACIを表示するには:

ACI構文

ACIターゲット

ターゲット構文

ターゲット・キーワード

ACI権限

権限構文

権限の割当て

一般的なLDAP操作の権限

ACIバインド・ルール

バインド・ルールの概要

バインド・ルール構文

バインド・ルールのキーワード

ブール値バインド・ルール

dsutilコマンドを使用して通常ユーザーにユーザー・アカウントを管理させるには:

アクセス制御の使用例

匿名アクセスの許可

ACI "Anonymous Example.com"

ACI "Anonymous World"

個人エントリへの書込みアクセスの許可

ACI "Write Example.com"

ACI "Write Subscribers"

特定のレベルへのアクセス権の付与

ACI "Read Example.com only"

キー・ロールへのアクセス権の制限

ACI "Roles"

ロールに対する接尾辞全体への完全アクセスの許可

ACI "Full Access"

グループに対する接尾辞への完全アクセスの許可

ACI "HR"

グループ・エントリを追加および削除する権限の付与

ACI "Create Group"

ACI "Delete Group"

ユーザーに対するグループへの自身の追加または削除の許可

ACI "Group Members"

グループまたはロールへの条件付きアクセスの許可

ACI "Company333"

アクセスの拒否

ACI "Billing Info Read"

ACI "Billing Info Deny"

プロキシ認可

プロキシ認可の例

フィルタリングを使用したターゲットの設定

カンマを含むDNの権限の定義

実効権限の表示

実効権限取得制御へのアクセス制限

実効権限取得制御の使用方法

高度なアクセス制御: マクロACIの使用方法

マクロACIの例

マクロACIの構文

ターゲット内での($dn)とのマッチング

サブジェクト内での($dn)の置換

サブジェクト内での[$dn]の置換

($attr.attrName)に対するマクロ・マッチング

アクセス制御情報のロギング

ACIのロギングを設定するには:

TCPラップによるクライアントホスト・アクセス制御

TCPラップを有効にするには:

TCPラップを無効にするには:

7.  Directory Serverのパスワード・ポリシー

8.  Directory Serverのバックアップとリストア

9.  Directory Serverのグループ、ロールおよびCoS

10.  Directory Serverのレプリケーション

11.  Directory Serverのスキーマ

12.  Directory Serverの索引作成

13.  Directory Serverの属性値の一意性

14.  Directory Serverのロギング

15.  Directory Serverの監視

第2部 Directory Proxy Serverの管理

16.  Directory Proxy Serverのツール

17.  Directory Proxy Serverのインスタンス

18.  LDAPデータ・ビュー

19.  Directory Proxy Serverの証明書

20.  Directory Proxy Serverのロード・バランシングとクライアント・アフィニティ

21.  Directory Proxy Serverの配布

22.  Directory Proxy Serverによる仮想化

23.  仮想データ変換

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の管理

29.  Directory Service Control Centerの構成

索引

アクセス制御の使用例

この項の例では、架空のISP会社Example.comが会社のアクセス制御ポリシーを実装する様子を示します。

またACIの例は、インストールinstall_path/resources/ldif/Example.ldifに用意されているサンプルのLDIFファイルの中にもあります。

すべてのサンプルでは、LDIFファイルを使用して特定のタスクを実行する方法を説明しています。次の図は、example.comのディレクトリ情報ツリーをグラフィカルに示したものです。

図: サンプル・ディレクトリ・ツリーのトポロジトップ・レベル・エントリとその直下のエントリを示します。

Example.comでは、Webホスティング・サービスおよびインターネット・アクセスを提供します。Example.comのWebホスティング・サービスでは、クライアント企業のディレクトリをホストします。Example.comは、Company333とCompany999という2つの中規模企業のディレクトリを実際にホストし、部分的に管理しています。Example.comは、多数の個人サブスクライバにインターネット・アクセスも提供しています。

Example.comは、次のアクセス・ルールを設定しようとしています。

匿名アクセスの許可

多くのディレクトリは、少なくとも1つの接尾辞に匿名アクセスで読取り、検索、または比較できるように構成されています。社員が検索できる電話帳のような、企業内の個人情報を収めたディレクトリを管理している場合、そのためのアクセス権の設定が必要になることがあります。これは、Example.com社内のケースで、「ACI "Anonymous Example.com"」で説明されています。

また、Example.comはISPとして世界中からアクセス可能な公開電話帳を作成して、すべてのサブスクライバの連絡先情報を公開することも考えています。これについては、「ACI "Anonymous World"」に説明があります。

ACI "Anonymous Example.com"

Example.comの従業員に対してExample.comツリー全体の読取り、検索および比較権限を付与するには、LDIFで次の文を記述します。

aci: (targetattr !="userPassword")(version 3.0; acl "Anonymous
 example"; allow (read, search, compare)
 userdn= "ldap:///anyone") ;)

この例では、acidc=example,dc=com entryに追加されることを前提としています。userPassword属性は、ACIの範囲に含まれていません。


注意: パスワード属性を保護するサンプルで使用された構文(targetattr !="attribute-name")を使用して、機密の属性や表示してはならない属性を保護します。


ACI "Anonymous World"

世界中のユーザーに対して個人サブスクライバ・サブツリーへの読取りおよび検索アクセスを許可し、公開しないサブスクライバの情報へのアクセスを拒否するには、LDIFで次の文を記述します。

aci: (targetfilter= "(!(unlistedSubscriber=yes))")
 (targetattr="homePostalAddress || homePhone || mail")
 (version 3.0; acl "Anonymous World"; allow (read, search)
 userdn="ldap:///anyone";)

この例では、ACIがou=subscribers,dc=example, dc=comエントリに追加されることを前提としています。また、それぞれのサブスクライバ・エントリに、yesまたはnoの値を持つunlistedSubscriber属性が設定されていることを前提としています。ターゲット定義により、この属性の値に基づいて、公開しないサブスクライバが除外されます。フィルタ定義の詳細は、「フィルタを使用したターゲットの設定」を参照してください。

個人エントリへの書込みアクセスの許可

多くのディレクトリ管理者は、内部ユーザーに対して、ユーザー自身のエントリの属性のすべてではなく、一部の変更のみを許可します。Example.comのディレクトリ管理者は、ユーザー自身のパスワード、自宅の電話番号、自宅の住所の変更のみを各ユーザーに許可します。これについては、「ACI "Write Example.com"」に説明があります。

またExample.comには、サブスクライバがディレクトリに対してSSL接続を確立した場合に、Example.comツリー内の自身の個人情報を更新できるポリシーもあります。これについては、「ACI "Write Subscribers"」に説明があります。

ACI "Write Example.com"


注意: この権限を設定すると、ユーザーに属性値を削除する権限も付与することになります。


Example.comの従業員に対して、自身の電話番号および自宅の住所を更新する権限を付与するには、LDIFで次の文を記述します。

aci: (targetattr="homePhone ||
 homePostalAddress")(version 3.0; acl "Write Example.com";
 allow (write) userdn="ldap:///self" ;)

この例では、ACIがou=People,dc=example,dc=comエントリに追加されることを前提としています。

ACI "Write Subscribers"


注意: この権限を設定すると、ユーザーに属性値を削除する権限も付与することになります。


Example.comのサブスクライバに対して、自身の電話番号を更新する権限を付与するには、LDIFで次の文を記述します。

aci: (targetattr="homePhone")
 (version 3.0; acl "Write Subscribers"; allow (write)
 userdn= "ldap://self" and authmethod="ssl";)

この例では、ou=subscribers,dc=example, dc=comエントリにaciが追加され、ユーザーはSSLを使用してバインドする必要があることを前提としています。

Example.comのサブスクライバは、自宅の住所への書込みアクセス権はありません(その属性を削除できてしまうため)。自宅の住所は、Example.comが請求の目的で必要となる、ビジネスの上で重要な情報です。

特定のレベルへのアクセス権の付与

ディレクトリ・ツリー内で各種レベルに作用するACIの範囲を設定して、許可するアクセスのレベルを微調整できます。ターゲットACIの範囲は、次のいずれかに設定できます。

base

エントリ自体

onelevel

エントリ自体と1レベル下のすべてのエントリ

subtree

エントリ自体とそのエントリの下のすべてのエントリ(深さは無制限)

ACI "Read Example.com only"

Example.comサブスクライバに対して、会社の連絡先情報についてのエントリdc=example,dc=comの読取り権限は与えても、それより下のエントリへのアクセスを拒否するには、LDIFで次の文を記述します。

aci: (targetscope="base") (targetattr="*")(version 3.0;
 acl "Read Example.com only";  allow (read,search,compare)
 userdn="ldap:///cn=*,ou=subscribers,dc=example,dc=com";)

この例では、ACIがdc=example,dc=com entryエントリに追加されることを前提としています。

キー・ロールへのアクセス権の制限

ディレクトリ内のロール定義を使用して、ネットワークおよびディレクトリの管理など、ビジネスに重要な機能を特定できます。

たとえば、世界規模の企業サイトで特定の曜日の特定の時間に対応できるシステム管理者のサブセットを特定して、superAdminロールを作成できます。または、特定の場所で応急処置訓練を受けたすべてのスタッフ・メンバーを含むFirst Aidロールを作成できます。ロール定義の作成の詳細は、「ロールの管理」を参照してください。

ロールによって、業務上あるいはビジネス上重要な機能に関するユーザー特権を与える場合は、そのロールに対するアクセス制限を考慮してください。たとえば、次の例に示すように、Example.comの従業員はsuperAdmin以外の任意のロールを自身のエントリに追加できます。

ACI "Roles"

Example.com従業員に対して、superAdmin以外の任意のロールを自身のエントリに追加する権限を付与するには、LDIFで次の文を記述します。

aci: (targetattr="*") (targattrfilters="add=nsRoleDN:
 (nsRoleDN !="cn=superAdmin, dc=example, dc=com")")
 (version 3.0; acl "Roles"; allow (write)
 userdn= "ldap:///self" ;)

この例では、ACIがou=People,dc=example,dc=comエントリに追加されることを前提としています。

ロールに対する接尾辞全体への完全アクセスの許可

特定のユーザーに、接尾辞に対してディレクトリ・マネージャと同じ権限を付与すると、便利な場合があります。Example.comで、Kirsten VaughanはDirectory Serverの管理者です。彼女にはsuperAdminのロールがあります。このロールには、次の利点があります。


注意: Kirsten Vaughanをcn=Administrators,cn=configグループに追加すると、ディレクトリ・マネージャと同じ権限が彼女に付与されます。


サーバー全体に対して、ユーザーにディレクトリ・マネージャと同じ権限を付与する場合、「ルート・アクセス権を持つ管理ユーザーを作成するには:」の手順に従ってください。

ACI "Full Access"

管理者Kirsten Vaughanにディレクトリ・マネージャと同じ権限を付与するには、LDIFで次の文を使用します。

aci: (targetattr="*") (version 3.0; acl "Full Access";
 allow (all) groupdn= "ldap:///cn=SuperAdmin,dc=example,dc=com"
 and authmethod="ssl" ;)

この例では、ACIがルート・エントリ"" (テキストなし)に追加されることを前提としています。

グループに対する接尾辞への完全アクセスの許可

多くのディレクトリには、固有の業務機能の特定するためのグループがあります。グループにディレクトリの全体または一部へのアクセス権を付与できます。グループにアクセス権を適用することで、メンバーに個別にアクセス権を設定せずにすみます。かわりにグループにメンバーを追加することで、ユーザーにアクセス権を付与します。

たとえば、Directory Serverインスタンスを作成する場合、ディレクトリへの完全なアクセス権を持つAdministratorsグループcn=Administrators,cn=configがデフォルトで作成されます。

Example.comのHuman Resourcesグループは、ディレクトリのou=Peopleブランチへの完全なアクセスが許可され、このグループのメンバーは、「ACI "HR"」に示すように、従業員ディレクトリを更新できます。

ACI "HR"

HRグループに対して、ディレクトリのemployeeブランチへのすべての権限を付与するには、LDIFで次の文を使用します。

aci: (targetattr="*") (version 3.0; acl "HR"; allow (all)
  groupdn= "ldap:///cn=HRgroup,ou=Groups,dc=example,dc=com";)

この例では、ACIが次のエントリに追加されることを前提としています。

ou=People,dc=example,dc=com

グループ・エントリを追加および削除する権限の付与

一部の組織では、従業員にツリー内のエントリの作成を許可し、従業員の効率を向上させ、従業員にコーポレート・ダイナミクスへの貢献を促します。たとえばExample.comでは、社会委員会に、テニス、水泳、スキー、ロールプレイなど様々なクラブが編成されています。

Example.comのすべての従業員は、「ACI "Create Group"」に示すように、新しいクラブを表すグループ・エントリを作成できます。

Example.comの従業員はだれでも、「ユーザーに対するグループへの自身の追加または削除の許可」に示すように、これらのいずれかのグループのメンバーになれます。

「ACI "Delete Group"」に示すように、グループ所有者のみがグループ・エントリを変更または削除できます。

ACI "Create Group"

Example.comの従業員に対して、ou=Social Committeeブランチの下にグループ・エントリを作成する権限を付与するには、LDIFで次の文を記述します。

aci: (targetattr="*") (targattrfilters="add=objectClass: 
(|(objectClass=groupOfNames)(objectClass=top))") 
(version 3.0; acl "Create Group"; allow (read,search,add) 
userdn= "ldap:///uid=*,ou=People,dc=example,dc=com") 
and dns="*.Example.com";)

この例では、ACIがou=Social Committee,dc=example,dc=comエントリに追加されることを前提としています。


注意:


ACI "Delete Group"

Example.comの従業員に対して、ou=Social Committeeブランチの下の、自身が属するグループのグループ・エントリを変更または削除する権限を付与するには、LDIFで次の文を記述します。

aci: (targetattr = "*") (targattrfilters="del=objectClass:
(objectClass=groupOfNames)")
 (version 3.0; acl "Delete Group"; allow (write,delete)
 userattr="owner#GROUPDN";)

この例では、aciou=Social Committee,dc=example,dc=comエントリに追加されることを前提としています。

DSCCを使用してこれを作成するのはあまり効率的ではありません。手動の編集モードを使用してターゲット・フィルタを作成し、さらにグループの所有権をチェックする必要があります。

ユーザーに対する自身のグループへの追加またはグループからの削除の許可

多くのディレクトリでは、ユーザーに対してメーリング・リストなどのグループへのユーザー自身の追加またはここからの削除を許可するACIを設定しています。

Example.comでは、従業員はou=Social Committeeサブツリーの下の任意のグループ・エントリに自身を追加できます(「ACI "Group Members"」を参照)。

ACI "Group Members"

Example.comの従業員に対して、自身をグループに追加する権限を付与するには、LDIFで次の文を記述します。

aci: (targettattr="member")(version 3.0; acl "Group Members";
 allow (selfwrite)
 (userdn= "ldap:///uid=*,ou=People,dc=example,dc=com") ;)

この例では、ACIがou=Social Committee,dc=example,dc=comエントリに追加されることを前提としています。

グループまたはロールへの条件付きアクセスの許可

多くの場合、グループまたはロールにディレクトリへのアクセス権を付与する際に、正しい権限を持つユーザーを偽装しようとする侵入者からこれらの権限を確実に保護する必要があります。そのため、グループまたはロールに重要なアクセスを許可するアクセス制御ルールには、たいてい多くの条件が関連付けられます。

たとえばExample.comでは、ホストしている企業Company333とCompany999のそれぞれにDirectory Administratorロールを作成しています。Example.comでは、これらの企業が自身のデータを管理し、自身のアクセス制御ルールを実装できるようにする一方、侵入者からデータを保護する必要があると考えています。

そのため、次の条件を満たしていれば、Company333とCompany999はディレクトリ・ツリーのそれぞれのブランチに対する完全な権限が付与されます。

これらの条件は、各会社のACI (ACI "Company333"およびACI "Company999")で示されています。両方のACIの内容は同じであるため、次の例では"Company333" ACIのみを使用します。

ACI "Company333"

Company333に対して、前述の条件の下でディレクトリの自身のブランチへの完全なアクセス権を付与するには、LDIFで次の文を記述します。

aci: (targetattr = "*") (version 3.0; acl "Company333"; allow (all)
 (roledn="ldap:///cn=DirectoryAdmin,ou=Company333,
 ou=corporate clients,dc=example,dc=com") and (authmethod="ssl")
 and (dayofweek="Mon,Tues,Wed,Thu") and (timeofday >= "0800" and
 timeofday <= "1800") and (ip="255.255.123.234"); )

この例では、ACIがou=Company333,ou=corporate clients,dc=example,dc=comエントリに追加されることを前提としています。

アクセスの拒否

接尾辞の大部分にアクセスをすでに許可している場合、既存のACIの下で接尾辞の一部へのアクセスを拒否できます。


注意: アクセスを拒否すると、アクセス制御の動作が予期しない、または複雑なものになる可能性があるため、可能であれば避けてください。アクセスは、範囲、属性リスト、ターゲット・フィルタなどを組み合せて制限します。

また、アクセス拒否ACIを削除しても、権限が削除されるのではなく、他のACIで設定された権限が拡大されます。


Directory Serverでアクセス権を評価する場合、最初にdeny権限を読み取り、次にallow権限を読み取ります。

次の例で、Example.comは、すべてのサブスクライバが自身のエントリの下で接続時間やアカウント残高などの課金情報を確認できるようにしたいと考えています。また、その情報への書込みアクセスについては明示的に拒否したいと考えています。readアクセスについては、「ACI "Billing Info Read"」に説明があります。denyアクセスについては、「ACI "Billing Info Deny"」に説明があります。

ACI "Billing Info Read"

サブスクライバに対して、自身のエントリの課金情報を読み取る権限を付与するには、LDIFで次の文を記述します。

aci: (targetattr="connectionTime || accountBalance")
 (version 3.0; acl "Billing Info Read"; allow (search,read)
  userdn="ldap:///self";)

この例では、関連の属性がスキーマに作成されており、ACIがou=subscribers,dc=example,dc=comエントリに追加されることを前提としています。

ACI "Billing Info Deny"

サブスクライバに対して、自身のエントリの課金情報を変更する権限を拒否するには、LDIFで次の文を記述します。

aci: (targetattr="connectionTime || accountBalance")
 (version 3.0; acl "Billing Info Deny";
 deny (write) userdn="ldap:///self";)

この例では、関連の属性がスキーマに作成されており、ACIがou=subscribers,dc=example,dc=comエントリに追加されることを前提としています。

プロキシ認可

プロキシ認可方式は、認証の特殊な形式です。自身のIDを使用してディレクトリにバインドするユーザーは、プロキシ認可により別のユーザーの権限が付与されます。

プロキシ・リクエストを許可するようにDirectory Serverを構成するには、次を実行する必要があります。


注意: プロキシ権限は、ディレクトリ・マネージャを除くディレクトリの任意のユーザーに付与できます。また、ディレクトリ・マネージャのDNはプロキシDNとして使用できません。プロキシ権限を付与する際は、(ディレクトリ・マネージャDNを除く)任意のDNをプロキシDNとして指定する権限を付与することになるため、細心の注意を払う必要があります。Directory Serverが同一の操作で複数のプロキシ認証の制御を受けた場合、クライアント・アプリケーションにエラーが返され、操作の試行は失敗します。


プロキシ認可の例

Example.comでは、MoneyWizAcctSoftwareとしてバインドするクライアント・アプリケーションに、LDAPデータに対してAccounting Administratorと同じアクセス権を与えたいと考えています。

次のパラメータが適用されます。

クライアント・アプリケーションがAccountingサブツリーへのアクセス権を取得するには、Accounting Administratorと同じアクセス権を使用して、次の条件を満たす必要があります。

このACIが設定されていれば、MoneyWizAcctSoftwareクライアント・アプリケーションがディレクトリにバインドしてから、プロキシDNのアクセス権をリクエストするldapsearchldapmodifyなどのLDAPコマンドを送信できます。

この例では、クライアントがldapsearchコマンドを実行する場合、そのコマンドには次のような制御が含まれます。

$ ldapsearch -D "uid=MoneyWizAcctSoftware,ou=Applications,dc=example,dc=com" -w - \
 -Y "dn: uid=AcctAdministrator,ou=Administrators,dc=example,dc=com" ...

クライアントがldapmodifyコマンドを実行する場合、そのコマンドには次のような制御が含まれます。

$ ldapmodify -h hostname -p port \
-D "uid=MoneyWizAcctSoftware,ou=Applications,dc=example,dc=com" -w - \
-Y"dn: uid=AcctAdministrator,ou=Administrators,dc=example,dc=com"
dn: uid=AcctAdministrator,ou=Administrators,dc=example,dc=com
changetype: modify
delete: userpassword
-
add: userpassword
userpassword: admin1

クライアントは自身としてバインドしますが、プロキシ・エントリの権限が付与されます。クライアントには、プロキシ・エントリのパスワードは不要です。

フィルタリングを使用したターゲットの設定

ディレクトリ全体にわたる多数のエントリへのアクセスを許可するアクセス制御を設定する場合、フィルタを使用してターゲットを設定できます。

フィルタを使用して、HRのすべてのユーザーに従業員エントリへのアクセスを許可するには、LDIFで次の文を記述します。

aci: (targetattr="*") (targetfilter=(objectClass=employee))
 (version 3.0; acl "HR access to employees";
 allow (all) groupdn= "ldap:///cn=HRgroup,ou=People,dc=example,dc=com";)

この例では、ACIがou=People,dc=example,dc=comエントリに追加されることを前提としています。


注意: 検索フィルタは、アクセス管理の対象となるオブジェクトを直接指定するわけではないので、誤ったオブジェクトへのアクセスを許可または拒否しないようにしてください。ディレクトリ構造が複雑になるほど、誤ったオブジェクトへのアクセスを許可または拒否してしまうリスクが大きくなります。さらに、フィルタによって、ディレクトリ内のアクセス制御に関する問題の解決が難しくなる場合もあります。


カンマを含むDNの権限の定義

DNにカンマが含まれている場合、LDIF ACI文の中で特別な処理が必要です。ACI文のターゲットとバインド・ルールの部分で、1つの円記号(\)を使用して、カンマをエスケープする必要があります。次の例でこの構文を示します。

dn: o=Example.com Bolivia\, S.A. 
objectClass: top 
objectClass: organization 
aci: (target="ldap:///o=Example.com Bolivia\,S.A.") (targetattr="*") 
(version 3.0; acl "aci 2"; allow (all) groupdn = 
"ldap:///cn=Directory Administrators, o=Example.com Bolivia\, S.A.";)