31 ファイングレイン監査ポリシーを使用した値ベースの監査
ファイングレイン監査を使用すると、値ベースの監査を実行して、特定の列の値に基づいて特定の行へのアクセスを監査できます。
関連トピック
31.1 ファイングレイン監査の概要
ファイングレイン監査ポリシーを作成する前に、ファイングレイン監査の仕組みについて全体的な概念を理解する必要があります。
関連トピック
31.1.1 ファイングレイン監査について
Oracle Databaseでは、Oracle Database Enterprise Editionで使用可能なファイングレイン監査(FGA)によって、カスタマイズされた監査ポリシーを作成できます。
値ベースの監査を実行し、特定の列値に基づいて特定の行へのアクセスを監査する場合、またはOracleデータベース内のイベント・ハンドラと統合する場合は、ファイングレイン監査を使用します。
ファイングレイン監査により、返される列値のコンテンツに基づいてデータ・アクセスを監視できます。たとえば、ファイングレイン監査では、SALARY >1500を含むレコード値が問合せによって取得された場合のみ、EMPLOYEES表のSALARYなどの機密列へのアクセスを監査できます。ファイングレイン監査ポリシーを使用すると、イベント・ハンドラを指定することもできます。イベント・ハンドラは、監査条件がトリガーされたときにOracle DatabaseがコールするPL/SQLファンクションです。SQL問合せがファイングレイン監査ポリシー条件(つまり、関連する列およびアクセス対象の特定のデータ値)を満たす場合、Oracle Databaseはイベント・ハンドラを呼び出します。このイベント・ハンドラは、データベース管理者にメッセージを送信するように構成することも、外部システムでセキュリティ・アラートをトリガーすることもできます。これにより、セキュリティ違反の検出がスピードアップし、管理者は問題に迅速に対応できます。
統合監査ポリシーに加えて、ファイングレイン監査ポリシーを検討する2つの主なユースケースは次のとおりです:
- 特定のセキュリティ関連列およびその機密データ値(給与や社会保障番号など)へのアクセスを監査する場合
- セキュリティ侵害の可能性についてアラートを示す場合
ファイングレイン監査によって、コンテンツに基づいてデータ・アクセスを監視できるようになります。問合せと、INSERT、UPDATE、およびDELETE操作に対して詳細な監査を提供します。ファイングレイン監査を検討するインスタンスの例としては、次のものがあります:
-
午後9時から午前6時の間、または土曜日と日曜日に表にアクセスする場合
-
社内ネットワーク外部のIPアドレスを使用する場合
-
予想されるしきい値を超える機密データ値を変更する場合
ファイングレイン監査ポリシーは、選択的監査の条件となる、表オブジェクトに対する単純なユーザー定義SQL述語に基づいています。SQL文は、フェッチ中に行のポリシー条件が満たされると監査対象になります。
次の要件がある場合は、統合監査ポリシーに対するファイングレイン監査ポリシーの使用を検討してください:
- 行値ベースの監査が必要です。たとえば、更新された値が指定のしきい値より高い場合はsalary列に対する更新を監査する必要がありますが、そうでない場合は監査しません。
- Oracleデータベース内の特定のイベントを管理者または他のユーザーに事前に通知する必要があります。
- PL/SQLで
BULK COLLECTおよびFORALLを使用したバルク・データ処理操作には、DML文で異なる複数のバインド変数値を取得する必要があります。
ノート:
-
ファイングレイン監査は、コストベースの最適化でのみサポートされています。ルールベースの最適化を使用する問合せでは、行フィルタを適用する前にファイングレイン監査が行われるため、不要な監査イベント・トリガーが発生します。
-
フラッシュバック問合せに含まれるオブジェクトで現在有効なポリシーが、指定したフラッシュバック・スナップショット(時間またはシステム変更番号(SCN)に基づく)から戻されたデータに適用されます。
-
ファイングレイン監査を使用して直接ロードされるデータを監査する場合(たとえばOracle Warehouse Builderを使用してDML文を実行する場合)、Oracle Databaseはデータベース・インスタンスで実行されているすべてのダイレクト・ロードを透過的に従来型ロードにします。データのダイレクト・ロードを保持する場合は、かわりに統合監査ポリシーの使用を検討してください。
31.1.2 ファイングレイン監査レコードが格納される場所
ファイングレイン監査レコードは統合監査証跡に格納され、UNIFIED_AUDIT_TRAILデータ・ディクショナリ・ビューを問い合せることで表示できます。
AUDIT_ADMINまたはAUDIT_VIEWERロールを持つ管理者は、UNIFIED_AUDIT_TRAILデータ・ディクショナリ・ビューを問い合せることができます。
監査証跡では、SQL文内の表またはビューの参照ごとに監査レコードが取得されます。たとえば、HR.EMPLOYEES表を2回参照するUNION文を実行した場合、文の監査ポリシーによって2つ(HR.EMPLOYEES表へのアクセスごとに1つ)の監査レコードが生成されます。
31.1.3 ファイングレイン監査の実行者
Oracleには、ファイングレイン監査ポリシーを作成したり、ファイングレイン監査ポリシーのデータを表示および分析するために必要な権限のロールが用意されています。
ファイングレイン監査には、次の権限があります。
-
ファイングレイン監査ポリシーを作成し管理するには、
AUDIT_ADMINロールまたはDBMS_FGAパッケージに対するEXECUTE権限が付与されている必要があります。自分のスキーマ以外のスキーマを管理するには、ADMINISTER FINE GRAINED AUDIT POLICYシステム権限も付与されている必要があります。(ユーザー自身のスキーマでファイングレイン監査ポリシーを管理する場合、この権限は必要ありません。)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データ・ディクショナリ・ビューを問い合せることで、ユーザーに付与されているロールを確認できます。
31.1.4 Oracle VPDポリシーがある表またはビューでのファイングレイン監査
この監査証跡は、Oracle VPDポリシーに含まれているファイングレイン監査表またはビューからVPD述語を取得します。
この動作は、統合監査証跡で統合監査ポリシーのVPD述語を取得する場合の動作に似ています。
監査証跡では、Oracle Label SecurityおよびOracle Real Application Securityのポリシーの内部述語も取得されます。
VPD述語監査レコードを取得するために特別な監査ポリシーを作成する必要はありません。述語情報は自動的に、UNIFIED_AUDIT_TRAILデータ・ディクショナリ・ビューのRLS_INFO列に格納されます。
31.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_pdbPDBで作成する場合、このポリシーを作成する対象のオブジェクトは、hr_pdbPDB内に存在する必要があります。 -
ローカル・ファイングレイン監査ポリシーは、アプリケーション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ブロック内からに限定されます。
31.1.6 ファイングレイン監査ポリシーとエディション
エディション環境で使用するためのDBMS_FGAポリシーを作成できます。
次のことに注意してください。
-
エディション・ベースの再定義のアプリケーションを作成し、アプリケーションが編集ビューで使用する各表を対象とすることができます。これを行う場合、編集ビューに対してこれらの表を保護するファイングレイン監査ポリシーを移動する必要があります。DBA_EDITIONSデータ・ディクショナリ・ビューを問い合せることで、現在構成されているエディションについて情報を確認できます。ファイングレイン監査ポリシーに関する情報を確認するには、DBA_AUDIT_POLICIESを問い合せます。
-
DBMS_FGAパッケージ・ポリシーを異なる複数のエディションで使用する場合、ポリシーの結果を制御できます。つまり、結果をすべてのエディションで同一にするか、またはポリシーが使用されているエディションに固有にできます。
31.2 ファイングレイン監査ポリシーの作成
DBMS_FGA.ADD_POLICYプロシージャで、ファイングレイン監査ポリシーを作成します。
31.2.1 ファイングレイン監査ポリシーの作成について
DBMS_FGA PL/SQLパッケージを使用して、ファイングレイン監査ポリシーを作成および管理できます。
ファイングレイン監査ポリシーを作成する場合は、次の点を考慮してください:
DBMS_FGAPL/SQLパッケージを使用すると、次の文のすべての組合せを1つのポリシーに追加できます:SELECTINSERTUPDATEDELETE
MERGE文の場合:- 基礎となるアクションの
INSERTおよびUPDATEでファイングレイン・アクセスを構成することで、MERGE文を監査できます。 - 成功した
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という名前の列が含まれ、この列を使用すると、特定のファイングレイン監査ポリシーを使用して生成された行をフィルタできます。
31.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 23ai以降、従来の監査はサポートされないため、audit_trailは無視されます。 -
audit_column_opts:audit_columnパラメータで複数の列を指定した場合は、すべての列を監査するか特定の列を監査するかをこのパラメータで決定します。 -
policy_ownerは、ファイングレイン監査ポリシーを所有するユーザーです。ただし、この設定はユーザー指定の引数ではありません。Oracle Data Pumpクライアントは、この設定を内部で使用して、ファイングレイン監査ポリシーを適宜再作成します。
31.2.3 例: DBMS_FGA.ADD_POLICYを使用してファイングレイン監査ポリシーを作成する方法
DBMS_FGA.ADD_POLICYプロシージャで、複数の文タイプを使用してファイングレイン監査ポリシーを作成できます。
例31-1に、表HR.EMPLOYEESに対する文INSERT、UPDATE、DELETEおよびSELECTを監査する方法を示します。
この例では、audit_column_optsパラメータが必須パラメータではないため省略されていることに注意してください。
例31-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;
31.2.4 特定の列および行の監査
値ベースの監査を実行して、特定の列値に基づく特定行へのアクセスを監査できます。
これを実行するには、DBMS_FGA.ADD_POLICYプロシージャの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,
関連列を指定しない場合、監査はすべての列に適用されます。
31.3 ファイングレイン監査ポリシーの管理
ファイングレイン監査ポリシーの作成後、変更または削除できます。
31.4 例: ファイングレイン監査ポリシーへの電子メール・アラートの追加
このチュートリアルでは、ユーザーがポリシーに違反したときに電子メールのアラートを生成するファイングレイン監査ポリシーの作成方法を示します。
31.4.1 このチュートリアルについて
このチュートリアルでは、ユーザー(または侵入者)がポリシーに違反したときに実施される電子メールのアラートをファイングレイン監査ポリシーに追加する方法を示します。
ノート:
-
このチュートリアルを完了するには、SMTPサーバーのあるデータベースを使用する必要があります。
-
このチュートリアルは、現在のPDBにのみ適用されます。
ファイングレイン監査ポリシーに電子メール・アラートを追加するには、最初にアラートを生成するプロシージャを作成し、次のDBMS_FGA.ADD_POLICYパラメータを使用して、ユーザーがこのポリシーに違反した場合にこのファンクションをコールする必要があります。
-
handler_schema: ハンドラ・イベントが格納されるスキーマ -
handler_module: イベント・ハンドラの名前
アラートは、電子メールまたはポケベルによる通知や、特定のファイルまたは表の更新など、環境に適した形式で生成できます。アラートを作成すると、California Senate Bill 1386などの特定のコンプライアンス規制を満たすことも可能です。この例では、電子メール・アラートを作成します。
この例では、セキュリティ管理者に対して、人事部門の担当者がHR.EMPLOYEES表内の給与情報を選択または変更しようとしていることを通知する電子メール・アラートを作成します。担当者はこの表を変更することを許可されていますが、コンプライアンス規制を満たすために、表内の給与情報に対するすべての選択および変更操作に関するレコードを作成できます。
31.4.2 ステップ1: UTL_MAIL PL/SQLパッケージのインストールおよび構成
UTL_MAIL PL/SQLで、添付、CCおよびBCCなど一般に使用される電子メール機能が組み込まれた電子メールを管理します。
31.4.4 ステップ3: ネットワーク・サービス用のアクセス制御リスト・ファイルの構成
アクセス制御リスト(ACL)ファイルを使用して、外部ネットワーク・サービスへのファイングレイン・アクセスを有効にできます。
UTL_MAILなどのPL/SQLネットワーク・ユーティリティ・パッケージを使用するには、このタイプのアクセス制御リスト(ACL)ファイルを構成する必要があります。
31.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を通知の受信対象者の電子メール・アドレスに置き換えます。
-
31.5 ファイングレイン監査ポリシーのデータ・ディクショナリ・ビュー
データ・ディクショナリ・ビューおよび動的ビューを問い合せると、ファイングレイン監査ポリシーについて詳細な監査情報を確認できます。
表30-20 に、これらのビューを示します。
ヒント:
監査ポリシーに関するエラー情報を検索するには、トレース・ファイルを確認します。USER_DUMP_DEST初期化パラメータは、トレース・ファイルの位置を示します。
表31-1 ファイングレイン監査ポリシーで使用するビュー
| ビュー | 説明 |
|---|---|
|
|
すべてのファイングレイン監査ポリシーに関する情報が表示されます。 |
|
|
オブジェクトの作成時に適用されるデフォルトのオブジェクト監査オプションがリストされます。 |
|
|
監査可能なシステム・アクション番号がアクション名にマップされます。 |
|
|
|
|
|
ファイングレイン監査ポリシーに関する情報が表示されます。 |
|
|
ユーザーによって実行される監査対象のOracle Label Securityイベントが表示され、ユーザーのアクションが成功したか失敗したかが示されます。 |
|
|
権限(監査オプション)型コードが表示されます。この表を使用して、権限(監査オプション)の型番号を型名にマップできます。 |
|
|
現行ユーザーによって所有される表およびビューのすべてのファイングレイン監査ポリシーに関する情報が表示されます。 |
|
|
すべての監査レコードが表示されます。 |
関連トピック