152 DBMS_SFW_ACL_ADMIN
DBMS_SFW_ACL_ADMINパッケージは、データベース・サービス・ファイアウォール機能のアクセス制御ポリシーを管理するためのインタフェースを提供します。各ポリシーは、特定のデータベース・サービスへのアクセスが許可されているホストを含むアクセス制御リスト(ACL)で表されます。ローカル・リスナーとサーバー・プロセスは、すべてのインバウンド・クライアント接続をACLと照合して検証します。
この章のトピックは、次のとおりです:
152.1 DBMS_SFW_ACL_ADMINのセキュリティ・モデル
このパッケージの所有者はDBSFWUSERスキーマです。このパッケージのプロシージャは、DBSFWUSERユーザーのみが実行できます。
152.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を問い合せることができます。
152.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.
152.4 DBMS_SFW_ACL_ADMINサブプログラムの要約
この表は、DBMS_SFW_ACL_ADMIN
サブプログラムを示し、簡単に説明しています。
表152-1 DBMS_SFW_ACL_ADMINパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
変更をACL表にコミットし、データベース・インスタンスのローカル・リスナーに伝播します。 |
|
アクセス制御エントリをデータベース・サービスのACLに追加します。 |
|
アクセス制御エントリをプラガブル・データベース(PDB)のすべてのデータベース・サービスのACLに追加します。 |
|
データベース・サービスのACLからエントリを削除します。 |
|
データベース・サービスのACLからすべてのエントリを削除します。 |
|
プラガブル・データベース(PDB)のすべてのデータベース・サービスのACLからアクセス制御エントリを削除します。 |
|
プラガブル・データベース(PDB)のすべてのデータベース・サービスのACLからすべてのエントリを削除します。 |
152.4.1 COMMIT_ACLプロシージャ
このプロシージャは、変更をACL表にコミットします。変更をデータベース・インスタンスのローカル・リスナーにも伝播します。
データベース・サービスのアクセス・エントリを変更し、COMMIT_ACLプロシージャのコール時にそのデータベース・サービスが実行されていなかった場合、変更はACL表にコミットされますが、ローカル・リスナーには送信されません。エントリをリスナーに送信するには、データベース・サービスを起動し、COMMIT_ACLプロシージャを再度コールします。
このプロシージャは、操作が正常に終了すると戻ります。
構文
DBMS_SFW_ACL_ADMIN.COMMIT_ACL;
パラメータ
なし
152.4.2 IP_ADD_ACEプロシージャ
このプロシージャは、アクセス制御エントリをデータベース・サービスのACLに追加します。
構文
DBMS_SFW_ACL_ADMIN.IP_ADD_ACE ( p_service_name IN VARCHAR2, p_host IN VARCHAR2);
パラメータ
表152-2 IP_ADD_ACEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
p_service_name |
アクセス制御エントリを追加するデータベース・サービスの名前。 |
p_host |
サービスへのアクセスが許可されているクライアントのホスト。この値には、ホスト名、IPv4アドレスまたはIPv6アドレスを指定できます。IPv4のワイルドカード「*」およびCIDR形式を使用できます。 |
152.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);
パラメータ
表152-3 IP_ADD_PDB_ACEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
p_pdb_name |
PDBの名前。 |
p_host |
PDBのデータベース・サービスへのアクセスが許可されているクライアントのホスト。この値には、ホスト名、IPv4アドレスまたはIPv6アドレスを指定できます。IPv4のワイルドカード「*」およびCIDR形式を使用できます。 |
152.4.4 IP_REMOVE_ACEプロシージャ
このプロシージャは、データベース・サービスのACLからエントリを削除します。
構文
DBMS_SFW_ACL_ADMIN.IP_REMOVE_ACE ( p_service_name IN VARCHAR2, p_host IN VARCHAR2);
パラメータ
表152-4 IP_REMOVE_ACEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
p_service_name |
アクセス制御エントリを削除するデータベース・サービスの名前。 |
p_host |
ACLから削除するホスト。この値には、ホスト名、IPv4アドレスまたはIPv6アドレスを指定できます。IPv4のワイルドカード「*」およびCIDR形式を使用できます。 これは既存の値と完全に一致する必要があります。 |
152.4.5 IP_REMOVE_ACLプロシージャ
このプロシージャは、データベース・サービスのACLからすべてのエントリを削除します。
構文
DBMS_SFW_ACL_ADMIN.IP_REMOVE_ACL ( p_service_name IN VARCHAR2);
パラメータ
表152-5 IP_REMOVE_ACLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
p_service_name |
ACLをクリアするデータベース・サービスの名前。 |
152.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);
パラメータ
表152-6 IP_REMOVE_PDB_ACEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
p_pdb_name |
PDBの名前。 |
p_host |
ACLから削除するホスト。この値には、ホスト名、IPv4アドレスまたはIPv6アドレスを指定できます。IPv4のワイルドカード「*」およびCIDR形式を使用できます。 これは既存の値と完全に一致する必要があります。 |