トレース・ファイルなどのツールを使用したり、特定のOracle Database Vaultレポートを確認したりして、Oracle Database Vaultのトラブルシューティングを行うことができます。
内容は次のとおりです。
データベースが生成するトレース・ファイルは、エラーのデバッグを助けとなる重要な情報を収集します。
内容は次のとおりです。
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管理者ガイド』を参照してください
トレース・ファイルを使用して、様々なOracle Database Vaultアクティビティを追跡できます。
表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データベースのパフォーマンスに対する影響は最も大きくなります。
トレース・ファイルの有効化には注意してください。
有効化により、データベース・インスタンス操作のオーバーヘッドが増加し、パフォーマンスが低下する可能性があります。
ALTER SESSION
またはALTER SYSTEM
SQL文を使用して、Oracle Database Vaultトレース・イベントを有効化できます。
内容は次のとおりです。
ALTER SESSION SET EVENTS
SQL文を使用して、現在のデータベース・セッションのトレース・イベントを有効化できます。
ALTER SYSTEM SET EVENTS
SQL文を使用して、現在のデータベース・セッションのDatabase Vaultトレース・イベントを有効化できます。
すべてのデータベース・セッションに対してトレース・イベントを有効にするには、init.ora
ファイルに次の行を追加してデータベースを再起動する方法もあります。
event="47998 trace name context forever, level [trace_level]"
trace_level
を、次のいずれかの値に置き換えます。
1
: 最低レベルのトレース
3
: 高レベルのトレース
4
: 最高レベルのトレース
次に例を示します。
event="47998 trace name context forever, level [1]"
マルチテナント環境でトレース・イベントの有効化が受ける影響を認識する必要があります。
現在のセッションのトレース・イベント: マルチテナント環境で、ルートまたはプラガブル・データベース(PDB)からALTER SESSION SET EVENTS
SQL文を実行すると、現在のユーザー・セッションに対するトレースが有効になります。1つのPDBから別のPDBに切り替えた(ALTER SESSION SET CONTAINER
文を使用して)場合、切り替え後のPDBに対して引き続きトレースが有効です。マルチテナント・コンテナ・データベース(CDB)におけるトレースの有効化は、単一のPDBに対してはできず、これはすべてのPDBおよびルートに適用されます。PDBを切り替えるには、ALTER SESSION SET CONTAINER
システム権限が必要です。
すべてのデータベース・セッションのトレース・イベント: マルチテナント環境で、ルートまたは特定のPDBからALTER SYSTEM SET EVENTS
文を実行すると、コンテナ・データベースのすべてのPDBに対するトレースが有効になります。
Linuxのgrep
コマンドやADRコマンド・インタプリタ(ADRCI
)コマンドライン・ユーティリティを使用すると、Oracle Database Vaultのトレース・ファイル・データを検索することができます。
内容は次のとおりです。
トレース・ファイルのディレクトリの完全な場所は、V$DIAG_INFO
動的ビューを問い合せて検索することができます。
次のように、V$DIAG_INFO
動的ビューに問い合せます。
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File';
次のような出力が表示されます。
VALUE -------------------------------------------------------------------------------- /u01/app/oracle/product/12.1.0/log/diag/rdbms/orcl/orcl/trace/orcl_ora_7174.trc
トレース・ファイルの問合せ、または処理を行うとき、Linuxのgrep
コマンドを使用して文字列を検索することができます。
たとえば、レルム認可の失敗を表示するトレース・ファイルを検索するには、次のコマンドを入力します。
grep 'Result=Realm Authorization Failed' *.trc
ADRコマンド・インタプリタ(ADRCI
)コマンドライン・ユーティリティを使用して、トレース・ファイルを問い合せることができます。
ADRCI
ユーティリティを使用してトレース・ファイル情報を検索するには、SHOW
コマンドを使用します。
たとえば、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/12.1.0/log/diag/rdbms/orcl/orcl: ************************************************************************* 234 rows fetched
次のADRCI
コマンドは、名前にora
という語が含まれているすべてのトレース・ファイルのリストを返します。
adrci> show tracefile %ora% /u01/app/oracle/product/12.1.0/log/diag/rdbms/orcl/orcl/trace/orcl_ora_18841.trc /u01/app/oracle/product/12.1.0/log/diag/rdbms/orcl/orcl/trace/orcl_ora_12017.trc /u01/app/oracle/product/12.1.0/log/diag/rdbms/orcl/orcl/trace/orcl_ora_19372.trc /u01/app/oracle/product/12.1.0/log/diag/rdbms/orcl/orcl/trace/orcl_ora_12221.trc /u01/app/oracle/product/12.1.0/log/diag/rdbms/orcl/orcl/trace/orcl_ora_1600.trc ...
次のADRCI
コマンドは、Realm Authorization Failed
というフレーズを含むトレース・ファイルを検索します。
adrci> show trace %trc -xp "[payload like '%Realm Authorization Failed%']"
関連項目:
ADRCI
ユーティリティの詳細は、『Oracle Databaseユーティリティ』を参照してください
ADRCI
ユーティリティでのレポートの表示については、『Oracle Database管理者ガイド』を参照してください
トレース・ファイル・データを使用して、低レベルのレルム違反を追跡できます。
例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
高レベルのトレースが有効になっているトレース・ファイルで、Oracle Database Vault認可を追跡できます。
例E-2に、このタイプのトレース・ファイルの例を示します。
例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
Oracle Database Vaultイベントのトレースを無効化できます。
内容は次のとおりです。
ALTER SESSION SET EVENTS
SQL文を使用して、現在のデータベース・セッションのDatabase Vaultのトレースを無効化できます。
ALTER SYSTEM SET EVENTS
SQL文を使用して、すべてのデータベース・セッションのDatabase Vaultトレースを無効化できます。
すべてのデータベース・セッションに対してトレース・イベントを無効にするには、init.ora
ファイルに次の行を追加してデータベースを再起動する方法もあります。
event="47998 trace name context off"
init.ora
ファイルで、47998
行目との競合がないようにしてください。event="47998 trace name context forever, level [1]"
などです。
マルチテナント環境でトレース・イベントの有効化が受ける影響を認識する必要があります。
現在のセッションのトレース・イベント: マルチテナント環境で、ルートまたはPDBからALTER SESSION SET EVENTS
SQL文を実行すると、現在のユーザー・セッションに対するトレースが無効になります。1つのPDBから別のPDBに切り替えた(ALTER SESSION SET CONTAINER
文を使用して)場合、切り替え後のPDBに対して引き続きトレースが無効です。CDBで、1つのPDBのみに対してトレースを無効にすることはできず、トレースはすべてのPDBとルートに適用されます。PDBを切り替えるには、ALTER SESSION SET CONTAINER
システム権限が必要です。
すべてのデータベース・セッションのトレース・イベント: マルチテナント環境で、ルートまたは特定のPDBからALTER SYSTEM SET EVENTS
文を実行すると、CDBのすべてのPDBに対するトレースが無効になります。
Oracleでは、レルム、ファクタおよびルール・セットの問題を診断する一般的なヒントを提供しています。
これらのガイドラインは、次のとおりです。
レルム保護の場合、コマンドに作用する基礎となるシステム権限またはオブジェクト権限をユーザーが保持している(直接またはロールを介して付与されている)ことを確認します。
レルム認可が機能しない場合は、アカウントのロールが正しく設定されていることを確認します。
ファクタおよびルール・セットで使用されるPL/SQL式の場合、これらの式で使用されるPL/SQLパッケージ・ファンクションに対するEXECUTE
権限をアカウントに直接付与し、結果が正しいと思われるかどうかを判断します。
一般に、監査レポートを使用して問題を診断します。詳細は、「Oracle Database Vaultの監査レポート」を参照してください。
Oracle Database Vaultは、レルム、コマンド・ルール、ファクタ、ルール・セット、またはセキュア・アプリケーション・ロールの構成に関する問題をチェックするためのレポートを提供します。
詳細は、次の各項を参照してください。
これらのレポートを実行するには、「Oracle Database Vaultレポートの実行」を参照してください。
バックアップ・アカウントは、DV_OWNER
およびDV_ACCTMGR
ロールを付与されたユーザーがパスワードを紛失した場合に、パスワードをリセットする助けとなります。
内容は次のとおりです。