59 DBMS_DISTRIBUTED_TRUST_ADMIN

DBMS_DISTRIBUTED_TRUST_ADMINプロシージャは、Trusted Serversリストをメンテナンスします。サーバーが信頼されているかどうかを定義するには、これらのプロシージャを使用します。データベースが信頼されていない場合は、そのデータベースからの現行のユーザーのデータベース・リンクは拒否されます。

この章のトピックは、次のとおりです:

59.1 DBMS_DISTRIBUTED_TRUST_ADMINの概要

Oracleは、エンタープライズLDAPディレクトリ・サービスに格納されているドメイン・メンバーシップ・リストとともにローカルのTrusted Serversリストを使用して、別のデータベースが信頼されているかどうかを判断します。LDAPディレクトリ・サービスのエントリは、Oracle Enterprise ManagerのEnterprise Security Manager Toolで管理されます。

Oracleは、次の条件に一致する場合、別のデータベースを信頼できるとみなします。

  1. ディレクトリ・サービスのエンタープライズ・ドメインがローカル・データベースと同じである。

  2. エンタープライズ・ドメインがディレクトリ・サービスにおいて信頼するとマークされている。

  3. ローカルのTrusted Serversリストに信頼しないと表示されていない。現行のユーザーのデータベース・リンクが別のデータベースから受け入れられるのは、関係する両方のデータベースが互いに信頼されている場合のみです。

ディレクトリ・サービスにリストされているかどうかに関係なく、データベース・サーバーをTrusted Serversリストにローカルでリストできます。ただし、同じドメイン内にローカル・データベースとして存在しないデータベースをリストする場合、またはそのドメインが信頼されていない場合、そのエントリは無効になります。

この機能は、Oracle Advanced SecurityオプションのEnterprise User Security機能の一部です。

59.2 DBMS_DISTRIBUTED_TRUST_ADMINのセキュリティ・モデル

DBMS_DISTRIBUTED_TRUST_ADMINを実行するには、EXECUTE_CATALOG_ROLEロールがDBAに付与されている必要があります。TRUSTED_SERVERSビューを検索するには、SELECT_CATALOG_ROLEロールがDBAに付与されている必要があります。

すべてのサーバーについて、信頼されているかどうかを認識することが重要です。データベースがすべてのデータベースをすでに信頼している場合、またはそのデータベースがすでに信頼されている場合は、ALLOW_SERVERプロシージャで特定のサーバーを信頼しても効果はありません。同様に、そのデータベースがすべてのデータベースをすでに信頼していない場合、またはそのデータベースがすでに信頼されていない場合は、DENY_SERVERプロシージャで特定のサーバーを拒否しても効果はありません。

プロシージャDENY_ALLおよびALLOW_ALLは、それぞれALLOW_SERVERプロシージャまたはDENY_SERVERプロシージャで明示的に許可または拒否されたすべてのエントリ(サーバー名)を削除します。

59.3 DBMS_DISTRIBUTED_TRUST_ADMINの例

パッケージDBMS_DISTRIBUTED_TRUST_ADMINを使用して信頼リストを変更したことがない場合、デフォルトでは、同じ企業ドメイン内のすべてのデータベースを信頼します(そのドメインがディレクトリ・サービスで信頼されているとしてリストされている場合に限ります)。

SELECT * FROM TRUSTED_SERVERS;
TRUST      NAME                                                                            
--------- ---------------------
Trusted   All                                                                             

現在すべてのサーバーが信頼されているため、DENY_SERVERプロシージャを実行し、特定のサーバーを信頼しないことを指定できます。

EXECUTE DBMS_DISTRIBUTED_TRUST_ADMIN.DENY_SERVER
                           ('SALES.US.AMERICAS.ACME_AUTO.COM');
PL/SQL procedure successfully completed.

SELECT * FROM TRUSTED_SERVERS;
TRUST       NAME                                                                            
--------- -----------------------------------------------
Untrusted SALES.US.AMERICAS.ACME_AUTO.COM 

DENY_ALLプロシージャを実行すると、すべてのデータベース・サーバーを信頼しないことを選択できます。

EXECUTE DBMS_DISTRIBUTED_TRUST_ADMIN.DENY_ALL; 

PL/SQL procedure successfully completed.

SELECT * FROM TRUSTED_SERVERS;

TRUST       NAME                                                                            
--------- -----------------------------------------------
Untrusted All                                                                             

ALLOW_SERVERプロシージャを使用すると、特定のデータベース・サーバーを信頼することを指定できます。

EXECUTE DBMS_DISTRIBUTED_TRUST_ADMIN.ALLOW_SERVER 
                            ('SALES.US.AMERICAS.ACME_AUTO.COM');
PL/SQL procedure successfully completed.

SELECT * FROM TRUSTED_SERVERS;
TRUST       NAME                                                                            
--------- ------------------------------------------------
Trusted   SALES.US.AMERICAS.ACME_AUTO.COM

59.4 DBMS_DISTRIBUTED_TRUST_ADMINサブプログラムの要約

この表では、DBMS_DISTRIBUTED_TRUST_ADMINのサブプログラムをリストし、簡単に説明します。

表59-1 DBMS_DISTRIBUTED_TRUST_ADMINパッケージのサブプログラム

サブプログラム 説明

ALLOW_ALLプロシージャ

リストを空にし、すべてのサーバーを信頼することを示す行を挿入します。

ALLOW_SERVERプロシージャ

特定のサーバーへのアクセスを可能にします。リストにdeny allが指定されている場合でも有効です。

DENY_ALLプロシージャ

リストを空にし、すべてのサーバーを信頼しないことを示す行を挿入します。

DENY_SERVERプロシージャ

特定のサーバーへのアクセスを拒否します。リストにallow allが指定されている場合でも有効です。

59.4.1 ALLOW_ALLプロシージャ

このプロシージャは、Trusted Serversリストを空にし、エンタープライズ・ディレクトリ・サービスで信頼されているドメインのメンバーであるすべてのサーバー、および同じドメイン内のすべてのサーバーがアクセスを許可されることを指定します。

TRUSTED_SERVERSビューには、「TRUSTED ALL」と表示されます。これは、エンタープライズ・ディレクトリ・サービスで現在信頼されているすべてのサーバーを、データベースが信頼していることを意味します。

構文

DBMS_DISTRIBUTED_TRUST_ADMIN.ALLOW_ALL;

使用上の注意

ALLOW_ALLは、エンタープライズ・ディレクトリ・サービスで信頼されているとしてリストされているサーバー、および同じエンタープライズ・ドメイン内のサーバーにのみ適用されます。

59.4.2 ALLOW_SERVERプロシージャ

このプロシージャは、指定したサーバーが信頼されていることを保証します(deny allが指定されている場合でも有効です)。

構文

DBMS_DISTRIBUTED_TRUST_ADMIN.ALLOW_SERVER (
   server IN VARCHAR2);

パラメータ

表59-2 ALLOW_SERVERプロシージャのパラメータ

パラメータ 説明

server

信頼するサーバーの一意の完全修飾名

使用上の注意

Trusted Serversリストにエントリdeny allが含まれている場合、このプロシージャは、特定のデータベース(例: DBx)を信頼することを示す指定を追加します。

Trusted Serversリストにエントリallow allが含まれており、そのリストにdeny DBxエントリがない場合は、このプロシージャを実行しても何も変更されません。

Trusted Serversリストにエントリallow allが含まれており、そのリストにdeny DBxエントリがある場合は、そのエントリが削除されます。

59.4.3 DENY_ALLプロシージャ

このプロシージャは、Trusted Serversリストを空にし、すべてのサーバーがアクセスを拒否されることを指定します。

TRUSTED_SERVERSビューには、「UNTRUSTED ALL」が表示されます。これは、現在どのサーバーも信頼されていないことを示します。

構文

DBMS_DISTRIBUTED_TRUST_ADMIN.DENY_ALL;

59.4.4 DENY_SERVERプロシージャ

このプロシージャは、指定したサーバーを信頼しないことを保証します(allow allが指定されている場合でも有効です)。

構文

DBMS_DISTRIBUTED_TRUST_ADMIN.DENY_SERVER (
   server IN VARCHAR2);

パラメータ

表59-3 DENY_SERVERプロシージャのパラメータ

パラメータ 説明

server

信頼しないサーバーの一意の完全修飾名

使用上の注意

Trusted Serversリストにエントリallow allが含まれている場合、このプロシージャは、指定したデータベース(例: DBx)を信頼しないことを示すエントリを追加します。

Trusted Serversリストにエントリdeny allが含まれており、そのリストにallow DBxエントリがない場合は、このプロシージャを実行しても何も変更されません。

Trusted Serversリストにエントリdeny allが含まれており、allow DBxエントリがある場合は、そのエントリが削除されます。