3.2.6 ディレクトリ・サーバーを使用するときの考慮事項

ディレクトリ・サーバーを使用するときは、次の考慮事項を検討する必要があります。

3.2.6.1 パフォーマンスに関する考慮事項

接続識別子は、アクセス対象のすべてのクライアントに対して、1つのディレクトリ・サーバーに格納されます。クライアント数によっては、ディレクトリ・サーバーに大量の負荷がかかる場合があります。

接続識別子の参照時には、名前は特定のOracleコンテキストのもとで検索されます。ユーザーは比較的迅速なパフォーマンスで検索を実行できるため、データベースの接続時間は影響を受けません。参照の有効範囲を考慮すれば、参照時間が1秒を超えると、ユーザーは接続時間が長く感じるようになります。

ネットワーク・トポロジを変更したり、レプリケーションを実装すれば、パフォーマンスの問題を解決できます。

関連項目:

パフォーマンス問題の解決の詳細は、ディレクトリ・サーバーのベンダーのマニュアルを参照してください。

3.2.6.2 セキュリティに関する考慮事項

管理クライアントはディレクトリ・サーバーのエントリを作成したり変更できるため、セキュリティは必要不可欠です。この項では、セキュリティに関連する項目を取り上げます。

3.2.6.2.1 認証方式

クライアントは、接続文字列名の解決やディレクトリ・エントリの管理など、実行されるタスクに応じて異なる認証方式を使用します。

  • ディレクトリ・サーバー内の情報について参照を実行するクライアントは、通常、匿名認証を使用します。

    名前参照時にLDAPバインドを認証するようにクライアントLDAPネーミング・アダプタを構成できます。ネットワーク・サービス・データを保護するか、またはディレクトリへの匿名バインドを無効にする必要があるサイトは、名前参照時の認証にウォレットを使用するようにクライアントを構成する必要があります。

    この構成では、クライアント証明書のDNをディレクトリ・サーバー内のユーザーのDNにマッピングします。これらのクライアントについて、sqlnet.oraファイルで次のパラメータを設定する必要があります。

    • NAMES.LDAP_AUTHENTICATE_BIND=TRUE
    • WALLET_LOCATION=location_value

    Oracleウォレット・トラスト・ストアには、LDAPサーバーの認証局によって発行されたルート証明書が含まれている必要があります。

    Oracle Database 21c以降では、簡易認証を使用してLDAPSバインドを認証するようにクライアントLDAPネーミング・アダプタを構成できます。この方式では、ウォレットに格納されているユーザー名とパスワードにアクセスすることによって、LDAP over TLS接続(LDAPS)を使用します。

    パラメータWALLET_LOCATIONは、Oracle DatabaseサーバーのOracle Database 23aiでの使用は非推奨です。Oracle Databaseクライアントおよびリスナーでの使用は非推奨ではありません。

    Oracle Databaseサーバーの場合は、WALLET_LOCATIONを使用するかわりに、WALLET_ROOTシステム・パラメータの使用をお薦めします。

  • ディレクトリ・サーバー・エントリを管理するクライアントは、ディレクトリ・サーバーで認証を実行します。Database Configuration AssistantやOracle Net Managerを使用すると、エントリの追加や修正が可能です。適正な権限を持つ認証ユーザーのみがエントリを変更できます。次のいずれかの認証方式を使用します。

    • 簡易認証

      クライアントは、DNおよびパスワードを使用して、クライアント自体をディレクトリ・サーバーに認証要求します。サーバーは、クライアントが送信したDNおよびパスワードが、ディレクトリ・サーバーに格納されているDNおよびパスワードと一致していることを確認します。

    • 厳密認証

      クライアントは、Transport Layer (TLS)で使用可能な公開キー暗号を使用して、ディレクトリ・サーバーに対して自分自身を識別します。公開キー暗号では、メッセージの送信側が受信側の公開キーを使用してメッセージを暗号化します。メッセージが送達されると、受信側は、受信側の秘密キーを使用して、メッセージを復号化します。

      相互TLS認証を使用してディレクトリ・サーバーを構成し、クライアント証明書のDNをディレクトリ・ユーザー・エントリにマップしている場合、ディレクトリ・サーバーは認証にクライアント証明書を使用します。

3.2.6.2.2 アクセス制御リスト

クライアントがディレクトリ・サーバー内の情報に対して読取り、変更または追加をできるかどうかを判断するときは、認証とアクセス制御リスト(ACL)を併用します。

ACLの指定内容は、次のとおりです。

  • ユーザーがアクセス可能なエントリ。

  • エントリへのアクセスに使用する認証方式。

  • アクセス権、またはユーザーがオブジェクトに対して可能な処理(読取り、書込みなど)。

ACLは、ユーザーのグループに対して作成されます。Oracleコンテキストの作成時には、OracleDBCreatorsOracleNetAdminsおよびOracleContextAdminsの各グループが作成されます。

Oracle Net Configuration Assistantを使用してOracleコンテキストを作成するユーザーは、これらのグループの先頭に自動的に追加されます。

ノート:

エンタープライズ・ユーザー・セキュリティ(EUS)はOracle Database 23aiでは非推奨です。

集中管理ユーザー(CMU)の使用に移行することをお薦めします。この機能を使用すると、エンタープライズ・ユーザー認証およびデータベースへの認可のためのディレクトリ・サービスを介在させることなく、Microsoft Active Directoryに直接接続できます。Oracle Databaseがクラウドにある場合は、クラウド・アイデンティティ・プロバイダとの新しい統合のいずれかへの移行を選択することもできます。

表3-2では、これらのグループ、匿名ユーザー、およびディレクトリ・サーバー内のOracle Netエントリに対する関連内容のACL要件に応じて説明します。

表3-2 ユーザー・グループのACL要件

グループ ACL要件

匿名ユーザー

匿名ユーザーは、ディレクトリ・サーバー内のすべてのOracle Net属性とオブジェクトへの読取りアクセス権を持ちます。匿名ユーザーのこれらのオブジェクトに対する読取りアクセスは、Oracleコンテキストにも適用されます。これにより匿名ユーザーは、cn=OracleContextというRDN内に含まれるディレクトリ・ネーミング・エントリをブラウズできます。

Oracle Net Configuration Assistantは、クライアントのインストール時にこのアクセスをセットアップします。

OracleContextAdminsグループ・ユーザー

OracleContextAdmins(cn=OracleContextAdmins,cn=Groups,cn=OracleContext,...)のメンバーには、すべてのディレクトリ・ネーミング・オブジェクトに対する作成、変更および読取りのアクセス権限があります。Oracle Net Configuration Assistantは、Oracleコンテキストの作成時に、このグループに対するこれらのアクセス権を作成します。

Oracleコンテキストの作成者以外に、この他のユーザーも、ディレクトリ管理者がOracle Enterprise Manager Cloud Controlを使用してこのグループに追加できます。

OracleDBCreatorsグループ・ユーザー

OracleDBCreators(cn=OracleDBCreators,cn=OracleContext,...)のメンバーには、データベース・サービスのオブジェクトと属性に対する作成と読取りのアクセス権限があります。Oracle Net Configuration Assistantは、Oracleコンテキストの作成時に、このグループに対するこれらのアクセス権を作成します。

Oracleコンテキストの作成者以外に、この他のユーザーも、ディレクトリ管理者がOracle Enterprise Manager Cloud Controlを使用してこのグループに追加できます。

OracleNetAdminsグループ・ユーザー

OracleNetAdmins(cn=OracleNetAdmins,cn=OracleContext,...)のメンバーには、ディレクトリ・ネーミングのオブジェクトと属性に対する作成、変更および読取りのアクセス権限があります。Oracle Net Configuration Assistantは、Oracleコンテキストの作成時に、このグループに対するこれらのアクセス権を作成します。

Oracleコンテキストの作成者以外に、ディレクトリ管理者によってこの他のユーザーもこのグループに追加できます。

Oracle Net Services名および関連データに対する参照または読取りアクセスについて高度なセキュリティが必要とされる場合、管理者はデータの一部またはすべてについて追加の読取りアクセス制御を定義できます。こうしたACL定義を使用して、匿名ユーザーによるOracle Net Servicesデータの読取りを禁止できます。Oracle Net Servicesデータに対する読取りアクセスが制限されている場合、クライアントは名前参照を実行する際に認証済バインドを使用する必要があります。

Oracleの構成ツールには、このデータに対する読取りアクセス制限を定義するための事前定義済グループまたはプロシージャがないため、管理者は、ディレクトリ・システムの標準オブジェクト管理ツールを使用して、必要なグループおよびACLを手動で作成する必要があります。

ldapmodifyおよびLDIF形式ファイルを使用して、ACLをOracle Net Servicesオブジェクトに追加できます。例3-2に、ユーザーcn=user1のすべてのアクセスを制限する方法を示します。

例3-2 アクセス制御リストを使用したユーザー・アクセスの制限

dn: cn=sales,cn=oraclecontext,dc=example,dc=com
replace: orclentrylevelaci
orclentrylevelaci: access to attr=(*)
by dn="cn=user1" (noread,nosearch,nowrite,nocompare)

前述の例は、単一オブジェクトのACLの基本的な形式を示しています。この方法は、必ずしもアクセスを定義するための最適な方法ではありません。オブジェクトのアクセス定義は複雑であり、DITの親ノードから継承されるセキュリティ・プロパティに影響する場合があるためです。管理者はディレクトリ・システムのマニュアルを参照し、Oracle Net Servicesオブジェクトのアクセス管理をディレクトリ全体のポリシーおよびセキュリティ実装に統合することをお薦めします。

Oracle Internet Directoryディレクトリの場合、oidadminには、ユーザーおよびグループを作成し、オブジェクトに対するACLおよび一般的なディレクトリ・セキュリティを定義する機能があります。

ディレクトリ・エントリにACLを設定する方法の詳細は、ディレクトリ・サーバー・ベンダーのドキュメントを参照してください。

3.2.6.3 オブジェクト・クラス

Oracleコンテキスト、データベース・サービスまたはネットワーク・サービス名のエントリを作成する前に、ディレクトリが適切なバージョンのOracleスキーマとともに移入されている必要があります。Oracleスキーマは、オブジェクト・クラスと呼ばれる、オブジェクトのタイプを定義します。これは、ディレクトリ・サーバーおよびその属性に格納できます。次の表では、データベース・サービス・エントリ、ネットワーク・サービス名エントリおよびネットワーク・サービス別名エントリのオブジェクト・クラスを示します。

表3-3 Oracle Net Services LDAPの主要なオブジェクト・クラス

オブジェクト・クラス 説明

orclDbServer

データベース・サービス・エントリの属性を定義します。

orclNetService

ネットワーク・サービス名エントリの属性を定義します。

orclNetServiceAlias

ネットワーク・サービス別名エントリの属性を定義します。

次の表では、orclDbServerorclNetServiceおよびorclNetServiceAliasによって使用されるオブジェクト・クラスを示します。

表3-4 Oracle Net Services LDAPの導出オブジェクト・クラス

オブジェクト・クラス 説明

orclNetAddress

リスナー・プロトコル・アドレスを定義します。

orclNetAddressList

アドレスのリストを定義します。

orclNetDescription

データベースのプロトコル・アドレスおよびサービスに対する接続情報が含まれた接続記述子を指定します。

orclNetDescriptionList

接続記述子のリストを定義します。

これらのオブジェクト・クラスは、接続記述子の内容を指定する属性を使用します。

関連項目:

オブジェクト・クラスとその属性に関する詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。