この付録の内容は次のとおりです。
この項の内容は次のとおりです。
Oracle Database Vaultデータベース・インスタンスのトレース・ファイルを有効化および確認して、Oracle Database Vaultのデータベース・インスタンスで、サーバーやバックグラウンド・プロセスのイベントを監視することができます。トレース・ファイルを見れば、Oracle Database Vaultのポリシー認可が成功したか失敗したかを確認できます。バグおよびその他の問題が発生したとき、その解決に有効な情報を得ることができます。
Oracle Database Vaultのトレースを設定するには、DV_ADMIN
ロールが必要です。この構成を実行するには、ALTER SESSION SET EVENTS
またはALTER SYSTEM SET EVENTS
というSQL文を使用します。
関連項目: トレース・ファイルの管理の詳細は、『Oracle Database管理者ガイド』を参照してください |
表E-1に、トレース・ファイルで追跡できるアクティビティのタイプを示します。
表E-1 Oracle Database Vaultトレース・ファイルの内容
Database Vaultの機能 | 説明 |
---|---|
レルムの認可 |
このトレース・ファイルは、ロールに対するルール・セットとレルム認可を使用して、レルム認可の各ケースを追跡します。このタイプのトレース・ファイルの詳細は、「Oracle Database Vaultトレース・ファイルの例」を参照してください。 |
ルール・セットの評価 |
このトレース・ファイルには、レルム認可、コマンド・ルールのCONNECTコマンド・ルール、およびファクタからのルール・セット評価に関する情報が含まれます。 |
Oracle Data Pumpの認可 |
このトレース・ファイルには、Database VaultのData Pumpの認可結果と、ユーザー、オブジェクト、SQLテキストに関するその他の情報が含まれます。 |
Oracle Schedulerジョブの認可 |
このトレース・ファイルには、Database VaultのOracle Schedulerジョブの認可結果、ジョブ名、ジョブ所有者、現在の文などが含まれます。 |
オブジェクト権限のバイパス |
このトレース・ファイルは、直接の権限付与と、ロールを介した権限付与の両方を追跡します。このタイプのトレースは、必須レルムが有効になっておらず、オブジェクト権限を持つユーザーがレルム保護されたオブジェクトにアクセスできる場合に役に立ちます。 |
ファクタのロード |
このトレース・ファイルは、ロードされた各ファクタの式と値を追跡します。 |
その他 |
オブジェクト所有者がバイパスしたレルム保護や、Database Vaultで失敗した操作、成功した操作 |
Oracle Database Vaultで使用できるトレース・イベントのレベルは、次のとおりです。
低: Oracle Database Vaultで失敗したすべての認可に関する情報をトレース・ファイルに出力します。このタイプのトレース・ファイルには、レルム認可の失敗、ファクタのロードの失敗、ルール・セット評価の失敗などが記録されます。Oracleデータベースのパフォーマンスに対する影響は小さくなります。
高: 認可の成功と失敗の両方を含むトレース・レコードを出力します。このタイプのトレースは、すべての認可を追跡するので、低レベルのトレースよりオーバーヘッドが大きくなります。また、トレース・ファイルのサイズも通常は大きくなります。
最高: PL/SQLスタックとファンクション・コール・スタック、および高レベルでトレースされる内容(表E-1を参照)をトレース・ファイルに出力します。Oracleデータベースのパフォーマンスに対する影響は最も大きくなります。
トレース・ファイルの有効化には注意してください。有効化により、データベース・インスタンス操作のオーバーヘッドが増加し、パフォーマンスが低下する可能性があります。
DV_ADMIN
ロールおよびALTER SESSION
システム権限を付与されているユーザーとして、データベース・インスタンスにログインします。
次に例を示します。
sqlplus lbrown_dvowner
Enter password: password
Connected.
ALTER SESSION SET EVENTS
SQL文を入力してトレースを低に設定します。「Oracle Database Vaultトレース・イベントのレベル」を参照してください。
影響が小さい操作の失敗に対してトレースを有効にするには、次のいずれかの文を入力します。
ALTER SESSION SET EVENTS 'TRACE[DV] DISK=LOW'; ALTER SESSION SET EVENTS '47998 TRACE NAME CONTEXT FOREVER, LEVEL 1';
影響が大きい操作の失敗と成功に対してトレースを有効にするには、次のいずれかの文を入力します。
ALTER SESSION SET EVENTS 'TRACE[DV] DISK=HIGH'; ALTER SESSION SET EVENTS '47998 TRACE NAME CONTEXT FOREVER, LEVEL 3';
最も影響が大きいファンクションとPL/SQLコール・スタックを使用する操作の失敗と成功に対してトレースを有効にするには、次のいずれかの文を入力します。
ALTER SESSION SET EVENTS 'TRACE[DV] DISK=HIGHEST'; ALTER SESSION SET EVENTS '47998 TRACE NAME CONTEXT FOREVER, LEVEL 4';
DV_ADMIN
ロールおよびALTER SYSTEM
システム権限を付与されているユーザーとして、データベース・インスタンスにログインします。
次に例を示します。
sqlplus lbrown_dvowner
Enter password: password
Connected.
「現在のデータベース・セッションに対するトレース・イベントの有効化」
の手順2に示されている構文を使用して、ALTER SYSTEM SET EVENTS SQL文を入力します。
次に例を示します。
ALTER SYSTEM SET EVENTS 'TRACE[DV] DISK=LOW';
データベースを再起動します。
次に例を示します。
SHUTDOWN IMMEDIATE STARTUP
すべてのデータベース・セッションに対してトレース・イベントを有効にするには、init.ora
ファイルに次の行を追加してデータベースを再起動する方法もあります。
event="47998 trace name context forever, level [trace_level]"
trace_level
を、次のいずれかの値に置き換えます。
1
: 最低レベルのトレース
3
: 高レベルのトレース
4
: 最高レベルのトレース
次に例を示します。
event="47998 trace name context forever, level [1]"
この項の内容は次のとおりです。
トレース・ファイルのディレクトリの完全な場所は、V$DIAG_INFO
動的ビューを問い合せて検索することができます。
次に例を示します。
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File'; VALUE -------------------------------------------------------------------------------- /u01/app/oracle/product/11.2.0.4/log/diag/rdbms/orcl/orcl/trace/orcl_ora_7174.trc
トレース・ファイルの問合せ、または処理を行うとき、Linuxのgrep
コマンドを使用して文字列を検索することができます。たとえば、レルム認可の失敗を表示するトレース・ファイルを検索するには、次のコマンドを入力します。
grep 'Result=Realm Authorization Failed' *.trc
トレース・ファイルを問い合せるには、ADRコマンド・インタプリタ(ADRCI
)というコマンドライン・ユーティリティを使用する方法もあります。たとえば、ADRCI
を使用してトレース・ファイルを検索するには、SHOW TRACEFILE
コマンドを入力します。
adrci --To start ACRCI from the command line
adrci> show tracefile
diag/rdbms/orcl/orcl/trace/orcl_m002_14551.trc
diag/rdbms/orcl/orcl/trace/orcl_tmon_13450.trc
diag/rdbms/orcl/orcl/trace/orcl_vktm_963.trc
diag/rdbms/orcl/orcl/trace/alert_orcl.log
...
すべてのトレース・インシデントの数を検索するには、次のようにします。
adrci> show incident ADR Home = /u01/app/oracle/product/11.2.0.4/log/diag/rdbms/orcl/orcl: ************************************************************************* 234 rows fetched
次のADRCI
コマンドは、名前にora
という語が含まれているすべてのトレース・ファイルのリストを返します。
adrci> show tracefile %ora% /u01/app/oracle/product/11.2.0.4/log/diag/rdbms/orcl/orcl/trace/orcl_ora_18841.trc /u01/app/oracle/product/11.2.0.4/log/diag/rdbms/orcl/orcl/trace/orcl_ora_12017.trc /u01/app/oracle/product/11.2.0.4/log/diag/rdbms/orcl/orcl/trace/orcl_ora_19372.trc /u01/app/oracle/product/11.2.0.4/log/diag/rdbms/orcl/orcl/trace/orcl_ora_12221.trc /u01/app/oracle/product/11.2.0.4/log/diag/rdbms/orcl/orcl/trace/orcl_ora_1600.trc ...
次のADRCI
コマンドは、Realm Authorization Failed
というフレーズを含むトレース・ファイルを検索します。
adrci> show trace %trc -xp "[payload like '%Realm Authorization Failed%']"
関連項目:
|
この項では、低、高、最高の3つのレベルすべてについてトレース・ファイルの例を示します。
例E-1は、低レベルのレルム違反を示すトレース・ファイル・データです。
例E-1 低レベルのOracle Database Vaultレルム違反を示すトレース・ファイル
*** 2010-02-05 18:35:31.438 *** SESSION ID:(34.559) 2010-02-05 18:35:31.438 *** CLIENT ID:() 2010-02-05 18:35:31.438 *** SERVICE NAME:(SYS$USERS) 2010-02-05 18:35:31.438 *** MODULE NAME:(SQL*Plus) 2010-02-05 18:35:31.438 *** ACTION NAME:() 2010-02-05 18:35:31.438 Result=Realm Authorization Failed Realm_Name=realm 3 Required_Auth_Level=0 Current_User=116 Object_Owner=U1 Object_Name=T1 Object_Type=TABLE SQL_Text=INSERT INTO U1.T1 VALUES(30) Result=Realm Authorization Failed Realm_Name=realm 3 Required_Auth_Level=0 Current_User=116 Object_Owner=U1 Object_Name=T1 Object_Type=TABLE SQL_Text=DELETE FROM U1.T1 Result=Realm Authorization Failed Realm_Name=realm 3 Required_Auth_Level=0 Current_User=116 Object_Owner=U1 Object_Name=T3 Object_Type=TABLE SQL_Text=CREATE TABLE U1.T3(C INT) *** 2010-02-05 18:35:34.465 Result=Realm Authorization Failed Realm_Name=realm 3 Required_Auth_Level=0 Current_User=116 Object_Owner=U1 Object_Name=T1 Object_Type=TABLE SQL_Text=INSERT INTO U1.T1 VALUES(30) Result=Realm Authorization Failed Realm_Name=realm 3 Required_Auth_Level=0 Current_User=116 Object_Owner=U1 Object_Name=T1 Object_Type=TABLE SQL_Text=DELETE FROM U1.T1
例E-2は、高レベルのトレースを有効にしたときのトレース・ファイルで示されたDatabase Vault権限です。
例E-2 高レベルのトレースを有効にしたOracle Database Vault権限
Result= Realm Authorization Passed Reason=Current user is the object owner Current_User=70 Command=SELECT Object_Owner=LBACSYS Object_Name=LBAC$AUDIT Object_Type=TABLE Result= Realm Authorization Passed Reason=Current user is the object owner Current_User=70 Command=SELECT Object_Owner=LBACSYS Object_Name=LBAC$AUDIT Object_Type=TABLE Result= Realm Authorization Passed Reason=Current user is the object owner Current_User=70 Command=SELECT Object_Owner=LBACSYS Object_Name=LBAC$POL Object_Type=TABLE Result= Realm Authorization Passed Reason=Current user is the object owner Current_User=70 Command=SELECT Object_Owner=LBACSYS Object_Name=LBAC$USER_LOGON Object_Type=VIEW …… Result= Realm Authorization Passed Reason=Current user is the object owner Current_User=70 Command=SELECT Object_Owner=LBACSYS Object_Name=LBAC$POL Object_Type=TABLE Result=Set Factor Value Factor_Name=Sensitive_Treatments Factor_Expression=/SURGERY/PSYCHOLOGICAL Result=Set Factor Value Factor_Name=Database_Instance Factor_Expression=UPPER(SYS_CONTEXT('USERENV','INSTANCE')) Factor_Value=1 Result=Set Factor Value Factor_Name=Client_IP Factor_Expression=UPPER(SYS_CONTEXT('USERENV','IP_ADDRESS')) Factor_Value= Result=Set Factor Value Factor_Name=Authentication_Method Factor_Expression=UPPER(SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD')) Factor_Value=PASSWORD …… *** ACTION NAME:() 2010-02-05 18:47:19.540 Result=Rule Set Evaluation Failed Command=SELECT RuleSet_ID=2 RuleSet_Name=Disabled Current_User=SYSTEM Object_Owner=U1 Object_Name=T1 Object_Type=TABLE SQL_Text=SELECT * FROM U1.T1 Result=Rule Set Evaluation Succeeded Command=SELECT RuleSet_ID=1 RuleSet_Name=Enabled Current_User=SYSTEM Object_Owner=U1 Object_Name=T1 Object_Type=TABLE SQL_Text=SELECT * FROM U1.T1
例E-3では、最高レベルのトレースを有効にしたときのトレース・ファイルでOracle Schedulerのジョブ認可に関連する最高レベルの違反が示されています。
例E-3 レルム保護されたオブジェクトに対する違反の最高レベルのトレース
------ Call Stack Trace ------ kzvdvechk<-kzvdveqau<-kksfbc<-opiexe<-kpoal8<-opiodr<-ttcpip<-opitsk<-opiino<-opiodr<-opidrv<-sou2o<-opimai_real<-ssthrdmain<-main<-__libc_start_main<-_start Result=Object Privilege check passed Current_User=INVOKER2 Used_Role=1 Object_Owner=SYSTEM Object_Name=PRODUCT_PRIVS Object_Type=VIEW SQL_Text=SELECT CHAR_VALUE FROM SYSTEM.PRODUCT_PRIVS WHERE (UPPER('SQL*PLUS') LIKE UPPER(PRODUCT)) AND ((USER LIKE USERID) OR (USERID = 'PUBLIC')) AND (UPPER(ATTRIBUTE) = 'ROLES') *** MODULE NAME:(SQL*Plus) 2010-02-05 18:57:53.973 *** ACTION NAME:() 2010-02-05 18:57:53.973 ----- Current SQL Statement for this session (sql_id=2sr63rjm45yfh) ----- UPDATE INVOKER1.T1 SET A = 20 ----- PL/SQL Stack ----- ----- PL/SQL Call Stack ----- object line object handle number name 0x26a00e34 1 anonymous block 0x2495b000 185 package body SYS.DBMS_ISCHED 0x24958fb8 486 package body SYS.DBMS_SCHEDULER 0x247bbb34 1 anonymous block ------ Call Stack Trace ------ kzvdvechk<-kzvdveqau<-kksfbc<-opiexe<-opipls<-opiodr<-__PGOSF151_rpidrus<-skgmstack<-rpidru<-rpiswu2<-rpidrv<-psddr0<-psdnal<-pevm_EXECC<-pfrinstr_EXECC<-pfrrun_no_tool<-pfrrun<-plsql_run<-peicnt<-kkxexe<-opiexe<-kpoal8<-opiodr<-kpoodr<-upirtrc<-kpurcsc<-kpuexec <-OCIStmtExecute<-jslvec_execcb<-jslvswu<-jslve_execute0<-jskaJobRun<-jsiRunJob<-jsaRunJob<-spefcmpa<-spefmccallstd<-pextproc<-__PGOSF495_peftrusted<-__PGOSF522_psdexsp<-rpiswu2<-psdextp<-pefccal<-pefcal<-pevm_FCAL<-pfrinstr_FCAL<-pfrrun_no_tool<-pfrrun<-plsql_run <-peicnt<-kkxexe<-opiexe<-kpoal8<-opiodr<-ttcpip<-opitsk<-opiino<-opiodr<-opidrv<-sou2o<-opimai_real<-ssthrdmain<-main<-__libc_start_main<-_start Result=Realm Authorization Succeeded Realm_Name=jobowner realm Used_Auth_Level=0 Current_User=119 Object_Owner=INVOKER1 Object_Name=T1 Object_Type=TABLE SQL_Text=UPDATE INVOKER1.T1 SET A = 20 Result=Scheduler Job Authorization Succeeded Current_User=JOBOWNER Logon_User=INVOKER2 Job_Owner=JOBOWNER Job_Name=DMLJOB1 Object_Owner=INVOKER1 Object_Name=T1 Object_Type=TABLE SQL_Text=UPDATE INVOKER1.T1 SET A = 20
この項の内容は次のとおりです。
DV_ADMIN
ロールおよびALTER SESSION
システム権限を付与されているユーザーとして、データベース・インスタンスにログインします。
次に例を示します。
sqlplus lbrown_dvowner
Enter password: password
Connected.
トレースを無効にするには、次のSQL文の両方を入力します。
ALTER SESSION SET EVENTS 'TRACE[DV] OFF'; ALTER SESSION SET EVENTS '47998 trace name context off';
あるいは、ALTER SYSTEM
文を使用する方法もあります。
ALTER SYSTEM SET EVENTS 'TRACE[DV] OFF'; ALTER SYSTEM SET EVENTS '47998 trace name context off';
DV_ADMIN
ロールおよびALTER SYSTEM
システム権限を付与されているユーザーとして、データベース・インスタンスにログインします。
次に例を示します。
sqlplus lbrown_dvowner
Enter password: password
Connected.
「現在のデータベース・セッションに対するトレース・イベントの無効化」
の手順2に示されている構文を使用して、ALTER SYSTEM SET EVENTS SQL文を入力します。
次に例を示します。
ALTER SYSTEM SET EVENTS 'TRACE[DV] OFF';
データベースを再起動します。
次に例を示します。
SHUTDOWN IMMEDIATE STARTUP
すべてのデータベース・セッションに対してトレース・イベントを無効にするには、init.ora
ファイルに次の行を追加してデータベースを再起動する方法もあります。
event="47998 trace name context off"
init.ora
ファイルで、47998
行目との競合がないようにしてください。event="47998 trace name context forever, level [1]"
などです。
レルム、ファクタおよびルール・セットの問題を診断するには、次の一般的なヒントに従ってください。
レルム保護の場合、コマンドに作用する基礎となるシステム権限またはオブジェクト権限をユーザーが保持している(直接またはロールを介して付与されている)ことを確認します。
ファクタおよびルール・セットで使用されるPL/SQL式の場合、これらの式で使用されるPL/SQLパッケージ・ファンクションに対するEXECUTE
権限をアカウントに直接付与し、結果が正しいと思われるかどうかを判断します。
一般に、監査レポートを使用して問題を診断します。詳細は、「Oracle Database Vaultの監査レポート」を参照してください。
レルム、コマンド・ルール、ファクタ、ルール・セットまたはセキュア・アプリケーション・ロールの構成にかかわる問題が疑われる場合、適切な構成レポートを実行できます。詳細は、次の各項を参照してください。
これらのレポートの実行方法は、「Oracle Database Vaultレポートの実行方法」を参照してください。