146 DBMS_SFW_ACL_ADMIN

DBMS_SFW_ACL_ADMINパッケージは、データベース・サービス・ファイアウォール機能のアクセス制御ポリシーを管理するためのインタフェースを提供します。各ポリシーは、特定のデータベース・サービスへのアクセスが許可されているホストを含むアクセス制御リスト(ACL)で表されます。ローカル・リスナーとサーバー・プロセスは、すべてのインバウンド・クライアント接続をACLと照合して検証します。

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

146.1 DBMS_SFW_ACL_ADMINのセキュリティ・モデル

このパッケージの所有者はDBSFWUSERスキーマです。このパッケージのプロシージャは、DBSFWUSERユーザーのみが実行できます。

146.2 DBMS_SFW_ACL_ADMINの使用上の注意

DBMS_SFW_ACL_ADMINには、次の使用上の注意が適用されます。

  • ACLには、ace (アクセス制御エントリ)と呼ばれるエントリが含まれます。

  • IP_ADD_ACEプロシージャおよびIP_ADD_PDB_ACEプロシージャを使用してエントリをACLに追加します。これらのプロシージャをコールした後、COMMIT_ACLプロシージャをコールして、更新されたACLをリスナーに送信します。同様に、IP_REMOVE_ACEプロシージャIP_REMOVE_ACLプロシージャIP_REMOVE_PDB_ACEプロシージャまたはIP_REMOVE_PDB_ACLプロシージャを使用してACLからエントリを削除する場合は、COMMIT_ACLプロシージャをコールしてリスナー上のACLを更新する必要があります。

  • アクセス制御は、FIREWALLエンドポイント属性および新しいLOCAL_REGISTRATION_ADDRESS_listenerNameパラメータを使用して有効にする必要があります。構成は、listener.oraまたはサーバー制御ユーティリティ(SRVCTL)で手動で行うことができます。構成手順の詳細は、『Oracle Database Net Servicesリファレンス』および『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

  • IP_ACL表を問い合せてコミットされたACLを表示できます。ただし、ローカル・リスナーに送信されたACLを表示するには、V$IP_ACLまたはGV$IP_ACLビューを問い合せる必要があります。IP_ACL表には、[G]V$IP_ACLに存在しないACLが含まれている場合があり、これは、それらのACLのデータベース・サービスがコミット時に実行されていなかったためです。サービスが実行されている場合は、COMMIT_ACLプロシージャを再度コールして、IP_ACL表のコミット済ACLをローカル・リスナーに送信できます。

    Oracle RAC環境では、GV$IP_ACLを使用してデータベース・クラスタ全体のACLを問い合せたり、V$IP_ACLを使用して接続されたインスタンスのACLを問い合せることができます。

146.3 DBMS_SFW_ACL_ADMINの例

次の3つの例は、DBMS_SFW_ACL_ADMINを使用してアクセス・コントロールのポリシーを管理する方法を示しています。

次の例では、3つのアクセス制御エントリをACLに追加してコミットします。

## Connect to DBSFWUSER
SQL> connect dbsfwuser/Welcome1
Connected.

## Create an ACL for database service SVC1
SQL> exec dbms_sfw_acl_admin.ip_add_ace('svc1','192.168.12.1');
PL/SQL procedure successfully completed.

SQL> exec dbms_sfw_acl_admin.ip_add_ace('svc1','192.168.12.2');
PL/SQL procedure successfully completed.

SQL> exec dbms_sfw_acl_admin.ip_add_ace('svc1','test02.example.com');
PL/SQL procedure successfully completed.

## Commit the ACLs to the DB ACL table.
## This sends the ACLs for running services to ALL local Listeners
SQL> exec dbms_sfw_acl_admin.commit_acl;
PL/SQL procedure successfully completed.

次の例では、前の例でコミットされたACLを取得します。

SQL> select * from ip_acl;
SERVICE_NAME              HOST
-----------------------   -------------------
"SVC1.EXAMPLE.COM"        192.168.12.1
"SVC1.EXAMPLE.COM"        192.168.12.2
"SVC1.EXAMPLE.COM"        TEST02.EXAMPLE.COM

## View ACLs sent to the local Listeners
## NOTE: ACLs are sent ONLY to running services
SQL> select * from v$ip_acl;
SERVICE_NAME              HOST                   CON_ID
----------------------    -----------------      --------
SVC1.EXAMPLE.COM          192.168.12.1           1
SVC1.EXAMPLE.COM          192.168.12.2           1
SVC1.EXAMPLE.COM          TEST02.EXAMPLE.COM     1

次の例では、様々なホスト形式を使用してプラガブル・データベースPDB1のアクセス制御エントリを追加します。

SQL> exec dbms_sfw_acl_admin.ip_add_pdb_ace('pdb1','192.168.12.3');
PL/SQL procedure successfully completed.

SQL> exec dbms_sfw_acl_admin.ip_add_pdb_ace('pdb1','192.168.12.0/23');
PL/SQL procedure successfully completed.

SQL> exec dbms_sfw_acl_admin.ip_add_pdb_ace('pdb1','192.168.12.*');
PL/SQL procedure successfully completed.

SQL> exec dbms_sfw_acl_admin.commit_acl;
PL/SQL procedure successfully completed.

146.4 DBMS_SFW_ACL_ADMINサブプログラムの要約

この表は、DBMS_SFW_ACL_ADMINサブプログラムを示し、簡単に説明しています。

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

サブプログラム 説明

COMMIT_ACLプロシージャ

変更をACL表にコミットし、データベース・インスタンスのローカル・リスナーに伝播します。

IP_ADD_ACEプロシージャ

アクセス制御エントリをデータベース・サービスのACLに追加します。

IP_ADD_PDB_ACEプロシージャ

アクセス制御エントリをプラガブル・データベース(PDB)のすべてのデータベース・サービスのACLに追加します。

IP_REMOVE_ACEプロシージャ

データベース・サービスのACLからエントリを削除します。

IP_REMOVE_ACLプロシージャ

データベース・サービスのACLからすべてのエントリを削除します。

IP_REMOVE_PDB_ACEプロシージャ

プラガブル・データベース(PDB)のすべてのデータベース・サービスのACLからアクセス制御エントリを削除します。

IP_REMOVE_PDB_ACLプロシージャ

プラガブル・データベース(PDB)のすべてのデータベース・サービスのACLからすべてのエントリを削除します。

146.4.1 COMMIT_ACLプロシージャ

このプロシージャは、変更をACL表にコミットします。変更をデータベース・インスタンスのローカル・リスナーにも伝播します。

データベース・サービスのアクセス・エントリを変更し、COMMIT_ACLプロシージャのコール時にそのデータベース・サービスが実行されていなかった場合、変更はACL表にコミットされますが、ローカル・リスナーには送信されません。エントリをリスナーに送信するには、データベース・サービスを起動し、COMMIT_ACLプロシージャを再度コールします。

このプロシージャは、操作が正常に終了すると戻ります。

構文

DBMS_SFW_ACL_ADMIN.COMMIT_ACL;

パラメータ

なし

146.4.2 IP_ADD_ACEプロシージャ

このプロシージャは、アクセス制御エントリをデータベース・サービスのACLに追加します。

構文

DBMS_SFW_ACL_ADMIN.IP_ADD_ACE (
  p_service_name  IN  VARCHAR2,
  p_host          IN  VARCHAR2);

パラメータ

表146-2 IP_ADD_ACEプロシージャのパラメータ

パラメータ 説明

p_service_name

アクセス制御エントリを追加するデータベース・サービスの名前。

p_host

サービスへのアクセスが許可されているクライアントのホスト。この値には、ホスト名、IPv4アドレスまたはIPv6アドレスを指定できます。IPv4のワイルドカード「*」およびCIDR形式を使用できます。

146.4.3 IP_ADD_PDB_ACEプロシージャ

このプロシージャは、アクセス制御エントリをプラガブル・データベース(PDB)のすべてのデータベース・サービスのACLに追加します。

構文

DBMS_SFW_ACL_ADMIN.IP_ADD_PDB_ACE (
  p_pdb_name  IN  VARCHAR2,
  p_host      IN  VARCHAR2);

パラメータ

表146-3 IP_ADD_PDB_ACEプロシージャのパラメータ

パラメータ 説明

p_pdb_name

PDBの名前。

p_host

PDBのデータベース・サービスへのアクセスが許可されているクライアントのホスト。この値には、ホスト名、IPv4アドレスまたはIPv6アドレスを指定できます。IPv4のワイルドカード「*」およびCIDR形式を使用できます。

146.4.4 IP_REMOVE_ACEプロシージャ

このプロシージャは、データベース・サービスのACLからエントリを削除します。

構文

DBMS_SFW_ACL_ADMIN.IP_REMOVE_ACE (
  p_service_name  IN  VARCHAR2,
  p_host          IN  VARCHAR2);

パラメータ

表146-4 IP_REMOVE_ACEプロシージャのパラメータ

パラメータ 説明

p_service_name

アクセス制御エントリを削除するデータベース・サービスの名前。

p_host

ACLから削除するホスト。この値には、ホスト名、IPv4アドレスまたはIPv6アドレスを指定できます。IPv4のワイルドカード「*」およびCIDR形式を使用できます。

これは既存の値と完全に一致する必要があります。IP_ACL表を問い合せて、データベース・サービスのエントリのリストを取得できます。

146.4.5 IP_REMOVE_ACLプロシージャ

このプロシージャは、データベース・サービスのACLからすべてのエントリを削除します。

構文

DBMS_SFW_ACL_ADMIN.IP_REMOVE_ACL (
  p_service_name  IN  VARCHAR2);

パラメータ

表146-5 IP_REMOVE_ACLプロシージャのパラメータ

パラメータ 説明

p_service_name

ACLを消去するデータベース・サービスの名前。

146.4.6 IP_REMOVE_PDB_ACEプロシージャ

このプロシージャは、指定されたプラガブル・データベース(PDB)のすべてのデータベース・サービスのACLからアクセス制御エントリを削除します。

構文

DBMS_SFW_ACL_ADMIN.IP_REMOVE_PDB_ACE (
  p_pdb_name  IN  VARCHAR2,
  p_host      IN  VARCHAR2);

パラメータ

表146-6 IP_REMOVE_PDB_ACEプロシージャのパラメータ

パラメータ 説明

p_pdb_name

PDBの名前。

p_host

ACLから削除するホスト。この値には、ホスト名、IPv4アドレスまたはIPv6アドレスを指定できます。IPv4のワイルドカード「*」およびCIDR形式を使用できます。

これは既存の値と完全に一致する必要があります。IP_ACL表を問い合せて、データベース・サービスのエントリのリストを取得できます。

146.4.7 IP_REMOVE_PDB_ACLプロシージャ

このプロシージャは、プラガブル・データベース(PDB)のすべてのデータベース・サービスのACLからすべてのエントリを削除します。

構文

DBMS_SFW_ACL_ADMIN.IP_REMOVE_PDB_ACL (
  p_pdb_name  IN  VARCHAR2);

パラメータ

表146-7 IP_REMOVE_PDB_ACLプロシージャのパラメータ

パラメータ 説明

p_pdb_name

PDBの名前。