2.1.4 Oracle SQL Firewallログのパージ

DBMS_SQL_FIREWALL.PURGE_LOGプロシージャを使用して、Oracle SQL Firewallが生成するログを定期的にパージする必要があります。

SQLファイアウォールでは、違反ログはログ表に生成および格納されます。理想的なSQLファイアウォールのトレーニングされた環境では、違反ログは大規模にはならないと考えられます。このようなログは定期的にパージすることをお薦めします。生成された許可リストが有効であることを確認したら、不要なログをパージして、ログが使用しているディスク領域を再利用する必要があります。
  1. SQL_FIREWALL_ADMINロールを付与されているユーザーとして、SQLファイアウォールが構成されているルートまたはプラガブル・データベース(PDB)にログインします。
  2. 必要に応じて、SELECT ANY DICTIONARYシステム権限を持つユーザーとして、次のデータ・ディクショナリ・ビューを問い合せて、パージする予定のログを確認します:
    • DBA_SQL_FIREWALL_CAPTURE_LOGS
    • DBA_SQL_FIREWALL_VIOLATIONS
  3. SQL_FIREWALL_ADMINロールを付与されているユーザーとしてPDBに接続します。
  4. DBMS_SQL_FIREWALL.PURGE_LOGプロシージャを実行します。
    次に例を示します:
    BEGIN
      DBMS_SQL_FIREWALL.PURGE_LOG (
        username    => 'APP',
        purge_time  => '2023-02-01 00:00:00.00 -08:00',
        log_type    => 'DBMS_SQL_FIREWALL.ALL_LOGS'
       );
     END;
    /

    この指定内容についての説明は次のとおりです:

    • usernameは、このSQLファイアウォール構成が作成されたターゲット・ユーザーです。この値を省略すると、Oracle Databaseではpurge_timeおよびlog_type設定に一致するすべてのログがパージされます。
    • purge_timeは、特定の時間より前に生成されたログのみをパージするように指定できるタイムスタンプ(TIMESTAMP形式)です。この値を省略すると、Oracle Databaseでは生成された時間に関係なくすべてのログがパージされます。
    • log_typeは、パージされるログのタイプです。値を指定しない場合、デフォルトはDBMS_SQL_FIREWALL.ALL_LOGSになります。次の定数のいずれかを指定します:
      • DBMS_SQL_FIREWALL.CAPTURE_LOG
      • DBMS_SQL_FIREWALL.VIOLATION_LOG
      • DBMS_SQL_FIREWALL.ALL_LOGS (デフォルト)