Oracle Database監査機能では、実行する操作に責任を持つデータベース・ユーザーを保持できます。特定のデータベース・オブジェクト、操作、ユーザーおよび権限を追跡できます。Oracle Label Securityはこの機能を補完するために、独自の管理操作とポリシー権限の使用を追跡します。また、ポリシー監査オプションを設定および変更するためのSA_AUDIT_ADMINパッケージも用意されています。
この章では、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の監査レコードは生成されません。
Oracle Label Securityで監査レコードを生成するには、最初にデータベースのパラメータ・ファイルでOracle Database AUDIT_TRAIL 初期化パラメータを設定してシステム全体の監査を有効にする必要があります。このパラメータは、次のいずれかの値に設定できます。
表12-1 AUDIT_TRAILパラメータの設定
パラメータ・ファイルの編集後に、データベース・インスタンスを再起動して、指定したデータベースの監査を有効化または無効化します。
監査オプションを設定する前に、AUDIT_TRAILパラメータを設定してください。このパラメータを設定しなくても、監査オプションは設定できます。ただし、このパラメータを設定してデータベース・インスタンスを再起動するまで、監査レコードはデータベースに書き込まれません。
関連項目: システム単位の監査の有効化と無効化、監査オプションの設定および監査証跡の管理の詳細は、『Oracle Database管理者ガイド』を参照してください。初期化パラメータの編集方法は、『Oracle Databaseリファレンス』を参照してください。 システム単位のAUDITおよびNOAUDITの機能の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 |
システム単位の監査を有効化した後に、SA_AUDIT_ADMINプロシージャを使用してOracle Label Securityの監査を有効化または無効化できます。Oracle Label Securityの監査を使用するには、policy_typeロールが必要です。
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操作の両方について監査対象となります。
ポリシー固有の監査を無効化するには、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では文は処理され、エラーは表示されません。無効なオプションの指定を試みると、エラー・メッセージが表示されます。
この項では、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章 |
この項では、ポリシー・ラベルの監査の管理に使用できるプロシージャについて説明します。
AUDIT_LABELプロシージャを使用して、監査中にポリシー・ラベルを記録します。これにより、ユーザーのセッション・ラベルが監査表に格納されます。
構文:
PROCEDURE AUDIT_LABEL ( policy_name IN VARCHAR2);
パラメータ | 説明 | デフォルト |
---|---|---|
policy_name | 必須。既存のポリシーの名前を指定します。 | なし |
NOAUDIT_LABELプロシージャを使用して、ポリシー・ラベルの監査を無効化します。
構文:
PROCEDURE NOAUDIT_LABEL ( policy_name IN VARCHAR2);
パラメータ | 説明 | デフォルト |
---|---|---|
policy_name | 必須。既存のポリシーの名前を指定します。 | なし |
この項には、次の項目が含まれます。
CREATE_VIEWプロシージャは、DBA_policyname_AUDIT_TRAILという名前の監査証跡ビューを作成します。これには、指定したポリシーのラベル列、およびこのポリシーのかわりに書き込まれた監査証跡内のすべてのエントリが含まれます。ビュー名がデータベースの制限である30文字を超えた場合、ユーザーはオプションで短いビュー名を指定できます。
構文(2つのうち一方):
パラメータが1つのプロシージャ
PROCEDURE CREATE_VIEW ( policy_name IN VARCHAR2);
policy_nameでは既存のポリシーの名前を指定します。
または
パラメータが2つのプロシージャ
PROCEDURE CREATE_VIEW ( policy_name IN VARCHAR2, view_name IN VARCHAR2 DEFAULT NULL);
policy_nameでは既存のポリシーの名前を指定します。view_nameはオプションのパラメータで、必要なビュー名を14文字以内で指定します。
DROP_VIEWプロシージャでは、指定したポリシーの監査証跡ビューを削除します。
構文(2つのうち一方):
パラメータが1つのプロシージャ
PROCEDURE DROP_VIEW ( policy_name IN VARCHAR2);
policy_nameでは既存のポリシーの名前を指定します。
または
パラメータが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を使用して再作成することをお薦めします。 |
この項には、次の項目が含まれます。
監査オプションを設定する前に、必要以上のイベントを記録せずに問題のイベントを監視するように、監査方針を検討する必要があります。アプリケーション、ユーザー・ベース、構成および他の外部要因が変化することがあるため、この方針は定期的に見直してください。
Oracle Label Securityオプション、およびOracle Database監査機能によって提供されたオプションは、特定の監査要件またはアプリケーションに依存する監査要件のすべてに直接には対処しないことがあります。ただし、データベース・トリガーを使用すると、より汎用的な監査機能では監査したり記録できない特定のイベントを監査し、特定の情報を記録できます。
関連項目: 監査にトリガーを使用する方法の詳細は、『Oracle Database概要』を参照してください。 |
Oracle Label Securityの権限を必要とする操作を監査する場合を考えます。これらの権限では機密性の高い操作が実行され、適正に使用されなければセキュリティを侵害する可能性があるため、表示と使用を厳密に監視する必要があります。