3.2 Oracle SQL FirewallとOracle Data Pump

Oracle Data Pumpを使用して、Oracle SQL Firewallのキャプチャおよび許可リストのメタデータをエクスポートおよびインポートできます。

3.2.1 Oracle SQL FirewallメタデータでのOracle Data Pumpのエクスポートおよびインポート操作について

Oracle SQL FirewallはOracle Data Pumpと統合され、キャプチャおよび許可リストのメタデータを含め、SQLファイアウォール・メタデータのエクスポートおよびインポートをサポートします。

これは通常、非本番データベースでトレーニングを1回実行でき、非本番トレーニング・ステージ中に生成された許可リストを使用して、複数の本番データベースでSQLファイアウォールを有効にできるシナリオで必要です。

Oracle Databaseでは、ソース・データベースの許可リストをターゲット・データベースの既存の許可リストにマージしないかぎり、エクスポートおよびインポート操作中でもキャプチャおよび許可リストのステータスが保持されます。たとえば、エクスポート時にソース・データベースでキャプチャが有効になっている場合、インポート操作の完了後はターゲット・データベースでもキャプチャが有効になります。これは、インポート操作の前にターゲット・データベースに同じユーザーの許可リストがないときに許可リストをインポートする場合と同様です。

ソース・データベースの許可リストをターゲット・データベースの既存の許可リストにマージする場合、ターゲット・データベースの許可リストの設定(statustop_level_onlyenforceblockなど)は、インポート操作前と同じままになります。許可されたSQLおよびコンテキストのみがマージされます。

Oracle Data Pumpの場合、既存のすべてのSQLファイアウォール・メタデータ(キャプチャおよび許可リスト)全体のエクスポートまたはインポートがサポートされています。Oracle Data Pumpを介した特定のキャプチャまたは特定の許可リストのエクスポートまたはインポートはサポートされていません。

特定のデータベースから別のデータベースに、あるユーザーの許可リストのみをエクスポートまたはインポートする場合は、DBMS_SQL_FIREWALL.EXPORT_ALLOW_LISTまたはDBMS_SQL_FIREWALL.IMPORT_ALLOW_LISTプロシージャを使用します。(この2つのプロシージャはOracle Data Pumpに依存せず、独立して使用できます。)SQLファイアウォール・ログ(キャプチャ・ログおよび違反ログ)のエクスポートおよびインポートはサポートされていません。

3.2.2 Oracle Data PumpがOracle SQL Firewallのキャプチャまたは許可リストのインポートをスキップする場合

特定のケースでは、Oracle Data Pumpはインポート操作中に特定のOracle SQL Firewallのキャプチャまたは許可リストをスキップし、他のキャプチャまたは許可リストのインポートを続行します。

これらのケースを次に示します:

  • ターゲット・ユーザーがターゲット・データベースに存在しない場合、存在しないユーザーのキャプチャおよび許可リストはインポートされません。

  • 許可リストがターゲット・データベースに存在しない現行ユーザーを1人以上参照している場合、この許可リストはインポートされません。

  • 許可リストをインポートする場合に、同じユーザーの許可リストがターゲット・データベースにすでに存在し、そのtop_level_only設定がインポート対象の許可リストと異なる場合、その許可リストはインポートされません。

  • 許可リストをインポートする場合に、同じユーザーのキャプチャがターゲット・データベースにすでに存在し、そのtop_level_only設定がインポート対象の許可リストと異なる場合、その許可リストはインポートされません。

  • インポート対象の許可リストが有効になっており、ターゲット・データベースで同じユーザーに対して有効なキャプチャが存在するが、無効な許可リストが存在しない場合、同じユーザーに対して有効なキャプチャと有効な許可リストを同時に存在させないために、その許可リストはインポートされません。

  • ターゲット・データベースで同じユーザーに対してインポート対象のキャプチャがすでに存在する場合、そのキャプチャはインポートされません。

  • インポート対象のキャプチャが有効になっており、ターゲット・データベースで同じユーザーに対して有効な許可リストが存在する場合、同じユーザーに対して有効なキャプチャと有効な許可リストを同時に存在させないために、そのキャプチャはインポートされません。

  • キャプチャをインポートする場合に、同じユーザーの許可リストがターゲット・データベースにすでに存在し、そのtop_level_only設定がインポート対象のキャプチャと異なる場合、そのキャプチャはインポートされません。

3.2.3 Oracle SQL FirewallでのOracle Data Pumpの使用

expdpおよびimpdpコマンドを使用して、Oracle SQL Firewallのキャプチャおよび許可リストのメタデータをエクスポートおよびインポートできます。

  1. SQLファイアウォールが使用されているサーバーにログインします。
  2. コマンドラインで、Oracle Data Pumpのエクスポートまたはインポート操作を実行します。
    • SQLファイアウォール・メタデータをエクスポートするには、次の構文を使用します:
      expdp user_name@pdb_name FULL=Y DIRECTORY=dumpfile_dir INCLUDE=SQL_FIREWALL dumpfile=dumpfile_name.dmp LOGFILE=filename.log

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

      • FULL=Yは、全体エクスポート・モードを有効にします。SQLファイアウォール・メタデータは、全体エクスポート・モードでのみエクスポートされます。
      • INCLUDE=SQL_FIREWALLは、INCLUDEまたはEXCLUDEフィルタで使用できます。このタグはオプションです。これにより、あるデータベースから別のデータベースにSQLファイアウォール・メタデータのみをエクスポートおよびインポートできます。

      次に例を示します:

      expdp "hr@hr_pdb" FULL=Y DIRECTORY=sql_fw_dumpfiles INCLUDE=SQL_FIREWALL DUMPFILE=sql_fw_app.dmp LOGFILE=sql_fw_app.log
      Enter password: password
    • SQLファイアウォール・メタデータをインポートするには:
      impdp user_name@pdb_name FULL=Y DIRECTORY=dumpfile_dir INCLUDE=SQL_FIREWALL dumpfile=dumpfile_name.dmp LOGFILE=filename.log 

      次に例を示します:

      impdp "hr@hr_pdb" FULL=Y DIRECTORY=dumpfile_dir INCLUDE=SQL_FIREWALL dumpfile=sql_fw_app.dmp LOGFILE=sql_fw_app.log
      Enter password: password