ヘッダーをスキップ
Oracle® Label Security管理者ガイド
11gリリース2 (11.2)
E92085-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

12Oracle Label Securityでの監査

Oracle Database監査機能では、実行する操作に責任を持つデータベース・ユーザーを保持できます。特定のデータベース・オブジェクト、操作、ユーザーおよび権限を追跡できます。Oracle Label Securityはこの機能を補完するために、独自の管理操作とポリシー権限の使用を追跡します。また、ポリシー監査オプションを設定および変更するためのSA_AUDIT_ADMINパッケージも用意されています。

この章では、Oracle Label Securityの監査機能の使用方法について説明します。この章の内容は、次のとおりです。

12.1 Oracle Label Securityの監査の概要

Oracle Label Securityの監査は標準Oracle Database監査を補完するために、独自の管理操作とポリシー権限の使用を追跡します。SA_AUDIT_ADMINパッケージまたはOracle Enterprise Managerを使用して、Oracle Label Securityポリシーの監査オプションを設定および変更できます。

新規ポリシーを作成すると、そのポリシーのラベル列がデータベースの監査証跡に追加されます。ラベル列は、監査機能が有効か無効か、およびデータベースの監査とオペレーティング・システムの監査のどちらを使用するかに関係なく作成されます。監査表にレコードが書き込まれるたびに、各ポリシーはそのレコードについてセッション・ラベルを示すラベルを提供します。管理者は監査ビューを作成し、これらのラベルを表示できます。監査表では、ラベルは行へのアクセスを制御するのではなく、行の機密性を記録するのみであることに注意してください。

指定した監査オプションは、現行セッションではなく後続のセッションにのみ適用されます。監査オプションは、監査が無効化されている場合にも指定できます。このように指定するのみではオーバーヘッドは発生しません。Oracle Label Security監査を有効にすると、オプションが有効になり、標準Oracle Database監査によって作成されたオーバーヘッド以外のオーバーヘッドが生成されます。

Oracle Label Securityでは、オペレーティング・システムの監査証跡に書き込まれる監査データ用のラベルは提供されないことに注意してください。Oracle Label Securityのすべての監査レコードは、オペレーティング・システムの監査が有効化されている場合にも、データベースの監査証跡に直接書き込まれます。監査が無効化されている場合、Oracle Label Securityの監査レコードは生成されません。

12.2 システム単位の監査の有効化: AUDIT_TRAIL初期化パラメータ

Oracle Label Securityで監査レコードを生成するには、最初にデータベースのパラメータ・ファイルでOracle Database AUDIT_TRAIL 初期化パラメータを設定してシステム全体の監査を有効にする必要があります。このパラメータは、次のいずれかの値に設定できます。

表12-1 AUDIT_TRAILパラメータの設定

設定 説明

DB

データベース監査を有効化し、すべての監査レコードをデータベースの監査証跡に送ります。このアプローチを選択するようにお薦めします。

AUDIT_TRAILをDBに設定しても、一部のレコードは常にオペレーティング・システムの監査証跡に送られることに注意してください。これには、STARTUPおよびSHUTDOWN文や、CONNECT AS SYSOPERまたはSYSDBAが含まれます。

DB, EXTENDED

AUDIT_TRAIL=DBに設定した場合のアクションをすべて実行し、AUD$表のSqlBindおよびSqlText CLOB型の列を移入します。

OS

オペレーティング・システムの監査を有効化します。これにより、ほとんどのOracle Database監査レコードがデータベースではなくオペレーティング・システムに送られます。レコードには、Oracle Label Securityラベルは含まれません。これに対して、Oracle Label Securityの監査はすべてラベルとともにデータベースに送られます。

AUDIT_TRAILをOSに設定した場合、Oracle Label Security固有の監査レコードはデータベース監査証跡に書き込まれ、他のOracle Database監査レコードはオペレーティング・システム監査証跡(オペレーティング・システム・データにポリシー列はありません)に書き込まれます。

NONE

監査を無効化します。これはデフォルトです。


パラメータ・ファイルの編集後に、データベース・インスタンスを再起動して、指定したデータベースの監査を有効化または無効化します。

監査オプションを設定する前に、AUDIT_TRAILパラメータを設定してください。このパラメータを設定しなくても、監査オプションは設定できます。ただし、このパラメータを設定してデータベース・インスタンスを再起動するまで、監査レコードはデータベースに書き込まれません。


関連項目:

システム単位の監査の有効化と無効化、監査オプションの設定および監査証跡の管理の詳細は、『Oracle Database管理者ガイド』を参照してください。

初期化パラメータの編集方法は、『Oracle Databaseリファレンス』を参照してください。

システム単位のAUDITおよびNOAUDITの機能の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。


12.3 SA_AUDIT_ADMINを使用したOracle Label Securityの監査の有効化

システム単位の監査を有効化した後に、SA_AUDIT_ADMINプロシージャを使用してOracle Label Securityの監査を有効化または無効化できます。Oracle Label Securityの監査を使用するには、policy_typeロールが必要です。

12.3.1 Oracle Label Securityの監査オプション

AUDITおよびNOAUDITオプションは、次のとおりです。

表12-2 Oracle Label Securityの監査オプション

オプション 説明

APPLY

表およびスキーマに対する指定したOracle Label Securityポリシーの適用を監査します。

REMOVE

表およびスキーマからの指定したOracle Label Securityポリシーの削除を監査します。

SET

ユーザー認証およびユーザーとプログラムの権限の設定を監査します。

PRIVILEGES

ポリシー固有のすべての権限の使用を監査します。


12.3.2 SA_AUDIT_ADMIN.AUDITを使用したOracle Label Securityの監査の有効化

AUDITプロシージャを使用して、ポリシー固有の監査を有効化します。

構文:

PROCEDURE AUDIT (
     policy_name     IN VARCHAR2,
     users           IN VARCHAR2 DEFAULT NULL,
     option          IN VARCHAR2 DEFAULT NULL,
     type            IN VARCHAR2 DEFAULT NULL,
     success         IN VARCHAR2 DEFAULT NULL);
パラメータ 説明 デフォルト動作
policy_name 必須。既存のポリシーの名前を指定します。各ポリシーの監査は、他のすべてから独立しています。 なし
users オプション。監査するユーザー名のカンマ区切りのリストです。指定しない場合は、すべてのユーザーが監査対象となります。 すべてのユーザー
option オプション。監査するオプションのカンマ区切りのリストです。表12-1を参照してください。

指定しない場合、すべてのデフォルト・オプション(つまり権限を含まないオプション)が監査されます。すべての権限の監査オプションを設定するPRIVILEGESオプションを指定して、権限付き操作の監査オプションを明示的に設定する必要があります。

すべてのオプション
type オプション。BY ACCESSまたはBY SESSIONを指定します。指定しない場合は、監査レコードはセッション別に書き込まれます。 BY SESSION
success オプション。SUCCESSFULまたはNOT SUCCESSFULを指定します。指定しない場合は、両方の監査が書き込まれます。 SUCCESSFULおよびNOT SUCCESSFUL

管理者が監査オプションを指定しない場合は、権限関連のオプションを除き、すべてのオプションが監査されます。権限の監査は明示的に指定する必要があります。たとえば、管理者が次のように入力すると、

SA_AUDIT_ADMIN.AUDIT ('HR');

HRポリシーについてデフォルトの監査オプションが設定されます。管理者が監査を有効化すると、成否に関係なく、すべてのユーザーについてセッション別に実行されます。

監査パラメータおよびオプションを設定すると、新しい値は現行セッションではなく後続のセッションにのみ適用されます。

あるAUDITコール(ユーザー指定なし)で全ユーザーについてAPPLY操作の監査を有効化し、2番目のコールで特定のユーザーについてREMOVE操作の監査を有効化する場合を考えます。次に例を示します。

SA_AUDIT_ADMIN.AUDIT ('HR', NULL, 'APPLY');
SA_AUDIT_ADMIN.AUDIT ('HR', 'SCOTT', 'REMOVE');

この場合、SCOTTはAPPLY操作とREMOVE操作の両方について監査対象となります。

12.3.3 SA_AUDIT_ADMIN.NOAUDITを使用したOracle Label Securityの監査の無効化

ポリシー固有の監査を無効化するには、SA_AUDIT_ADMIN.NOAUDITプロシージャを使用します。

構文:

PROCEDURE NOAUDIT (
     policy_name     IN VARCHAR2,
     users           IN VARCHAR2 DEFAULT NULL,
     option          IN VARCHAR2 DEFAULT NULL);
パラメータ 説明 デフォルト動作
policy_name 必須。既存のポリシーの名前を指定します。 なし
users オプション。監査するユーザー名のカンマ区切りのリストです。指定しない場合は、すべてのユーザーの監査が無効化されます。 すべてのユーザー
option オプション。無効化するオプションのカンマ区切りのリストです。表12-2を参照してください。指定しない場合、すべてのデフォルト・オプションが無効化されます。権限は明示的に無効化する必要があります。 すべてのオプション

有効化されているすべてのオプション、またはそのサブセットのみについて監査を無効化できます。指定したオプションに対するすべての監査が、指定した全ユーザー(または、usersパラメータがNULLの場合は全ユーザー)について無効化されます。たとえば、次の文では、ユーザーJohn、MaryおよびScottについて、APPLYおよびREMOVE操作の監査が無効化されます。

SA_AUDIT_ADMIN.NOAUDIT ('HR', 'JOHN, MARY, SCOTT', 'APPLY, REMOVE');

あるAUDITコールで特定のユーザーの監査を有効化し、2番目のコール(ユーザー指定なし)で全ユーザーの監査を有効化する場合を考えます。次に例を示します。

SA_AUDIT_ADMIN.AUDIT ('HR', 'SCOTT');
SA_AUDIT_ADMIN.AUDIT ('HR');

この場合、ユーザーを指定せずに以降にNOAUDITを(次のように)コールすると、

SA_AUDIT_ADMIN.NOAUDIT ('HR');

最初のコールでSCOTTについて明示的に設定した監査は無効化されません。したがって、SCOTTの監査は引き続き実行されます。このため、すべてのユーザーに対してNOAUDITを設定しても、Oracle Label Securityでは監査が明示的に設定されているユーザーは引き続き監査されます。

権限付き操作の監査は明示的に指定する必要があります。オプションを指定せずにNOAUDITを実行しても、Oracle Label Securityでは権限付き操作が引き続き監査されます。たとえば、監査を有効にして次のように入力すると、

SA_AUDIT_ADMIN.NOAUDIT ('HR');

権限付き操作(WRITEDOWNなど)については引き続き監査が実行されます。

設定したNOAUDITパラメータおよびオプションは、現行セッションではなく後続のセッションにのみ適用されます。

設定済の監査オプションの有効化を試みたり、設定されていない監査オプションの無効化を試みると、Oracle Label Securityでは文は処理され、エラーは表示されません。無効なオプションの指定を試みると、エラー・メッセージが表示されます。

12.3.4 DBA_SA_AUDIT_OPTIONSビューを使用した監査オプションの検査

この項では、Oracle Label Securityの監査オプションおよび権限を表示するビューについて説明します。

DBA_SA_AUDIT_OPTIONSビューには、次の列が表示されます。

表12-3 DBA_SA_AUDIT_OPTIONSビューの列

名前 NULL

POLICY_NAME

NOT NULL

VARCHAR2(30)

USER_NAME

NOT NULL

VARCHAR2(30)

APY


VARCHAR2(3)

REM


VARCHAR2(3)

SET_


VARCHAR2(3)

PRV


VARCHAR2(30)


出力は次のようになります。

表12-4 DBA_SA_AUDIT_OPTIONSのサンプル出力

POLICY_NAME USER_NAME APY REM SET PRV

HR

SCOTT

-/-

-/-

-/-

A/A

HR

LBACSYS

S/S

S/S

S/S

-/-



関連項目:

『Oracle Databaseセキュリティ・ガイド』の第11章

12.4 ポリシー・ラベルの監査の管理

この項では、ポリシー・ラベルの監査の管理に使用できるプロシージャについて説明します。

12.4.1 SA_AUDIT_ADMIN.AUDIT_LABELを使用したポリシー・ラベルの監査

AUDIT_LABELプロシージャを使用して、監査中にポリシー・ラベルを記録します。これにより、ユーザーのセッション・ラベルが監査表に格納されます。

構文:

PROCEDURE AUDIT_LABEL (
     policy_name     IN VARCHAR2);
パラメータ 説明 デフォルト
policy_name 必須。既存のポリシーの名前を指定します。 なし

12.4.2 SA_AUDIT_ADMIN.NOAUDIT_LABELを使用したポリシー・ラベルの監査の無効化

NOAUDIT_LABELプロシージャを使用して、ポリシー・ラベルの監査を無効化します。

構文:

PROCEDURE NOAUDIT_LABEL (
     policy_name     IN VARCHAR2);
パラメータ 説明 デフォルト
policy_name 必須。既存のポリシーの名前を指定します。 なし

12.4.3 AUDIT_LABEL_ENABLEDを使用したラベルの監査ステータスの検索

AUDIT_LABEL_ENABLEDファンクションを使用して、ラベルがポリシーの監査レコードに記録されているかどうかを確認します。

構文:

FUNCTION AUDIT_LABEL_ENABLED (policy_name IN VARCHAR2)
     RETURN boolean;

12.5 Oracle Label Security用の監査証跡ビューの作成および削除

この項には、次の項目が含まれます。

12.5.1 SA_AUDIT_ADMIN.CREATE_VIEWを使用したビューの作成

CREATE_VIEWプロシージャは、DBA_policyname_AUDIT_TRAILという名前の監査証跡ビューを作成します。これには、指定したポリシーのラベル列、およびこのポリシーのかわりに書き込まれた監査証跡内のすべてのエントリが含まれます。ビュー名がデータベースの制限である30文字を超えた場合、ユーザーはオプションで短いビュー名を指定できます。

構文(2つのうち一方):

  1. パラメータが1つのプロシージャ

    PROCEDURE CREATE_VIEW (
         policy_name     IN VARCHAR2);
    

    policy_nameでは既存のポリシーの名前を指定します。

    または

  2. パラメータが2つのプロシージャ

    PROCEDURE CREATE_VIEW (
         policy_name     IN VARCHAR2,
         view_name       IN VARCHAR2    DEFAULT NULL);
    

    policy_nameでは既存のポリシーの名前を指定します。view_nameはオプションのパラメータで、必要なビュー名を14文字以内で指定します。

12.5.2 SA_AUDIT_ADMIN.DROP_VIEWを使用したビューの削除

DROP_VIEWプロシージャでは、指定したポリシーの監査証跡ビューを削除します。

構文(2つのうち一方):

  1. パラメータが1つのプロシージャ

    PROCEDURE DROP_VIEW (
         policy_name     IN VARCHAR2);
    

    policy_nameでは既存のポリシーの名前を指定します。

    または

  2. パラメータが2つのプロシージャ

    PROCEDURE DROP_VIEW (
         policy_name     IN VARCHAR2,
         view_name       IN VARCHAR2    DEFAULT NULL);
    

    policy_nameでは既存のポリシーの名前を指定します。view_nameはオプションのパラメータで、既存のビューの名前を14文字以内で指定します。


注意:

リリース10iまでは監査ビューの作成にSA_AUDIT_ADMIN.CREATE_VIEWを使用していましたが、そのビューにはリリース10iの監査レコードのタイムスタンプ・フィールドは表示されません。Oracle Label Securityでは、リリース10iより前のOracle Label Securityのすべての監査ビューを削除し、SA_AUDIT_ADMIN.DROP_VIEWおよびSA_AUDIT_ADMIN.CREATE_VIEWを使用して再作成することをお薦めします。

12.6 Oracle Label Securityの監査のヒント

この項には、次の項目が含まれます。

12.6.1 SA_AUDIT_ADMINオプションの設定方針

監査オプションを設定する前に、必要以上のイベントを記録せずに問題のイベントを監視するように、監査方針を検討する必要があります。アプリケーション、ユーザー・ベース、構成および他の外部要因が変化することがあるため、この方針は定期的に見直してください。

Oracle Label Securityオプション、およびOracle Database監査機能によって提供されたオプションは、特定の監査要件またはアプリケーションに依存する監査要件のすべてに直接には対処しないことがあります。ただし、データベース・トリガーを使用すると、より汎用的な監査機能では監査したり記録できない特定のイベントを監査し、特定の情報を記録できます。


関連項目:

監査にトリガーを使用する方法の詳細は、『Oracle Database概要』を参照してください。

12.6.2 権限付き操作の監査

Oracle Label Securityの権限を必要とする操作を監査する場合を考えます。これらの権限では機密性の高い操作が実行され、適正に使用されなければセキュリティを侵害する可能性があるため、表示と使用を厳密に監視する必要があります。