32 ファイングレイン監査を使用した特定のアクティビティの監査
ファイングレイン監査では、非常に詳細なレベルで監査ポリシーを作成できます。
- ファイングレイン監査の概要
ファイングレイン監査ポリシーを作成する前に、ファイングレイン監査の仕組みについて全体的な概念を理解する必要があります。 - ファイングレイン監査ポリシーの作成
DBMS_FGA.ADD_POLICY
プロシージャで、ファイングレイン監査ポリシーを作成します。 - ファイングレイン監査ポリシーの管理
ファイングレイン監査ポリシーの作成後、変更または削除できます。 - 例: ファイングレイン監査ポリシーへの電子メール・アラートの追加
このチュートリアルでは、ユーザーがポリシーに違反したときに電子メールのアラートを生成するファイングレイン監査ポリシーの作成方法を示します。 - ファイングレイン監査ポリシーのデータ・ディクショナリ・ビュー
データ・ディクショナリ・ビューおよび動的ビューを問い合せると、ファイングレイン監査ポリシーについて詳細な監査情報を確認できます。
関連トピック
親トピック: 監査を使用したデータベース・アクティビティの監視
32.1 ファイングレイン監査の概要
ファイングレイン監査ポリシーを作成する前に、ファイングレイン監査の仕組みについて全体的な概念を理解する必要があります。
- ファイングレイン監査について
ファイングレイン監査では、ポリシーを作成して、監査が実行される特定の条件を定義できます。 - ファイングレイン監査レコードが格納される場所
ファイングレイン監査レコードは統合監査証跡に格納され、UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューを問い合せることで表示できます。 - ファイングレイン監査の実行者
Oracleには、ファイングレイン監査ポリシーを作成したり、ファイングレイン監査ポリシーのデータを表示および分析するために必要な権限のロールが用意されています。 - Oracle VPDポリシーがある表またはビューでのファイングレイン監査
この監査証跡は、Oracle VPDポリシーに含まれているファイングレイン監査表またはビューからVPD述語を取得します。 - マルチテナント環境でのファイングレイン監査
ファイングレイン監査ポリシーは、CDBルート、アプリケーション・ルート、CDB PDBおよびアプリケーションPDBで作成できます。 - ファイングレイン監査ポリシーとエディション
エディション環境で使用するためのDBMS_FGA
ポリシーを作成できます。
関連トピック
親トピック: ファイングレイン監査を使用した特定のアクティビティの監査
32.1.1 ファイングレイン監査について
ファイングレイン監査では、ポリシーを作成して、監査が実行される特定の条件を定義できます。
ファイングレイン監査を使用して統合監査ポリシーは作成できませんが、データのアクセス時間の監査など、詳細にカスタマイズされた監査設定はファイングレイン監査を使用して作成できます。
これにより、内容に基づいてデータ・アクセスを監視できるようになります。問合せと、INSERT
、UPDATE
、およびDELETE
操作に対して詳細な監査を提供します。ファイングレイン監査を使用すると、次のタイプのアクションを監査できます。
-
午後9時から午前6時の間、または土曜日と日曜日に表にアクセスする場合
-
社内ネットワーク外部のIPアドレスを使用する場合
-
表の列を選択または更新する場合
-
表の列の値を変更する場合
通常、ファイングレイン監査ポリシーは、選択的監査の条件である、表オブジェクトに対する単純なユーザー定義SQL述語に基づいています。フェッチ中に行がポリシーの条件を満たすと、その問合せが監査対象となります。
統合監査ポリシーでは、次のアクションを除き、ファイングレイン監査ポリシーで実行できるほとんどの操作を実行できます。
-
特定の列の監査。給与や社会保障番号など、機密情報が格納されている特定の関連する列を監査できます。
-
イベント・ハンドラの使用。たとえば、夜中に変更されないようにする必要がある監査対象の列が更新された場合に、セキュリティ管理者に電子メール・アラートを送信する関数を作成できます。
ファイングレイン監査には、統合監査と比べて次のような利点があります。
- 行値ベースの監査を実行できます。たとえば、更新された値が指定のしきい値より高い場合は
salary
列に対する更新を監査できますが、そうでない場合は監査できません。 - ファイングレイン監査イベント・ハンドラを使用して、管理者または他のユーザーに特定のイベントを事前に通知できます。
- PL/SQLで
BULK COLLECT
およびFORALL
を使用したバルク・データ処理操作中に、様々なバインド変数に対して同じDML文を繰り返し実行すると、ファイングレイン監査により、適切なバインド変数値で繰返し実行された文を取得できます。
ノート:
-
ファイングレイン監査は、コストベースの最適化でのみサポートされています。ルールベースの最適化を使用する問合せでは、行フィルタを適用する前にファイングレイン監査が行われるため、不要な監査イベント・トリガーが発生します。
-
フラッシュバック問合せに含まれるオブジェクトで現在有効なポリシーが、指定したフラッシュバック・スナップショット(時間またはシステム変更番号(SCN)に基づく)から戻されたデータに適用されます。
-
ファイングレイン監査を使用して直接ロードされるデータを監査する場合(たとえばOracle Warehouse Builderを使用してDML文を実行する場合)、Oracle Databaseはデータベース・インスタンスで実行されているすべてのダイレクト・ロードを透過的に従来型ロードにします。データのダイレクト・ロードを保持する場合は、かわりに統合監査ポリシーの使用を検討してください。
親トピック: ファイングレイン監査の概要
32.1.2 ファイングレイン監査レコードが格納される場所
ファイングレイン監査レコードは統合監査証跡に格納され、UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューを問い合せることで表示できます。
これらの監査レコードは、デフォルトでSYSAUX
表領域に格納されます。DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION
プロシージャを使用して、新しい表領域を指定できます。この表領域は暗号化された表領域にできます。有効な監査ポリシーに対して生成されたレコードを検索するために、AUDIT_ADMIN
ロールまたはAUDIT_VIEWER
ロールを持つユーザーは、UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューを問い合せることができます。
監査証跡では、SQL文内の表またはビューの参照ごとに監査レコードが取得されます。たとえば、HR.EMPLOYEES
表を2回参照するUNION
文を実行した場合、文の監査ポリシーによって2つ(HR.EMPLOYEES
表へのアクセスごとに1つ)の監査レコードが生成されます。
32.1.3 ファイングレイン監査の実行者
Oracleには、ファイングレイン監査ポリシーを作成したり、ファイングレイン監査ポリシーのデータを表示および分析するために必要な権限のロールが用意されています。
ファイングレイン監査には、次の権限があります。
-
ファイングレイン監査ポリシーを作成するには、
AUDIT_ADMIN
ロールまたはDBMS_FGA
パッケージに対するEXECUTE
権限が付与されている必要があります。また、次のように、ADMINISTER FINE GRAINED AUDIT POLICY
システム権限も付与されている必要があります。- ファイングレイン監査ポリシーがデータベース全体の
SYS
以外のすべてのスキーマに適用される場合のADMINISTER FINE GRAINED AUDIT POLICY
権限付与の構文:GRANT ADMINISTER FINE GRAINED AUDIT POLICY TO grantee;
- ファイングレイン監査ポリシーが特定のスキーマに制限される場合の
ADMINISTER FINE GRAINED AUDIT POLICY
権限付与の構文:GRANT ADMINISTER FINE GRAINED AUDIT POLICY ON SCHEMA schema TO grantee;
- ファイングレイン監査ポリシーがデータベース全体の
-
ファイングレイン監査データを表示および分析するには、
AUDIT_VIEWER
ロールが付与されている必要があります。
PL/SQLパッケージにはAUDIT_ADMIN
ロールがすでに付与されています。すべての権限と同様に、管理者がこれらのロールを信頼できるユーザーにのみ付与する必要があります。DBA_ROLE_PRIVS
データ・ディクショナリ・ビューを問い合せることで、ユーザーに付与されているロールを確認できます。
親トピック: ファイングレイン監査の概要
32.1.4 Oracle VPDポリシーがある表またはビューでのファイングレイン監査
この監査証跡は、Oracle VPDポリシーに含まれているファイングレイン監査表またはビューからVPD述語を取得します。
この動作は、統合監査証跡で統合監査ポリシーのVPD述語を取得する場合の動作に似ています。
監査証跡では、Oracle Label SecurityおよびOracle Real Application Securityのポリシーの内部述語も取得されます。
VPD述語監査レコードを取得するために特別な監査ポリシーを作成する必要はありません。述語情報は自動的に、UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューのRLS_INFO
列に格納されます。
同じ表またはビューに適用されるVPDポリシーが複数ある場合、これらのポリシーの述部は、デフォルトでRLS_INFO
列に連結されます。各述語がそれ自体の行(対応するVPDポリシー名などの情報で特定)に含まれるように出力を再フォーマットするには、DBMS_AUDIT_UTIL
PL/SQL パッケージのファンクションを使用します。
32.1.5 マルチテナント環境でのファイングレイン監査
ファイングレイン監査ポリシーは、CDBルート、アプリケーション・ルート、CDB PDBおよびアプリケーションPDBで作成できます。
ファイングレイン監査ポリシーには、次のような一般的なルールがあります。
-
ファイングレイン監査ポリシーは、
SYS
オブジェクトに対して作成できません。 -
ファイングレイン監査ポリシーは(ローカルまたはアプリケーション共通を問わず)、拡張データ・リンク・オブジェクトに対して作成できません。
-
CDBルートでファイングレイン監査ポリシーを作成する場合、すべてのPDBにポリシーを適用することはできません。ポリシーはCDBルート内のオブジェクトに適用されます。(つまり、CDBルートに対する共通のファイングレイン監査ポリシーは存在しません。)すべてのPDBで共通オブジェクトのアクセスを監査するようにファイングレイン監査ポリシーを作成する場合は、監査ポリシーを各PDBで明示的に作成し、PDBでアクセス可能にする共通オブジェクトに対してそのポリシーを有効化する必要があります。
-
PDBでファイングレイン監査ポリシーを作成する場合、ポリシーはPDB内のオブジェクトにのみ適用されます。マルチテナント環境全体に1つのポリシーを作成することはできません。PDB内でオブジェクトにポリシーを指定する必要があります。
-
アプリケーション共通ファイングレイン監査ポリシーは、アプリケーション・ルートに接続し、
BEGIN
/END
ブロック内にいる場合にのみ作成できます。アプリケーション・ルートに接続し、BEGIN
/END
ブロック外でファイングレイン監査ポリシーを作成すると、ファイングレイン監査ポリシーはアプリケーション・ルートに作成されます。 -
アプリケーション共通ファイングレイン監査ポリシーは、ローカルPDBオブジェクトに対して作成できません。
-
アプリケーション共通ファイングレイン監査ポリシーにハンドラがある場合、このハンドラはアプリケーション共通ユーザーまたはCDB共通ユーザーによって所有されている必要があります。
-
アプリケーション・ファイングレイン監査ポリシーは、ローカル(PDB)オブジェクトおよびCDB共通オブジェクトに対して作成できます。ポリシーはそのコンテナに対してローカルであるため、ポリシーが定義されたオブジェクトは、ポリシーが定義された特定のコンテナ内でのみ監査されます。たとえば、ファイングレイン監査ポリシーを
hr_pdb
PDBで作成する場合、このポリシーを作成する対象のオブジェクトは、hr_pdb
PDB内に存在する必要があります。 -
ローカル・ファイングレイン監査ポリシーは、アプリケーションPDB内のオブジェクト・リンク・オブジェクトおよび拡張データ・リンク・オブジェクトに対して作成できません。メタデータリンク・オブジェクトは、ファイングレイン監査ポリシーで使用できます。
-
アプリケーション・ルート・ローカル・ポリシーは、アプリケーション共通オブジェクトに対して使用できます。
-
ファイングレイン監査ポリシーを共通監査ポリシーとしてアプリケーション・ルートで作成する場合、このアプリケーション・ルートに属する各PDBで有効になります。したがって、アプリケーションPDBのアプリケーション共通オブジェクトおよびCDB共通オブジェクト(アプリケーション共通ファイングレイン監査ポリシーが定義されたもの)は、そのアプリケーションPDB内のファイングレイン監査証跡において監査されます。
-
アプリケーションのインストール、アップグレード、パッチ適用またはアンインストール操作用のスクリプトを作成する際、
ALTER PLUGGABLE DATABASE app_name BEGIN INSTALL
およびALTER PLUGGABLE DATABASE app_name END INSTALL
ブロック内にSQL文を含めて、様々な操作を実行できます。ファイングレイン監査ポリシー文は、これらのブロック内にのみ含めることができます。 -
アプリケーション共通ファイングレイン監査ポリシーの有効化、無効化または削除の実行は、アプリケーション・ルートから、およびスクリプト内の
ALTER PLUGGABLE DATABASE app_name BEGIN INSTALL
およびALTER PLUGGABLE DATABASE app_name END INSTALL
ブロック内からに限定されます。
親トピック: ファイングレイン監査の概要
32.1.6 ファイングレイン監査ポリシーとエディション
エディション環境で使用するためのDBMS_FGA
ポリシーを作成できます。
次のことに注意してください。
-
エディション・ベースの再定義のアプリケーションを作成し、アプリケーションが編集ビューで使用する各表を対象とすることができます。これを行う場合、編集ビューに対してこれらの表を保護するファイングレイン監査ポリシーを移動する必要があります。DBA_EDITIONSデータ・ディクショナリ・ビューを問い合せることで、現在構成されているエディションについて情報を確認できます。ファイングレイン監査ポリシーに関する情報を確認するには、DBA_AUDIT_POLICIESを問い合せます。
-
DBMS_FGA
パッケージ・ポリシーを異なる複数のエディションで使用する場合、ポリシーの結果を制御できます。つまり、結果をすべてのエディションで同一にするか、またはポリシーが使用されているエディションに固有にできます。
32.2 ファイングレイン監査ポリシーの作成
DBMS_FGA.ADD_POLICY
プロシージャで、ファイングレイン監査ポリシーを作成します。
- ファイングレイン監査ポリシーの作成について
ファイングレイン監査ポリシーを作成するには、ファイングレイン監査ポリシーを作成および管理するためのプロシージャが含まれるDBMS_FGA
PL/SQLパッケージを使用します。 - ファイングレイン監査ポリシーの作成の構文
DBMS_FGA.ADD_POLICY
プロシージャには、複雑な監査のハンドラを使用する機能など、様々な設定が含まれています。 - 例: DBMS_FGA.ADD_POLICYを使用してファイングレイン監査ポリシーを作成する方法
DBMS_FGA.ADD_POLICY
プロシージャで、複数の文タイプを使用してファイングレイン監査ポリシーを作成できます。 - 特定の列および行の監査
条件が一致した列(関連列)を監査対象にするなど、監査動作を細かく調節できます。
親トピック: ファイングレイン監査を使用した特定のアクティビティの監査
32.2.1 ファイングレイン監査ポリシーの作成について
ファイングレイン監査ポリシーを作成するには、ファイングレイン監査ポリシーを作成および管理するためのプロシージャが含まれるDBMS_FGA
PL/SQLパッケージを使用します。
DBMS_FGA
PL/SQLパッケージを使用すると、SELECT
、INSERT
、UPDATE
およびDELETE
文のすべての組合せを1つのポリシーに追加できます。また、基礎となるアクションのINSERT
およびUPDATE
を監査することによって、MERGE
文も監査できます。MERGE
文を監査するには、INSERT
およびUPDATE
文に対するファイングレイン・アクセスを構成します。成功したMERGE
操作についてポリシーごとにレコードが1つのみ生成されます。
ファイングレイン監査ポリシーを作成する実表にマテリアライズド・ビューを作成する場合は、同じ表にマテリアライズド・ビューを作成する前に、実表にファイングレイン監査ポリシーを作成する必要があります。そうしないと、マテリアライズド・ビューに対するリフレッシュ操作はORA-12008: 「マテリアライズド・ビューのリフレッシュ・パスでエラーが発生しました。」
エラーで失敗します。
ファイングレイン監査ポリシーを管理するには、AUDIT_ADMIN
ロールを付与する必要があります。DBMS_FGA
パッケージのEXECUTE
権限は強制的に監査されることにも注意してください。
監査ポリシーは、監査ポリシーを作成した表にバインドされます。これにより、それぞれのアプリケーションではなく、データベースで一度だけポリシーを変更すればよいため、監査ポリシーの管理が容易です。また、データベースへの接続方法(接続元がアプリケーション、Webインタフェース、SQL*PlusやOracle SQL Developerのいずれであるか)に関係なく、ポリシーに影響を与えるアクションがすべて記録されます。
問合せから戻された行が定義した監査条件と一致すると、ファイングレイン監査証跡に監査エントリが挿入されます。このエントリでは、通常の監査証跡でレポートされるすべての情報が除外されます。つまり、TRUEと評価されたすべてのファイングレイン監査ポリシーに対して、1行の監査情報のみが監査証跡に挿入されます。
DBMS_FGA.ADD_POLICY
プロシージャで、指定された述語を監査条件として使用し、監査ポリシーを作成します。
デフォルトでは、ポリシーを所有するユーザーの権限で、ポリシーの述語がOracle Databaseによって実行されます。表オブジェクトまたはビュー・オブジェクトに設定可能なファイングレイン・ポリシーの最大数は256です。Oracle Databaseでは、ポリシーはデータ・ディクショナリ表に格納されますが、SYS
スキーマ内に存在しない表またはビューに関するポリシーを作成できます。ファイングレイン・ポリシーは、ローカルPDBでのみ作成されます。
ファイングレイン監査ポリシーを作成後に変更することはできません。ポリシーを変更する必要がある場合は、削除してから再作成します。
ファイングレイン監査ポリシーに関する情報を検索するには、ALL_AUDIT_POLICIES
、DBA_AUDIT_POLICIES
およびUSER_AUDIT_POLICIES
ビューを問い合せます。UNIFIED_AUDIT_TRAIL
ビューには、FGA_POLICY_NAME
という名前の列が含まれ、この列を使用すると、特定のファイングレイン監査ポリシーを使用して生成された行をフィルタできます。
32.2.2 ファイングレイン監査ポリシーの作成の構文
DBMS_FGA.ADD_POLICY
プロシージャには、複雑な監査のハンドラを使用する機能など、様々な設定が含まれています。
DBMS_FGA.ADD_POLICY
プロシージャの構文は次のとおりです。
DBMS_FGA.ADD_POLICY( object_schema IN VARCHAR2 DEFAULT NULL object_name IN VARCHAR2, policy_name IN VARCHAR2, audit_condition IN VARCHAR2 DEFAULT NULL, audit_column IN VARCHAR2 DEFAULT NULL handler_schema IN VARCHAR2 DEFAULT NULL, handler_module IN VARCHAR2 DEFAULT NULL, enable IN BOOLEAN DEFAULT TRUE, statement_types IN VARCHAR2 DEFAULT SELECT, audit_trail IN BINARY_INTEGER DEFAULT NULL, audit_column_opts IN BINARY_INTEGER DEFAULT ANY_COLUMNS, policy_owner IN VARCHAR2 DEFAULT NULL);
詳細は、次のとおりです。
-
object_schema
には、監査するオブジェクトのスキーマを指定します。(NULL
の場合、現行のログオン・ユーザーのスキーマと想定されます。) -
object_name
には、監査するオブジェクトの名前を指定します。 -
policy_name
には、作成するポリシーの名前を指定します。この名前は必ず一意にしてください。 -
audit_condition
には、行のブール条件を指定します。NULL
も指定できます(TRUE
として機能します)。監査条件にNULL
を指定するか、何も指定しない場合は、そのポリシーが設定された表に対するアクションが行われると、行が戻されるかどうかに関係なく監査レコードが作成されます。次のガイドラインに従ってください。
-
ファンクションは、同じ実表で監査可能な文を実行するため、
audit_condition
設定に含めないでください。たとえば、HR.EMPLOYEES
表に対してINSERT
文を実行するファンクションを作成するとします。ポリシーのaudit_condition
には、このファンクションが含まれていて、これは(statement_types
により設定される)INSERT
文のポリシーです。このポリシーが使用されると、ファンクションはシステムのメモリーが足りなくなるまで再帰的に実行します。これにより、ORA-1000: 最大オープン・カーソル数を超えました。
またはORA-00036: 再帰的SQLレベルの最大値(50)を超えました
のエラーが発生する場合があります。 -
DBMS_FGA.ENABLE_POLICY
文またはDBMS_FGA.DISABLE_POLICY
文を、ポリシーの条件に含まれるファンクションから発行しないでください。
-
-
audit_column
には、監査対象の1つ以上の列(非表示列も含む)を指定します。NULL
に設定するかまたは省略すると、すべての列が監査されます。Oracle Label Securityの非表示列やオブジェクト・タイプ列も対象になります。デフォルトのNULL
の場合、アクセスまたは影響を受ける列があれば監査が行われます。 -
handler_schema
: ポリシーに違反した場合の応答のトリガーにアラートが使用される場合は、イベント・ハンドラが含まれているスキーマの名前を指定します。デフォルトのNULL
では、現行のスキーマが使用されます。 -
handler_module
には、イベント・ハンドラの名前を指定します。イベント・ハンドラが含まれるパッケージも対象になります。このファンクションは、問合せの監査条件と一致する最初の行が処理された後でのみ実行されます。次のガイドラインに従ってください。
-
再帰的ファイングレイン監査ハンドラを作成しないでください。たとえば、
HR.EMPLOYEES
表に対してINSERT
文を実行するハンドラを作成するとします。このハンドラに関連付けられるポリシーは、(statement_types
パラメータにより設定される)INSERT
文のポリシーです。このポリシーが使用されると、ハンドラはシステムのメモリーが足りなくなるまで再帰的に実行します。これにより、ORA-1000: 最大オープン・カーソル数を超えました。
またはORA-00036: 再帰的SQLレベルの最大値(50)を超えました
のエラーが発生する場合があります。 -
DBMS_FGA.ENABLE_POLICY
文またはDBMS_FGA.DISABLE_POLICY
文をポリシー・ハンドラから発行しないでください。これらの文を発行すると、ORA-28144: ファイングレイン監査ハンドラの実行に失敗しました
エラーが発生する場合があります。
-
-
enable
は、TRUEまたはFALSEを使用してポリシーを使用可能または使用禁止にします。省略した場合、ポリシーは使用可能になります。デフォルトはTRUE
です -
statement_types
: 監査対象のSQL文を指定します。INSERT
、UPDATE
、DELETE
またはSELECT
のみです。MERGE
操作を監査する場合は、statement_types
を'INSERT,UPDATE'
に設定します。デフォルト値はSELECT
です。 -
audit_trail
: 統合監査に移行している場合は、Oracle Databaseによってこのパラメータは無視され、監査レコードが統合監査証跡に即座に書き込まれます。Oracle Database 23c以降、従来の監査はサポートされないため、audit_trail
は無視されます。クレジット・カード情報などの機密データもクリアテキストで記録できることに注意してください。
-
audit_column_opts
:audit_column
パラメータで複数の列を指定した場合は、すべての列を監査するか特定の列を監査するかをこのパラメータで決定します。 -
policy_owner
は、ファイングレイン監査ポリシーを所有するユーザーです。ただし、この設定はユーザー指定の引数ではありません。Oracle Data Pumpクライアントは、この設定を内部で使用して、ファイングレイン監査ポリシーを適宜再作成します。
32.2.3 例: DBMS_FGA.ADD_POLICYを使用してファイングレイン監査ポリシーを作成する方法
DBMS_FGA.ADD_POLICY
プロシージャで、複数の文タイプを使用してファイングレイン監査ポリシーを作成できます。
例32-1に、表HR.EMPLOYEES
に対する文INSERT
、UPDATE
、DELETE
およびSELECT
を監査する方法を示します。
この例では、audit_column_opts
パラメータが必須パラメータではないため省略されていることに注意してください。
例32-1 DBMS_FGA.ADD_POLICYを使用してファイングレイン監査ポリシーを作成する方法
BEGIN DBMS_FGA.ADD_POLICY( object_schema => 'HR', object_name => 'EMPLOYEES', policy_name => 'chk_hr_employees', audit_column => 'SALARY', enable => TRUE, statement_types => 'INSERT, UPDATE, SELECT, DELETE'); END; /
ポリシーを作成した後、DBA_AUDIT_POLICIES
ビューを問い合せると、新しいポリシーがリストされることを確認できます。
SELECT POLICY_NAME FROM DBA_AUDIT_POLICIES; POLICY_NAME ------------------------------- CHK_HR_EMPLOYEES
その後、次のようなSQL文を発行すると、監査イベント・レコードが記録されます。
SELECT COUNT(*) FROM HR.EMPLOYEES WHERE COMMISSION_PCT = 20 AND SALARY > 4500; SELECT SALARY FROM HR.EMPLOYEES WHERE DEPARTMENT_ID = 50; DELETE FROM HR.EMPLOYEES WHERE SALARY > 1000000;
親トピック: ファイングレイン監査ポリシーの作成
32.2.4 特定の列および行の監査
条件が一致した列(関連列)を監査対象にするなど、監査動作を細かく調節できます。
これを実行するには、audit_column
パラメータを使用して、機密情報が含まれた列を1つ以上指定します。また、audit_condition
パラメータを使用してブール条件を定義すると、特定の行のデータを監査できます。(ただし、ポリシーで条件の監査のみが必要な場合は、監査ポリシー条件の使用を検討してください。)
次の設定によって部門50 (DEPARTMENT_ID = 50
)のユーザーがSALARY
およびCOMMISSION_PCT
列にアクセスしようとしたときに監査を実行できます。
audit_condition => 'DEPARTMENT_ID = 50', audit_column => 'SALARY,COMMISSION_PCT,'
この機能は非常に有用です。監査対象を特定の重要なデータ・タイプに限定できるだけでなく、社会保障番号、給与情報、診断書などの機密データを含む列をより強力に保護できます。
audit_column
に複数の列がリストされている場合は、audit_column_opts
パラメータを使用すると、文の監査が、audit_columnパラメータで指定されたいずれかの
列が問合せで参照されたときに実行されるか、またはすべての列が参照されたときにのみ実行されるかを指定できます。例:
audit_column_opts => DBMS_FGA.ANY_COLUMNS, audit_column_opts => DBMS_FGA.ALL_COLUMNS,
関連列を指定しない場合、監査はすべての列に適用されます。
32.3 ファイングレイン監査ポリシーの管理
ファイングレイン監査ポリシーの作成後、変更または削除できます。
- ファイングレイン監査ポリシーを使用可能にする方法
DBMS_FGA.ENABLE_POLICY
プロシージャで、ファイングレイン監査ポリシーを有効にします。 - ファイングレイン監査ポリシーを使用禁止にする方法
DBMS_FGA.DISABLE_POLICY
プロシージャで、ファイングレイン監査ポリシーを無効にします。 - ファイングレイン監査ポリシーの削除
DBMS_FGA.DROP_POLICY
プロシージャで、ファイングレイン監査ポリシーを削除します。
親トピック: ファイングレイン監査を使用した特定のアクティビティの監査
32.4 例: ファイングレイン監査ポリシーへの電子メール・アラートの追加
このチュートリアルでは、ユーザーがポリシーに違反したときに電子メールのアラートを生成するファイングレイン監査ポリシーの作成方法を示します。
- このチュートリアルについて
このチュートリアルでは、ユーザー(または侵入者)がポリシーに違反したときに実施される電子メールのアラートをファイングレイン監査ポリシーに追加する方法を示します。 - ステップ1: UTL_MAIL PL/SQLパッケージのインストールおよび構成
UTL_MAIL
PL/SQLで、添付、CCおよびBCCなど一般に使用される電子メール機能が組み込まれた電子メールを管理します。 - ステップ2: ユーザー・アカウントの作成
管理アカウントおよび監査ユーザーを作成する必要があります。 - ステップ3: ネットワーク・サービスに対するアクセス制御リスト・ファイルの構成
アクセス制御リスト(ACL)ファイルを使用して、外部ネットワーク・サービスへのファイングレイン・アクセスを有効にできます。 - ステップ4: 電子メール・セキュリティ・アラートPL/SQLプロシージャの作成
電子メール・セキュリティ・アラートPL/SQLプロシージャは、違反について説明するメッセージを生成し、このメッセージを適切なユーザーに送信します。 - ステップ5: ファイングレイン監査ポリシー設定の作成とテスト
ファイングレイン監査ポリシーは、ポリシーの違反があるとアラートをトリガーします。 - ステップ6: アラートのテスト
コンポーネントの準備ができたら、アラートをテストします。 - ステップ7: このチュートリアルのコンポーネントの削除
このチュートリアルのコンポーネントが不要になった場合、それらを削除できます。
親トピック: ファイングレイン監査を使用した特定のアクティビティの監査
32.4.1 このチュートリアルについて
このチュートリアルでは、ユーザー(または侵入者)がポリシーに違反したときに実施される電子メールのアラートをファイングレイン監査ポリシーに追加する方法を示します。
ノート:
-
このチュートリアルを完了するには、SMTPサーバーのあるデータベースを使用する必要があります。
-
このチュートリアルは、現在のPDBにのみ適用されます。
ファイングレイン監査ポリシーに電子メール・アラートを追加するには、最初にアラートを生成するプロシージャを作成し、次のDBMS_FGA.ADD_POLICY
パラメータを使用して、ユーザーがこのポリシーに違反した場合にこのファンクションをコールする必要があります。
-
handler_schema
: ハンドラ・イベントが格納されるスキーマ -
handler_module
: イベント・ハンドラの名前
アラートは、電子メールまたはポケベルによる通知や、特定のファイルまたは表の更新など、環境に適した形式で生成できます。アラートを作成すると、California Senate Bill 1386などの特定のコンプライアンス規制を満たすことも可能です。この例では、電子メール・アラートを作成します。
この例では、セキュリティ管理者に対して、人事部門の担当者がHR.EMPLOYEES
表内の給与情報を選択または変更しようとしていることを通知する電子メール・アラートを作成します。担当者はこの表を変更することを許可されていますが、コンプライアンス規制を満たすために、表内の給与情報に対するすべての選択および変更操作に関するレコードを作成できます。
32.4.2 ステップ1: UTL_MAIL PL/SQLパッケージのインストールおよび構成
UTL_MAIL
PL/SQLで、添付、CCおよびBCCなど一般に使用される電子メール機能が組み込まれた電子メールを管理します。
32.4.4 ステップ3: ネットワーク・サービス用のアクセス制御リスト・ファイルの構成
アクセス制御リスト(ACL)ファイルを使用して、外部ネットワーク・サービスへのファイングレイン・アクセスを有効にできます。
UTL_MAIL
などのPL/SQLネットワーク・ユーティリティ・パッケージを使用するには、このタイプのアクセス制御リスト(ACL)ファイルを構成する必要があります。
32.4.5 ステップ4: 電子メール・セキュリティ・アラートPL/SQLプロシージャの作成
電子メール・セキュリティ・アラートPL/SQLプロシージャは、違反について説明するメッセージを生成し、このメッセージを適切なユーザーに送信します。
-
ユーザー
fga_admin
で、次のプロシージャを作成します。CREATE OR REPLACE PROCEDURE email_alert (sch varchar2, tab varchar2, pol varchar2) AS msg varchar2(20000) := 'HR.EMPLOYEES table violation. The time is: '; BEGIN msg := msg||TO_CHAR(SYSDATE, 'Day DD MON, YYYY HH24:MI:SS'); UTL_MAIL.SEND ( sender => 'youremail@example.com', recipients => 'recipientemail@example.com', subject => 'Table modification on HR.EMPLOYEES', message => msg); END email_alert; /
この例では、次のようになります。
-
CREATE OR REPLACE PROCEDURE ...AS
: 次のステップで監査ポリシーに定義するスキーマ名(sch
)、表名(tab
)および監査プロシージャ名(pol
)を表す署名を指定する必要があります。 -
sender
およびrecipients
:youremail@example.com
を自分の電子メール・アドレス、recipientemail@example.com
を通知の受信対象者の電子メール・アドレスに置き換えます。
-
32.5 ファイングレイン監査ポリシーのデータ・ディクショナリ・ビュー
データ・ディクショナリ・ビューおよび動的ビューを問い合せると、ファイングレイン監査ポリシーについて詳細な監査情報を確認できます。
表31-20に、これらのビューを示します。
ヒント:
監査ポリシーに関するエラー情報を検索するには、トレース・ファイルを確認します。USER_DUMP_DEST
初期化パラメータは、トレース・ファイルの位置を示します。
表32-1 ファイングレイン監査ポリシーで使用するビュー
ビュー | 説明 |
---|---|
|
すべてのファイングレイン監査ポリシーに関する情報が表示されます。 |
|
オブジェクトの作成時に適用されるデフォルトのオブジェクト監査オプションがリストされます。 |
|
監査可能なシステム・アクション番号がアクション名にマップされます。 |
|
|
|
ファイングレイン監査ポリシーに関する情報が表示されます。 |
|
ユーザーによって実行される監査対象のOracle Label Securityイベントが表示され、ユーザーのアクションが成功したか失敗したかが示されます。 |
|
権限(監査オプション)型コードが表示されます。この表を使用して、権限(監査オプション)の型番号を型名にマップできます。 |
|
現行ユーザーによって所有される表およびビューのすべてのファイングレイン監査ポリシーに関する情報が表示されます。 |
|
すべての監査レコードが表示されます。 |
|
XML形式のファイルに書き込まれた標準監査、ファイングレイン監査、 |
関連トピック
親トピック: ファイングレイン監査を使用した特定のアクティビティの監査