2.1.2 Oracle SQL Firewall構成の変更

ユーザーのOracle SQL Firewall構成を作成した後は、必要に応じてその構成を変更できます。

Oracle SQL Firewall構成に関する情報を確認するには、DBA_SQL_FIREWALL_*データ・ディクショナリ・ビューを問い合せることができます。

表2-1に、SQLファイアウォールの構成後に実行できる操作を示します。

表2-1 Oracle SQL Firewallの変更プロシージャ

操作 プロシージャ

SQLファイアウォールの有効化

  • データベースのSQLファイアウォールを有効にするには、DBMS_SQL_FIREWALL.ENABLEを使用します。
キャプチャの管理
  • キャプチャを作成するには、DBMS_SQL_FIREWALL.CREATE_CAPTUREを使用します。
  • キャプチャを開始するには、DBMS_SQL_FIREWALL.START_CAPTUREを使用します。
  • キャプチャを変更するには、DBMS_SQL_FIREWALL.DROP_CAPTUREを使用して現在のものを削除してから、DBMS_SQL_FIREWALL.CREATE_CAPTUREを使用して新しいものを作成します。
  • 指定されたユーザーのSQLファイアウォール・キャプチャを停止するには、DBMS_SQL_FIREWALL.STOP_CAPTUREを使用します。
  • 指定されたユーザーのSQLファイアウォール・キャプチャを削除し、このユーザーの既存のすべてのキャプチャ・ログを削除するには、次のようにします:
    1. DBMS_SQL_FIREWALL.STOP_CAPTUREを使用して、キャプチャ・プロセスを停止します。
    2. DBMS_SQL_FIREWALL.DROP_CAPTUREを使用して、キャプチャを削除します。
許可リストの管理
  • 特定のユーザーの許可リストを生成するには、DBMS_SQL_FIREWALL.GENERATE_ALLOW_LISTを使用します。
  • 特定のユーザーの許可リストを有効にするには、DBMS_SQL_FIREWALL.ENABLE_ALLOW_LISTを使用します。
  • 許可リストの強制を更新するには、DBMS_SQL_FIREWALL.UPDATE_ALLOW_LIST_ENFORCEMENTを使用します。
  • Oracle Schedulerジョブで、SQLファイアウォールがデータベース接続およびSQL実行の許可リストをキャプチャおよび強制しないようにするには、DBMS_SQL_FIREWALL.EXCLUDEを使用します。
  • キャプチャ・ログまたは違反ログ(あるいはその両方)からすべてのSQLを許可リストに追加するには、DBMS_SQL_FIREWALL.APPEND_ALLOW_LISTプロシージャを使用します。このプロシージャは、許可リストが有効でも無効でも実行できます。変更はすぐに反映されます。
  • キャプチャ・ログまたは違反ログから単一のSQLレコードを許可リストに追加するには、次のようにDBMS_SQL_FIREWALL.APPEND_ALLOW_LIST_SINGLE_SQLプロシージャを使用します:
    1. DBA_SQL_FIREWALL_VIOLATIONSまたはDBA_SQL_FIREWALL_CAPTURE_LOGSデータ・ディクショナリ・ビューを問い合せて、許可リストに追加するターゲットSQLレコードを確認します。
    2. DBMS_SQL_FIREWALL.APPEND_ALLOW_LIST_SINGLE_SQLプロシージャで、そのレコードの取得したUSERNAMESQL_SIGNATURECURRENT_USERおよびTOP_LEVEL値を入力して、ターゲットSQLレコードを許可リストに追加します。

    DBMS_SQL_FIREWALL.APPEND_ALLOW_LIST_SINGLE_SQLは、許可リストが有効でも無効でも実行できます。変更はすぐに反映されます。

  • 特定のユーザーの許可リストをJSON形式に指定したCLOBにエクスポートするには、DBMS_SQL_FIREWALL.EXPORT_ALLOW_LISTを使用します。
  • 特定のユーザーの許可リストをターゲット・データベースにインポートするには、DBMS_SQL_FIREWALL.IMPORT_ALLOW_LISTを使用します。
  • 特定のユーザーの許可リストを無効にするには、DBMS_SQL_FIREWALL.DISABLE_ALLOW_LISTを使用します。
  • 許可されたコンテキスト・リストに対してコンテキスト値を追加または削除するには、それぞれDBMS_SQL_FIREWALL.ADD_ALLOWED_CONTEXTまたはDBMS_SQL_FIREWALL.DELETE_ALLOWED_CONTEXTを使用します。
  • 許可されたSQLリストからSQL文を削除するには、DBMS_SQL_FIREWALL.DELETE_ALLOWED_SQLを使用します。
  • 指定されたユーザーの許可リストを削除するには:
    1. DBMS_SQL_FIREWALL.DISABLE_ALLOW_LISTを使用して許可リストを無効にします。
    2. DBMS_SQL_FIREWALL.DROP_ALLOW_LISTを使用します。
許可されたコンテキストの管理
  • 特定のコンテキスト・タイプについて、指定されたユーザーの許可されたコンテキストに指定の値を追加するには、DBMS_SQL_FIREWALL.ADD_ALLOWED_CONTEXTを使用します。
  • 許可されたコンテキストを変更するには、DBMS_SQL_FIREWALL.DELETE_ALLOWED_CONTEXTを使用して現在のものを削除してから、DBMS_SQL_FIREWALL.ADD_ALLOWED_CONTEXTを使用して新しいものを作成します。
  • 特定のコンテキスト・タイプについて、指定されたユーザーの許可されたコンテキストから指定の値を削除するには、DBMS_SQL_FIREWALL.DELETE_ALLOWED_CONTEXTを使用します。
許可されたSQLの管理
  • 指定されたユーザーの許可されたSQLから指定のエントリを削除するには、DBMS_SQL_FIREWALL.DELETE_ALLOWED_SQLを使用します。このプロシージャは、許可リストが有効でも無効でも実行でき、変更はすぐに反映されます。

SQLファイアウォール・ログ表の管理

  • SQLファイアウォール・ログ表をデフォルト表領域SYSAUX以外の別のユーザー定義表領域に移動するには:
    1. DBMS_SQL_FIREWALL.DISABLEを使用してSQLファイアウォールを無効にします。
    2. ALTER TABLE文のMOVE句を使用して、移動操作を実行します。

    DBMS_SQL_FIREWALL.MOVE_LOG_TABLEプロシージャを使用して、SQLファイアウォール・ログ表を別の表領域に移動することもできます。

  • あるユーザーまたはすべてのユーザーのキャプチャ・ログまたは違反ログをパージするには、DBMS_SQL_FIREWALL.PURGE_LOGを使用します。
  • メモリーに存在するすべてのSQLファイアウォール・ログをログ表にフラッシュするには、DBMS_SQL_FIREWALL.FLUSH_LOGSを使用します。

SQLファイアウォールの無効化

  • データベースのSQLファイアウォールを無効にし、有効になっている既存のキャプチャおよび許可リストをすべて停止するには、DBMS_SQL_FIREWALL.DISABLEを使用します。