WebLogic Server には、デフォルト認証プロバイダ、認可プロバイダ、資格マッピング プロバイダ、およびロール マッピング プロバイダのデフォルトのセキュリティ プロバイダ データ ストアとしての役割を持つ組み込み LDAP サーバが用意されています。以下の節では、組み込み LDAP サーバを管理する方法について説明します。
組み込み LDAP サーバには、ユーザ、グループ、グループ メンバシップ、セキュリティ ロール、セキュリティ ポリシー、および資格マップ情報が格納されます。デフォルトでは、各 WebLogic Server ドメインに、各種の情報のデフォルト値がコンフィグレーションされている組み込み LDAP サーバが 1 つあります。デフォルト認証、認可、資格マッピング、およびロール マッピングの各プロバイダは、組み込み LDAP サーバをデータ ストアとして使用します。新しいセキュリティ レルムでこれらのプロバイダを使用する場合は、組み込み LDAP サーバのデフォルト値を変更して、環境に合わせて最適化できます。
注意 : 組み込み LDAP サーバは、10,000 ユーザ未満の環境で最高のパフォーマンスを示します。これよりユーザが多い場合は、別の LDAP サーバと認証プロバイダの使用を検討してください。 |
Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「組み込み LDAP サーバのコンフィグレーション」を参照してください。
組み込み LDAP サーバで使用されるデータ ファイルおよび変更ログ ファイルは、非常に大きなサイズになる場合があります。以下の weblogic.Server
コマンドライン引数を使用すると、こうしたファイルに対して最大サイズをコンフィグレーションできます。
-Dweblogic.security.ldap.maxSize=<max bytes>
。組み込み LDAP サーバで使用されるデータ ファイルのサイズを制限します。データ ファイルが指定されたサイズを超えると、削除済みのエントリによって占有されていたスペースがデータ ファイルから削除されます。
-Dweblogic.security.ldap.changeLogThreshold=<number of entries>
。組み込み LDAP サーバで使用される変更ログ ファイルのサイズを制限します。変更ログ ファイルが指定されたエントリ数を超えると、すべての管理対象サーバに送信されていたすべてのエントリを削除することによって変更ログが切り詰められます。
ドメインの WebLogic Server の組み込み LDAP サーバは、1 つのマスター LDAP サーバ (ドメインの管理サーバが保持する) と、レプリケートされた LDAP サーバ (ドメインの各管理対象サーバが保持する) で構成されます。管理対象サーバを使用して変更が行われると、その更新データは管理サーバ上の組み込み LDAP サーバに送信されます。管理サーバ上の組み込み LDAP サーバは、すべての変更のログを保持します。また、管理サーバ上の組み込み LDAP サーバは、管理対象サーバのリストと各管理対象サーバの現在の変更ステータスも保持します。管理サーバ上の組み込み LDAP サーバは、各管理対象サーバに適切な変更を送信して、各サーバの変更ステータスを更新します。この処理は管理サーバ上の組み込み LDAP サーバで更新が行われたときに発生します。ただし、更新の回数によっては、変更が管理対象サーバにレプリケートされるのに数秒以上かかることがあります。
Administration Console を使用すると、ドメイン内の管理サーバと管理対象サーバ上の組み込み LDAP サーバの動作をコンフィグレーションできます。Administration Console の [ドメイン|セキュリティ|組み込み LDAP] ページで、以下の属性を設定します。
[起動時にレプリカを更新] - 管理対象サーバの組み込み LDAP サーバがすべてのレプリケートされたデータを起動時にリフレッシュするかどうかを指定します。この設定は、管理対象サーバがアクティブでないときに大量の変更を行った場合に、各変更を管理サーバから管理対象サーバに送るのではなく、レプリカ全体をダウンロードする場合に役立ちます。
[マスターを優先] - 管理対象サーバが、ローカルのレプリケートされた LDAP サーバではなく常に管理サーバ上の組み込み LDAP サーバに接続するかどうかを指定します。
Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「組み込み LDAP サーバのコンフィグレーション」を参照してください。
注意 : コンフィグレーション済みのセキュリティ プロバイダを WebLogic Administration Console で削除および修正する際には、組み込み LDAP サーバの手動クリーンアップが必要になることがあります。外部 LDAP ブラウザを使用して、不要な情報を削除します。 |
LDAP ブラウザで組み込み LDAP サーバの内容を表示するには、次の手順に従います。
外部 LDAP ブラウザをダウンロードしてインストールします。LDAP ブラウザの 1 つは次のサイトにあります。
この手順では、この LDAP ブラウザを使用することを前提としています。他の LDAP ブラウザでは詳細が異なる場合があります。
WebLogic Server Administration Console で、組み込み LDAP サーバの資格を変更します。
[ドメイン|セキュリティ|組み込み LDAP] の順に展開します。
[資格] フィールドに、新しい資格を入力します。
[資格の確認] フィールドに、新しい資格をもう一度入力します。
[保存] をクリックします。
WebLogic Server を再起動します。
警告 : 資格を変更すると、ドメインの動作に影響することがあります。プロダクション サーバでは、この手順は実行しないでください。 |
LDAP ブラウザを起動します。手順 1 で示した LDAP ブラウザ/エディタを起動するには、次のコマンドを使用します。
lbe.sh
LDAP ブラウザで、新しい接続をコンフィグレーションします。
[QuickConnect] タブを選択します。
[ホスト] フィールドを localhost
に設定します。
[ポート] フィールドを 7001
(SSL を使用する場合は 7002
) に設定します。
[ベース DN] フィールドを dc=
mydomain
に設定します。mydomain
は使用する WebLogic Server ドメインの名前です。
[Anonymous Bind] オプションのチェックははずします。
[ユーザ DN] フィールドを cn=Admin
に設定します。
[Password] フィールドに手順 2 で指定した資格を設定します。
新しい接続をクリックします。
LDAP ブラウザを使用して、組み込み LDAP サーバの階層を移動します。
注意 : データをエクスポートし、エクスポート ファイルを参照することで、組み込み LDAP サーバの内容を表示することもできます。「組み込み LDAP サーバの情報のエクスポートおよびインポート」を参照してください。 |
WebLogic Server Administration Console または LDAP ブラウザでは、組み込み LDAP サーバからデータをエクスポートしてインポートできます。Administration Console でデータをエクスポートおよびインポートするには、各セキュリティ プロバイダの [移行] ページを使用します。詳細については、Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「セキュリティ プロバイダからのデータのエクスポート」および「セキュリティ プロバイダへのデータのインポート」を参照してください。
警告 : Administration Console の [移行] タブを使用してセキュリティ データをエクスポートすると、対象ディレクトリ内の拡張子.dat の既存ファイルはすべて削除されます。セキュリティ データは、必ず空のディレクトリにエクスポートするようにしてください。 |
この節では、LDAP ブラウザを使用して、組み込み LDAP サーバに格納されているデータをエクスポートおよびインポートする方法について説明します。表 9-1 に、組み込み LDAP サーバの階層におけるデータの格納場所をまとめます。
表 9-1 組み込み LDAP サーバ内のセキュリティ データの場所
セキュリティ データ | 組み込み LDAP サーバ DN |
---|---|
ユーザ |
ou=people,ou=myrealm,dc=mydomain |
グループ |
ou=groups,ou=myrealm,dc=mydomain |
セキュリティ ロール |
ou=ERole,ou=myrealm,dc=mydomain |
セキュリティ ポリシー |
ou=EResource,ou=myrealm,dc=mydomain |
LDAP ブラウザ/エディタを使用して組み込み LDAP サーバからセキュリティ データをエクスポートするには、次の手順に従います。
コマンド プロンプトに次のコマンドを入力して、LDAP ブラウザ/エディタを起動します。
lbe.sh
エクスポートするデータを指定します (たとえば、ユーザをエクスポートするには ou=people,ou=
myrealm
,dc=
mydomain
と指定します)。
[LDIF|Export] オプションを選択します。
[Export all children] を選択します。
データのエクスポート先ファイルの名前を指定します。
LDAP ブラウザ/エディタを使用して組み込み LDAP サーバにセキュリティ データをインポートするには、次の手順に従います。
コマンド プロンプトに次のコマンドを入力して、LDAP ブラウザを起動します。
lbe.sh
インポートするデータを指定します (たとえば、ユーザをインポートするには ou=people,ou=
myrealm
,dc=
mydomain
と指定します)。
LDAP ブラウザ/エディタで、[LDIF|Import] オプションを選択します。
[Update/Add] を選択します。
データをインポートするファイルの名前を指定します。
組み込み LDAP サーバは IETF の「LDAP Access Control Model for LDAPv3」をサポートしています。この節では、そのアクセス制御を組み込み LDAP サーバの内部に実装する方法について説明します。これらのルールは、標準で想定されているようにディレクトリ内のエントリに直接適用することも、アクセス制御ファイル (acls.prop
) を編集してコンフィグレーションおよび管理することもできます。
注意 : 組み込み LDAP サーバのデフォルトの動作では、WebLogic Server の Admin アカウントからのアクセスのみが許可されます。WebLogic セキュリティ プロバイダでは、Admin アカウントのみを使用して組み込み LDAP サーバにアクセスします。外部 LDAP ブラウザから組み込み LDAP サーバにアクセスする予定がない場合や Admin アカウントのみを使用する予定の場合、acls.prop ファイルの編集は不要なので、この節の情報は無視して構いません。 |
組み込み LDAP サーバが保持するアクセス制御ファイル (acls.prop
) には、LDAP ディレクトリ全体のアクセス制御リスト (ACL) の完全なリストが含まれています。アクセス制御ファイルの各行には、アクセス制御ルールが 1 つずつ含まれています。アクセス制御ルールは以下の要素で構成されています。
ルールを適用する LDAP ディレクトリ内の場所。「アクセス制御の場所」を参照してください。
その場所の内部でルールを適用する範囲。「アクセス制御のスコープ」を参照してください。
アクセス権 (付与または拒否)。「アクセス権」を参照してください。
パーミッション (付与または拒否)。「属性のパーミッション」および「エントリのパーミッション」を参照してください。
ルールを適用する属性。「属性タイプ」を参照してください。
アクセスを付与または拒否するサブジェクト。「サブジェクト タイプ」を参照してください。
コード リスト 9-1 に、アクセス制御ファイルのサンプルを示します。
コード リスト 9-1 サンプル acl.props ファイル
[root]|entry#grant:r,b,t#[all]#public ou=Employees,dc=octetstring,dc=com|subtree#grant:r,c#[all]#public: ou=Employees,dc=octetstring,dc=com|subtree#grant:b,t#[entry]#public: ou=Employees,dc=octetstring,dc=com|subtree#deny:r,c#userpassword#public: ou=Employees,dc=octetstring,dc=com|subtree#grant:r#userpassword#this: ou=Employees,dc=octetstring,dc=com|subtree#grant:w,o#userpassword,title, description, postaladdress,telephonenumber#this: cn=schema|entry#grant:r#[all]#public:
各アクセス制御ルールは LDAP ディレクトリ内の特定の場所に適用されます。場所は通常は識別名 (DN) ですが、アクセス制御ルールをディレクトリ全体に適用する場合は、acls.prop
ファイルで特定の場所の [root
] を指定できます。
LDAP サーバ上でアクセスまたは変更されるエントリが、アクセス制御ルールの場所に一致しないか下位ディレクトリに存在しない場合、指定されたアクセス制御ルールはそれ以上評価されません。
以下のアクセス制御のスコープが定義されています。
エントリ - エントリのスコープを持つ ACL は、LDAP ディレクトリ内のエントリが、アクセス制御ルールの場所と同じ DN を共有する場合にのみ評価されます。このようなルールは、単一のエントリに、同列または下位のエントリよりも重要な情報が含まれる場合に有用です。
サブツリー - サブツリーのスコープは、LDAP ディレクトリ内のエントリが、このアクセス制御の場所と同じ、またはこのアクセス制御の場所で終わる場合に評価されます。このスコープでは、その場所のエントリとすべての下位エントリが保護されます。
ディレクトリ内のエントリが、衝突するアクセス制御ルールの対象となっている場合 (たとえば、あるルールが「エントリ」のルールで、別のルールが「サブツリー」のルールである場合)、「エントリ」のルールが「サブツリー」のルールよりも優先されます。
アクセス権はオブジェクト全体またはオブジェクトの属性に適用されます。アクセスは付与または拒否されます。アクセス制御ルールを作成または更新するときに、grant
または deny
のアクションを使用できます。
LDAP のアクセス権はそれぞれが分離しています。ある権限に別の権限が含まれることはありません。権限では実行できる LDAP 操作のタイプを指定します。
以下のパーミッションは属性を呼び出すアクションに適用されます。
表 9-2 属性のパーミッション
パーミッション | 説明 |
---|---|
|
属性を読み込む。付与される場合、読み込みまたは検索操作で、属性と値を返すことが許可される。 |
|
属性を変更または追加する。付与される場合、変更操作で属性と値の追加が許可される。 |
|
属性を変更または削除する。付与される場合、変更操作で属性と値の削除が許可される。 |
|
指定された属性を持つエントリを検索する。付与される場合、属性と値が検索操作の対象となることが許可される。 |
|
属性値を比較する。付与される場合、属性と値が比較操作の対象となることが許可される。 |
|
このエントリの下の新しい LDAP エントリに属性を作成する。 |
m
パーミッションは、オブジェクトを作成するときにオブジェクトに配置されるすべての属性に対して必須です。変更操作で w
および o
パーミッションが使用されるのと同様に、m
パーミッションは追加操作で使用されます。w
および o
パーミッションは追加操作とは無関係で、m
パーミッションは変更操作とは無関係です。新しいオブジェクトはまだ存在していないため、オブジェクトの作成に必要な a および m
パーミッションは、新しいオブジェクトの親に付与されている必要があります。この要件は、変更対象のオブジェクトに付与する必要のある w
および o
パーミッションとは異なります。エントリに新しい子を追加するために必要なパーミッションと、同じエントリの既存の子を変更するために必要なパーミッションが衝突しないように、m
パーミッションは w
および o
パーミッションとは別個で分離したものになっています。変更操作で値を置き換えるには、ユーザは w
パーミッションと o
パーミッションの両方を持つ必要があります。
以下のパーミッションは LDAP エントリ全体に適用されます。
表 9-3 エントリのパーミッション
パーミッション | 説明 |
---|---|
|
この LDAP エントリの下にエントリを追加する。付与される場合、DIT サブジェクト内にエントリを作成して、作成時に新しいエントリに配置されるすべての属性と値を制御することが許可される。エントリを追加するには、少なくとも必須の属性を追加するパーミッションも付与されなければならない。 |
|
このエントリを削除する。付与される場合、エントリ内の属性の制御に関係なく、DIT からエントリを削除することが許可される。 |
|
エントリとすべての下位エントリを新しい場所にエクスポートする。 付与される場合は、エントリとその下位エントリ (存在する場合) のエクスポートが許可される。つまり、エクスポート先に適したパーミッションを付与するという前提で、エントリを現在の場所から削除して新しい場所に配置する。 最後の RDN を変更する場合は、現在の場所で エントリまたはその下位エントリをエクスポートする際に、エントリに含まれる属性 (RDN 属性を含む) に必須のパーミッションはない。操作によって新しい属性値が追加されたり、RDN の変更の結果として属性値が削除されたりする場合でも、このことが当てはまる。 |
|
エントリと下位エントリを指定された場所からインポートする。 付与される場合、エントリとその下位エントリ (存在する場合) のインポートが許可される。つまり、新しい場所に適したパーミッションが付与される場合、エントリをある場所から削除して指定された場所に配置する。 エントリまたはその下位エントリをインポートする際に、エントリに含まれる属性 (RDN 属性を含む) に必須のパーミッションはない。操作によって新しい属性値が追加されたり、RDN の変更の結果として属性値が削除されたりする場合でも、このことが当てはまる。 |
|
LDAP ディレクトリの DN を変更する。エントリの名前を新しい RDN に変更する (下位エントリの DN も結果として変更される) 場合は、Rename パーミッションを付与する必要がある。上位のエントリの名前を変更しない場合、付与は十分である。 エントリの名前を変更する際に、エントリに含まれる属性 (RDN 属性を含む) に必須のパーミッションはない。操作によって新しい属性値が追加されたり、RDN の変更の結果として属性値が削除されたりする場合でも、このことが当てはまる。 |
|
エントリの DN を参照する。付与される場合、ディレクトリ操作を使用してエントリにアクセスすることが許可される。この操作では、エントリの名前は明示的に提供されない。 |
|
操作の結果にエントリの DN を公開することが許可される。付与される場合、操作の結果にエントリの識別名を公開することが許可される。 |
アクセス制御ルールが適用される属性タイプは、必要な場合に ACL にリストする必要があります。以下のキーワードが使用されます。
[entry]
- パーミッションがオブジェクト全体に適用されることを示します。オブジェクトの削除や子オブジェクトの追加などのアクションを意味します。
[all]
- パーミッションがエントリのすべての属性に適用されることを示します。
ACL 内でキーワード [all]
と別の属性の両方が指定されている場合、属性に対する限定性の高いパーミッションが、[all]
キーワードで指定される限定性の低いパーミッションをオーバーライドします。
アクセス制御ルールは、さまざまなサブジェクト タイプと関連付けることができます。アクセス制御ルールのサブジェクトによって、現在接続しているセッションにアクセス制御ルールが適用されるかどうかが決まります。
以下のサブジェクト タイプが定義されます。
authzID
- サブジェクト定義の一部として指定できる単一のユーザに適用されます。ユーザの ID は、LDAP ディレクトリ内で通常 DN として定義されます。
Group
- 以下のいずれかのオブジェクト クラスで指定されるユーザのグループに適用されます。
groupOfUniqueNames
groupOfNames
groupOfUniqueURLs
1 番目と 2 番目のタイプのグループにはユーザのリストが含まれます。3 番目のタイプでは、定義された基準に基づいてユーザが自動的にグループに分類されます。
Subtree
- LDAP ディレクトリ ツリー内のサブジェクトとすべての下位エントリの一部として指定される DN に適用されます。
IP Address
- 特定のインターネット アドレスに適用されます。このサブジェクト タイプは、すべてのアクセスがプロキシ サーバまたは他のサーバを経由しなければならない場合に便利です。特定のホストにのみ適用され、範囲やサブネットには適用されません。
Public
- 認証されるかどうかにかかわらず、ディレクトリに接続するすべての対象に適用されます。
This
- アクセスされるエントリの DN に一致する DN を持つユーザに適用されます。
エントリ内の情報に対するクライアント アクセスを付与または拒否するかどうかの決定は、アクセス制御ルールや保護されるエントリに関連するさまざまな要因に基づいて行われます。意思決定プロセスの過程には、以下のような指針となる原則があります。
限定性の高いルールが限定性の低いルールをオーバーライドする (たとえば、ACL 内の個々のユーザ エントリは、グループ エントリに優先する)。
ルールの限定性に関係なく衝突が解消されない場合は、ルールのサブジェクトによって適用すべきルールが決まる。IP Address
サブジェクトに基づくルールが最優先され、その次に、特定の AuthzID
または This
サブジェクトに適用されるルールが続きます。次に優先されるのは、Group
サブジェクトに適用されるルールです。優先順位が最も低いのは、Subtree
および Public
サブジェクトに適用されるルールです。
ACL に衝突する値がある場合、拒否の方が付与よりも優先される。
アクセス制御情報がない場合は、デフォルトで拒否される。また、エントリのスコープはサブツリーのスコープに優先します。