176 DBMS_SQL_FIREWALL
DBMS_SQL_FIREWALL
パッケージを使用すると、ユーザーをモニターして、該当するユーザーに対するSQLインジェクション攻撃を検出または防止できます。
この章のトピックは、次のとおりです:
176.1 DBMS_SQL_FIREWALLの概要
DBMS_SQL_FIREWALL
PL/SQLパッケージを使用すると、SQLインジェクション攻撃を追跡およびブロックするSQL Firewallを管理できます。
DBMS_SQL_FIREWALL
パッケージを使用すると、ユーザーのSQLアクティビティをキャプチャし、キャプチャしたSQLアクティビティから許可リスト(許可されたアクション)を作成した後、許可リストを適用して潜在的なSQLインジェクション攻撃を防止または検出できます。SQL文に加えて、許可リストには、データベース接続で許可される一連のセッション・コンテキストであるコンテキスト・リストを含めることができます。コンテキストの例としては、IPアドレスがあります。Oracle Schedulerの実行時にSQL Firewallが実行されないように構成することもできます。これは、Oracle Scheduler操作が妨げられる可能性があるためです。許可リストを有効にすると、ユーザーが実行するSQLはSQL Firewallによって監視されます。ユーザーが実行するSQLで許可リストに含まれていないものは、SQLインジェクション攻撃とみなされます。ユーザーがこれらのSQL操作の実行を続行できるようにSQL Firewallを構成することも、これらのアクティビティをブロックすることもできます。許可リストに違反するSQL操作は常にログ表に書き込まれ、データ・ディクショナリ・ビューを使用して問い合せることができます。
SQL Firewallは、ルートと個々のプラガブル・データベース(PDB)の両方で構成できます。
176.2 DBMS_SQL_FIREWALLのセキュリティ・モデル
Oracle Databaseは、SYS
スキーマ内の表にメタデータを格納することで、SQL Firewallの管理を保護します。
したがって、これらの表は、SYS
の他のディクショナリ表と同様に、ディクショナリ保護に依存します。そのため、SELECT ANY TABLE
システム権限を持つユーザーは、SELECT ANY DICTIONARY
システム権限も持つか、表に対するSELECT
オブジェクト権限が付与されていないかぎり、これらの表を問い合せることはできません。これらの権限を他のユーザーに付与できるのは、SYS
ユーザーのみです。
Oracle Databaseでは、SQL Firewall表がデフォルトでSYSAUX
表領域に格納されます。SQL Firewallログ表を別の(ユーザー定義の)表領域に移動する場合は、まずSQL Firewallを無効にしてから、ALTER TABLE
文のMOVE
句を使用して移動操作を実行する必要があります。
DBMS_SQL_FIREWALL
パッケージのプロシージャを使用するには、ユーザーにSQL_FIREWALL_ADMIN
ロールが付与されている必要があります。
176.3 DBMS_SQL_FIREWALLの定数
DBMS_SQL_FIREWALL
パッケージは、複数のSQL Firewallプロシージャで使用される定数を提供します。
これらの定数を、次の表に示します。
表176-1 DBMS_SQL_FIREWALLの定数
名前 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NUMBER |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SQL FirewallがOracle Scheduler操作中にデータベース接続およびSQL実行の許容リストを取得して適用するかどうかを示します。この定数は、 |
|
|
|
|
176.4 DBMS_SQL_FIRWALLサブプログラムの要約
この表は、DBMS_SQL_FIREWALL
パッケージのサブプログラムについて説明しています。
表176-2 DBMS_SQL_FIRWALLパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
SQL Firewallに構成されているユーザーに対して許可されるコンテキストのリストにコンテキストを追加します |
|
ユーザーの既存のキャプチャ・ログまたは違反ログ(あるいはその両方)を使用して、既存の許可リストにコンテンツを追加します |
|
指定されたユーザーの特定のレベルのSQL Firewallキャプチャを作成します |
|
ユーザーに割り当てられているSQL Firewallコンテキスト値を削除します |
|
ユーザーに割り当てられている許可されたSQLから、指定されたエントリを削除します |
|
SQL Firewallを無効にします |
|
指定されたユーザーのSQL Firewall許可リストの適用を無効にします |
|
指定されたユーザーのSQL Firewall許可リストを削除します |
|
SQL Firewallキャプチャを削除し、関連するすべてのキャプチャ・ログを削除します |
|
SQL Firewallを有効にします |
|
指定されたユーザーのSQL Firewall許可リストの適用を有効にします |
|
SQL FirewallがOracle Scheduler操作中にデータベース接続およびSQL実行の許容リストをキャプチャまたは適用できないようにします |
|
特定のユーザーの許可リストを |
|
メモリーに存在するすべてのSQL Firewallログをログ表にフラッシュします |
|
ユーザーの既存のキャプチャ・ログのデータを使用して、指定されたユーザーのSQL Firewall許可リストを生成します |
|
指定された特定のユーザーの |
|
SQL FirewallがOracle Scheduler操作中にデータベース接続およびSQL実行の許容リストをキャプチャおよび適用できるようにします |
|
SQL Firewallログをパージします |
|
ユーザーのSQL Firewallキャプチャを開始します |
|
ユーザーのSQL Firewallキャプチャを停止します |
|
指定されたユーザーのSQL Firewall許可リストの適用オプションを更新します |
176.4.1 ADD_ALLOWED_CONTEXTプロシージャ
このプロシージャは、ユーザーのSQL Firewall許可リストについて許可されたコンテキストのリストにコンテキストを追加します。
構文
DBMS_SQL_FIREWALL.ADD_ALLOWED_CONTEXT ( username IN VARCHAR2, context_type IN NUMBER, value IN VARCHAR2);
パラメータ
表176-3 ADD_ALLOWED_CONTEXTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewall許可リストを持つユーザーの名前を指定します。許可リストを持つすべてのユーザーを確認するには、 |
|
次のいずれかのコンテキスト・タイプを指定します。
|
|
|
使用上のノート
-
次のデータ・ディクショナリ・ビューを問い合せることで、ユーザーの現在のコンテキスト・タイプ設定を確認できます。
DBA_SQL_FIREWALL_ALLOWED_IP_ADDR
DBA_SQL_FIREWALL_ALLOWED_OS_PROG
DBA_SQL_FIREWALL_ALLOWED_OS_USER
- ユーザーのコンテキストを追加する前に、ユーザーの許可リストを作成しておく必要があります(
DBMS_SQL_FIREWALL.GENERATE_ALLOW_LIST
プロシージャを使用)。 - このプロシージャは、許可リストが有効なときにも無効なときにも実行でき、すぐに結果が反映されます。
例
BEGIN
DBMS_SQL_FIREWALL.ADD_ALLOWED_CONTEXT (
username => 'PFITCH',
context_type => DBMS_SQL_FIREWALL.OS_PROGRAM,
value => 'SQL Developer'
);
END;
/
176.4.2 APPEND_ALLOW_LISTプロシージャ
このプロシージャは、ユーザーの既存のキャプチャ・ログまたは違反ログ(あるいはその両方)を使用して、既存の許可リストにコンテンツを追加します。
構文
DBMS_SQL_FIREWALL.APPEND_ALLOW_LIST ( username IN VARCHAR2, source IN NUMBER);
パラメータ
表176-4 APPEND_ALLOW_LISTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewall許可リストに指定されたユーザーの名前を指定します。このユーザーを確認するには、 |
|
次のいずれかのログ・タイプを指定します。
|
使用上のノート
DBMS_SQL_FIREWALL.APPEND_ALLOW_LIST
は、指定されたソース・ログを処理し、許可リストに追加されるコンテンツを識別します。次に、許可リストの適用中に使用される、許可されたSQLおよび許可されたコンテキストのSQL Firewallメタデータ表を設定します。- このプロシージャは、許可リストが有効なときにも無効なときにも実行できます。
- 変更は即座に反映されます。
- 同じ
DBMS_SQL_FIREWALL.APPEND_ALLOW_LIST
の実行によって追加された、許可されたSQLエントリすべてに新しい許可リスト・バージョン番号が関連付けられます。この新しいバージョン番号は、1
に、指定されたユーザーの現在の最大許可リスト・バージョンを加えたものになります。
例
BEGIN
DBMS_SQL_FIREWALL.APPEND_ALLOW_LIST (
username => 'PFITCH',
source => DBMS_SQL_FIREWALL.CAPTURE_LOG
);
END;
/
176.4.3 CREATE_CAPTUREプロシージャ
このプロシージャは、指定されたユーザーの特定のレベルのSQL Firewallキャプチャを作成します。
構文
DBMS_SQL_FIREWALL.CREATE_CAPTURE ( username IN VARCHAR2, top_level_only IN BOOLEAN, start_capture IN BOOLEAN);
パラメータ
表176-5 CREATE_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewallキャプチャを作成するユーザーの名前を指定します。既存のユーザーを確認するには、 |
|
|
|
|
使用上のノート
SQL Firewallキャプチャ用にすでに構成されているユーザーなど、既存のSQL Firewallキャプチャのステータスを確認するには、DBA_SQL_FIREWALL_CAPTURES
データ・ディクショナリ・ビューを問い合せます。
例
BEGIN
DBMS_SQL_FIREWALL.CREATE_CAPTURE (
username => 'C##HR_ADMIN',
top_level_only => TRUE,
start_capture => TRUE
);
END;
/
176.4.4 DELETE_ALLOWED_CONTEXTプロシージャ
このプロシージャは、ユーザーのSQL Firewall許可リストについて許可されたコンテキストのリストからコンテキストを削除します。
構文
DBMS_SQL_FIREWALL.DELETE_ALLOWED_CONTEXT ( username IN VARCHAR2, context_type IN NUMBER, value IN VARCHAR2);
パラメータ
表176-6 DELETE_ALLOWED_CONTEXTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewall許可リストに指定されたユーザーの名前を指定します。このユーザーを確認するには、 |
|
|
|
|
使用上のノート
- 次のデータ・ディクショナリ・ビューを問い合せることで、ユーザーの現在のコンテキスト・タイプ設定を確認できます。
DBA_SQL_FIREWALL_ALLOWED_IP_ADDR
DBA_SQL_FIREWALL_ALLOWED_OS_PROG
DBA_SQL_FIREWALL_ALLOWED_OS_USER
- このプロシージャは、許可リストが有効なときにも無効なときにも実行でき、すぐに結果が反映されます。
例
BEGIN
DBMS_SQL_FIREWALL.DELETE_ALLOWED_CONTEXT, (
username => 'PFITCH',
context_type => DBMS_SQL_FIREWALL.OS_PROGRAM,
value => 'SQL Developer'
);
END;
/
176.4.5 DELETE_ALLOWED_SQLプロシージャ
このプロシージャは、ユーザーのSQL Firewall許可リストについて許可されたSQLのリストから、指定されたエントリを削除します
構文
DBMS_SQL_FIREWALL.DELETE_ALLOWED_SQL ( username IN VARCHAR2, allowed_sql_id IN NUMBER);
パラメータ
表176-7 DELETE_ALLOWED_SQLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewall許可リストに指定されたユーザーの名前を指定します。このユーザーを確認するには、 |
|
このユーザーの許可されたSQLから削除する、許可されたSQLエントリのIDを指定します。この値を確認するには、 |
使用上のノート
- このプロシージャは、許可リストが有効なときにも無効なときにも実行できます。
- 変更は即座に反映されます。
例
BEGIN
DBMS_SQL_FIREWALL.DELETE_ALLOWED_SQL (
username => 'PFITCH',
allowed_sql_id => 1
);
END;
/
176.4.6 DISABLEプロシージャ
このプロシージャは、SQL Firewallを無効にし、有効になっている既存のキャブチャおよび許可リストをすべて停止します。
構文
DBMS_SQL_FIREWALL.DISABLE;
パラメータ
なし
使用上のノート
DBA_SQL_FIREWALL_STATUS
データ・ディクショナリ・ビューを問い合せることで、SQL Firewallの現在のステータスを確認できます。
例
EXEC DBMS_SQL_FIREWALL.DISABLE;
176.4.7 DISABLE_ALLOW_LISTプロシージャ
このプロシージャは、指定されたユーザーのSQL Firewall許可リストの適用をただちに無効にします。
構文
DBMS_SQL_FIREWALL.DISABLE_ALLOW_LIST ( username IN VARCHAR2);
パラメータ
表176-8 DISABLE_ALLOW_LISTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewall許可リストに指定されたユーザーの名前を指定します。このユーザーを確認するには、 |
使用上のノート
ユーザーの許可リストのステータスを確認するには、DBA_SQL_FIREWALL_ALLOW_LISTS
データ・ディクショナリ・ビューを問い合せます。
例
EXEC DBMS_SQL_FIREWALL.DISABLE_ALLOW_LIST ('PFITCH');
176.4.8 DROP_ALLOW_LISTプロシージャ
このプロシージャは、指定されたユーザーのSQL Firewall許可リストを削除します。
構文
DBMS_SQL_FIREWALL.DROP_ALLOW_LIST ( username IN VARCHAR2);
パラメータ
表176-9 DROP_ALLOW_LISTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewall許可リストに指定されたユーザーの名前を指定します。このユーザーを確認するには、 |
使用上のノート
-
ユーザーの許可リストのステータスを確認するには、
DBA_SQL_FIREWALL_ALLOW_LISTS
データ・ディクショナリ・ビューを問い合せます。 -
現在有効になっている許可リストは削除できません。許可リストを無効にするには、
DBMS_SQL_FIREWALL.DISABLE_ALLOW_LIST
プロシージャを実行します。
例
EXEC DBMS_SQL_FIREWALL.DROP_ALLOW_LIST ('PFITCH');
176.4.9 DROP_CAPTUREプロシージャ
このプロシージャは、SQL Firewallキャプチャを削除し、関連するすべてのキャプチャ・ログを削除します。
構文
DBMS_SQL_FIREWALL.DROP_CAPTURE ( username IN VARCHAR2);
パラメータ
表176-10 DROP_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewallキャプチャを削除するユーザーの名前を指定します。このユーザーを確認するには、 |
使用上のノート
-
既存のSQL Firewallキャプチャのステータスを確認するには、
DBA_SQL_FIREWALL_CAPTURES
データ・ディクショナリ・ビューを問い合せます。 -
現在実行中のキャプチャは削除できません。キャプチャを停止するには、
DBMS_SQL_FIREWALL.STOP_CAPTURE
プロシージャを実行します。 -
ユーザーのキャプチャを削除してもユーザーの許可リストには影響せず、キャプチャが削除された場合でも引き続き実行できます。キャプチャおよび許可リストは個別のエンティティです。
例
EXEC DBMS_SQL_FIREWALL.DROP_CAPTURE ('C##HR_ADMIN');
176.4.10 ENABLEプロシージャ
このプロシージャは、SQL Firewallを有効にし、有効にするように構成されている既存のキャブチャおよび許可リストをすべて開始します。
構文
DBMS_SQL_FIREWALL.ENABLE;
パラメータ
なし
使用上のノート
DBA_SQL_FIREWALL_STATUS
データ・ディクショナリ・ビューを問い合せることで、SQL Firewallの現在のステータスを確認できます。
例
EXEC DBMS_SQL_FIREWALL.ENABLE;
176.4.11 ENABLE_ALLOW_LISTプロシージャ
このプロシージャは、指定されたユーザーのSQL Firewall許可リストの適用をただちに有効にします。
構文
DBMS_SQL_FIREWALL.ENABLE_ALLOW_LIST ( username IN VARCHAR2, enforce IN NUMBER, block IN BOOLEAN;
パラメータ
表176-11 ENABLE_ALLOW_LISTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewall許可リストを有効にするユーザーの名前を指定します。このユーザーを確認するには、 |
|
|
|
|
使用上のノート
-
ユーザーの許可リストのステータスを確認するには、
DBA_SQL_FIREWALL_ALLOW_LISTS
データ・ディクショナリ・ビューを問い合せます。 -
SQL Firewallでは、
block
オプションの設定に関係なく、一致しないデータベース接続またはSQL文の違反ログが常に生成されます。
例
BEGIN
DBMS_SQL_FIREWALL.ENABLE_ALLOW_LIST (
username => 'PFITCH',
enforce => DBMS_SQL_FIREWALL.ENFORCE_SQL,
block => TRUE
);
END;
/
176.4.12 EXCLUDEプロシージャ
このプロシージャは、SQL FirewallがOracle Scheduler操作中にデータベース接続およびSQL実行の許容リストをキャプチャまたは適用できないようにします。
Oracle Schedulerジョブは、データベースで様々なメンテナンスのためによく使用されます。クリティカル・ジョブを誤って中断すると、望ましくない結果になる可能性があります。SQL文をキャプチャしたり、Oracle Schedulerジョブ・セッション中に実行される許可リストを適用しないようにSQL Firewallを構成できます。このプロシージャは、SQL Firewallキャプチャおよび許可リストに構成されているすべてのユーザーに適用されます。デフォルトでは、Oracle SchedulerジョブはSQL Firewall操作から除外されます。
構文
DBMS_SQL_FIREWALL.EXCLUDE ( FEATURE IN NUMBER);
パラメータ
表176-12 EXCLUDEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
この値には |
使用上のノート
-
Oracle Schedulerの操作中にSQL Firewallが適用されているかどうかのステータスを確認するには、
DBA_SQL_FIREWALL_STATUS
データ・ディクショナリ・ビューのEXCLUDE_JOBS
列を問い合せます。出力がY
の場合、Oracle SchedulerジョブはSQL Firewall操作から除外されます。 -
Oracle FirewallをOracle Schedulerの操作中に実行できるようにするには、
DBMS_SQL_FIREWALL.INCLUDE
プロシージャを実行します。
例
EXEC DBMS_SQL_FIREWALL.EXCLUDE (DBMS_SQL_FIREWALL.SCHEDULER_JOB);
176.4.13 EXPORT_ALLOW_LISTプロシージャ
このプロシージャは、特定のユーザーの許可リストをallow_list
引数で指定されたCLOBにJSON形式でエクスポートします。
構文
DBMS_SQL_FIREWALL.EXPORT_ALLOW_LIST ( username IN VARCHAR2, allow_list IN/OUT CLOB;
パラメータ
表176-13 EXPORT_ALLOW_LISTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
許可リストが作成されているユーザーを指定します。許可リストがあるユーザーを確認するには、 |
|
エクスポートされたallow-listの移動先にする |
使用上のノート
-
このプロシージャの実行前に、
CLOB
を作成してAPIに渡しておく必要があります(たとえば、PL/SQLクライアントの場合はDBMS_LOB.CREATETEMPORARY
、JDBC Javaクライアントの場合はOracleConnection.createClob()
を使用します)。 -
このエクスポート操作には、許可リストの設定(
status
、enforce
、block
、top_level_only
、generated_on
およびstatus_updated_on timestamp
)、許可されるSQLおよび許可されるコンテキストが含まれます。また、このエクスポート操作には、すべての(許可されたSQLによって)参照されたSQLのログが含まれます。 -
DBMS_SQL_FIREWALL.EXPORT_ALLOW_LIST
は、取得ログや違反ログをエクスポートしません。 -
ユーザーの許可リストのステータスを確認するには、
DBA_SQL_FIREWALL_ALLOW_LISTS
データ・ディクショナリ・ビューを問い合せます。 -
すべてのユーザーのキャプチャと許可リストが含まれるすべてのSQLファイアウォール・メタデータをエクスポートする場合は、
DBMS_SQL_FIREWALL.EXPORT_ALLOW_LIST
を使用するかわりに、Oracle Data Pumpのexpdp
コマンドでinclude=SQL_FIREWALL
句を使用します。Oracle Databaseセキュリティ・ガイドを参照してください。
例
BEGIN
DBMS_SQL_FIREWALL.EXPORT_ALLOW_LIST (
username => 'PFITCH',
allow_list => ALLOW_LIST_CLOB;
);
END;
/
176.4.14 FLUSH_LOGSプロシージャ
このプロシージャは、メモリーに存在するすべてのSQL Firewallログをログ表にフラッシュします。
構文
DBMS_SQL_FIREWALL.FLUSH_LOGS;
パラメータ
なし
使用上のノート
- メモリー内のログはバックグラウンドで頻繁にログ表にフラッシュされるため、通常はこのプロシージャを明示的に起動する必要はありません。ただし、SQL Firewallの実行中、アクションの直後にキャプチャ・ログまたは違反ログを表示する場合は、ログを確認する前にこのプロシージャを実行できます。
DBMS_SQL_FIREWALL.FLUSH_LOGS
プロシージャは、DBMS_MEMOPTIMIZE_ADMIN.WRITES_FLUSH
プロシージャと同等です。(「WRITES_FLUSHプロシージャ」を参照してください。)
例
EXEC DBMS_SQL_FIREWALL.FLUSH_LOGS;
176.4.15 GENERATE_ALLOW_LISTプロシージャ
このプロシージャは、ユーザーの既存のキャプチャ・ログを使用して、指定されたユーザーのSQL Firewall許可リストを生成します。
構文
DBMS_SQL_FIREWALL.GENERATE_ALLOW_LIST ( username IN VARCHAR2;
パラメータ
表176-14 GENERATE_ALLOW_LISTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewall許可リストに指定されたユーザーの名前を指定します。このユーザーを確認するには、 |
使用上のノート
- 既存の生成済許可リストに関する情報を確認するには、
DBA_SQL_FIREWALL_ALLOW_LISTS
データ・ディクショナリ・ビューを問い合せます。 - このプロシージャを実行する前に、次のコンポーネントが必要です。
- 指定されたユーザーが存在すること。
- このユーザーのキャプチャが作成されていること(
DBMS_SQL_FIREWALL.CREATE_CAPTURE
を使用)。ユーザーの許可リストを生成する前に、このキャプチャを無効にしておく必要があります(DBMS_SQL_FIREWALL.STOP_CAPTURE
を使用)。 - ユーザーの許可リストがまだ存在しないこと。
例
EXEC DBMS_SQL_FIREWALL.GENERATE_ALLOW_LIST ('PFITCH');
176.4.16 IMPORT_ALLOW_LISTプロシージャ
このプロシージャは、指定された特定のユーザーのCLOB
からターゲット・データベースにallow-listをインポートします。
構文
DBMS_SQL_FIREWALL.IMPORT_ALLOW_LIST ( username IN VARCHAR2, allow_list IN CLOB;
パラメータ
表176-15 IMPORT_ALLOW_LISTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
エクスポートされたallow-listのユーザーを指定します。このユーザーにターゲット・データベースですでに許可リストが作成されているかどうかを確認するには、 |
|
|
使用上のノート
-
このユーザーの許可リストがターゲット・データベースにない場合は、JSONペイロードのallow-listを使用して、このユーザー用の新しいallow-listが作成されます。新しい許可リストの設定(
status
、top_level_only
、enforce
、block
、generated_on
、status_updated_on
)、許可されたコンテキストおよび許可されたSQLはJSONのものと同じになります。指定されたユーザーの許可リストがすでにターゲット・データベースにある場合、既存の許可リストのすべての設定(status
、top_level_only
、enforce
、block
および各種タイムスタンプ)は変更されませんが、許可されたSQLと許可されたコンテキストのみがJSONから既存の許可リストの設定にマージされます。 -
また、このインポート操作には、すべての(許可されたSQLによって)参照されたSQLのログが含まれます。
-
ユーザーの許可リストのステータスを確認するには、
DBA_SQL_FIREWALL_ALLOW_LISTS
データ・ディクショナリ・ビューを問い合せます。 -
キャプチャと許可リストが含まれるすべてのSQLファイアウォール・メタデータをインポートする場合は、
DBMS_SQL_FIREWALL.IMPORT_ALLOW_LIST
を使用するかわりに、Oracle Data Pumpのimpdp
コマンドでinclude=SQL_FIREWALL
句を使用します。Oracle Databaseセキュリティ・ガイドを参照してください。
例
BEGIN
DBMS_SQL_FIREWALL.IMPORT_ALLOW_LIST (
username => 'PFITCH',
allow_list => ALLOW_LIST_CLOB;
);
END;
/
176.4.17 INCLUDEプロシージャ
このプロシージャは、SQL FirewallがOracle Scheduler操作中にデータベース接続およびSQL実行の許容リストをキャプチャおよび適用できるようにします。
構文
DBMS_SQL_FIREWALL.INCLUDE ( FEATURE IN NUMBER);
パラメータ
表176-16 INCLUDEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
この値には |
使用上のノート
-
Oracle Schedulerの操作中にSQL Firewallが適用されているかどうかのステータスを確認するには、
DBA_SQL_FIREWALL_STATUS
データ・ディクショナリ・ビューのEXCLUDE_JOBS
列を問い合せます。出力がN
の場合、SQL FirewallはOracle Schedulerの操作中に実行できます。 -
Oracle Schedulerの操作中にSQL Firewallが実行されないようにするには、
DBMS_SQL_FIREWALL.EXCLUDE
プロシージャを実行します。
例
EXEC DBMS_SQL_FIREWALL.INCLUDE (DBMS_SQL_FIREWALL.SCHEDULER_JOB);
176.4.18 PURGE_LOGプロシージャ
このプロシージャは、指定されたパージ時間に基づいて、指定されたユーザーに属するSQL Firewallログ(つまり、指定されたパージ時間より前に生成されたログ)をパージします。
構文
BEGIN
DBMS_SQL_FIREWALL.PURGE_LOG (
username IN VARCHAR2,
purge_time IN TIMESTAMP WITH TIME ZONE,
log_type IN NUMBER);
パラメータ
表176-17 PURGE_LOGプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
キャプチャ・ログまたは違反ログをパージするユーザーを指定します。キャプチャ・ログを表示するには、 |
|
特定の時間より前に生成されたログのみをパージするように指定できるタイムスタンプ( |
|
パージするログのタイプを指定します。
|
使用上のノート
SQLファイアウォールのログに関する情報を確認するには、DBA_SQL_FIREWALL_VIOLATIONS
データ・ディクショナリ・ビューを問い合せます。
例
BEGIN
DBMS_SQL_FIREWALL.PURGE_LOG (
username => 'PSMITH',
purge_time => TO_TIMESTAMP_TZ('23-JAN-22 18.44.42 -07:00', 'DD/MM/YY HH24:MI:SS TZH:TZM'),
log_type => DBMS_SQL_FIREWALL.VIOLATION_LOG
);
END;
/
176.4.19 START_CAPTUREプロシージャ
このプロシージャは、ユーザーのSQL Firewallキャプチャをただちに開始します。
構文
DBMS_SQL_FIREWALL.START_CAPTURE ( username IN VARCHAR2);
パラメータ
表176-18 START_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewallキャプチャに指定されるユーザーの名前を指定します。 |
使用上のノート
-
ユーザーは、SQL Firewallキャプチャを1つのみ持つことができます。ユーザーがすでにキャプチャに構成されているかどうかを確認するには、
DBA_SQL_FIREWALL_CAPTURES
データ・ディクショナリ・ビューを問い合せます。 -
キャプチャ・プロセスを開始すると、ユーザーが入力したすべてのSQLがSQL Firewallキャプチャ・ログ表にキャプチャされます。
DBA_SQL_FIREWALL_CAPTURE_LOGS
データ・ディクショナリ・ビューを問い合せることで、このSQLを定期的に確認できます。
例
EXEC DBMS_SQL_FIREWALL.START_CAPTURE ('PFITCH');
176.4.20 STOP_CAPTUREプロシージャ
このプロシージャは、ユーザーのSQL Firewallキャプチャをただちに停止します。
構文
DBMS_SQL_FIREWALL.STOP_CAPTURE ( username IN VARCHAR2);
パラメータ
表176-19 STOP_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL Firewallキャプチャに指定されたユーザーの名前を指定します。このユーザーを確認するには、 |
使用上のノート
-
このプロシージャを実行する前に、キャプチャ・プロセスが現在実行されている必要があります。
DBA_SQL_FIREWALL_CAPTURES
データ・ディクショナリ・ビューを問い合せることで、そのステータスを確認できます。 -
キャプチャ・プロセスを停止した後、
DBMS_SQL_FIREWALL.GENERATE_ALLOW_LIST
プロシージャを実行してユーザーの許可リストを生成できます。
例
EXEC DBMS_SQL_FIREWALL.STOP_CAPTURE ('PFITCH');
176.4.21 UPDATE_ALLOW_LIST_ENFORCEMENTプロシージャ
このプロシージャは、指定されたユーザーのSQL Firewall許可リストの適用オプションをただちに更新します。
構文
BEGIN
DBMS_SQL_FIREWALL.UPDATE_ALLOW_LIST_ENFORCEMENT (
username IN VARCHAR2,
enforce IN NUMBER,
block IN BOOLEAN);
パラメータ
表176-20 UPDATE_ALLOW_LIST_ENFORCEMENTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
許可リストが生成されているユーザーの名前を指定します。このユーザーを確認するには、 |
|
|
|
|
使用上のノート
ユーザーの許可リストのステータスを確認するには、DBA_SQL_FIREWALL_ALLOW_LISTS
データ・ディクショナリ・ビューを問い合せます。
例
BEGIN
DBMS_SQL_FIREWALL.UPDATE_ALLOW_LIST_ENFORCEMENT (
username => 'PFITCH',
enforce => DBMS_SQL_FIREWALL.ENFORCE_SQL,
block => TRUE
);
END;
/