11 レルムおよびコマンド・ルール・アクティビティのログ記録のためのシミュレーション・モードの使用
シミュレーション・モードでは、レルムおよびコマンド・ルールについて実行されるアクティビティがログ・ファイルに書き込まれ、これにはデータ・ディクショナリ・ビューを介してアクセスできます。
- シミュレーション・モードについて
シミュレーション・モードでは、レルムまたはコマンド・ルールの開発フェーズの間にエラーのレコードを取得できます。 - シミュレーション・モードの使用例
シミュレーション・モードは、新しいレルムおよびコマンド・ルールの開発構成をテストするために役立ちます。 - チュートリアル: シミュレーション・モードの使用によるレルムに対する違反の追跡
このチュートリアルでは、シミュレーション・モードを使用するレルムを作成してから、レルムに対する違反をテストする方法を示します。
11.1 シミュレーション・モードについて
シミュレーション・モードでは、レルムまたはコマンド・ルールの開発フェーズの間にエラーのレコードを取得できます。
シミュレーション・モードでは、簡単に分析できるよう、1つの場所で取得されたエラーが格納されます。シミュレーション・モードを使用するには、レルムまたはコマンド・ルールの作成または更新時に、レルムまたはコマンド・ルールを有効または無効にするのではなく、それをシミュレーション・モードに設定します。レルムまたはコマンド・ルールはまだ有効になっていますが、違反はブロックされず、かわりにシミュレーション・ログ・ファイルに記録されるため、本番環境に対して有効にする前に、潜在的なエラーを見つけるためにテストできます。
たとえば、次のレルム作成文では、シミュレーション・モードが有効になります。
BEGIN DBMS_MACADM.CREATE_REALM( realm_name => 'HR Apps', description => 'Realm to protect the HR realm', enabled => DBMS_MACUTL.G_SIMULATION, audit_options => DBMS_MACUTL.G_REALM_AUDIT_FAIL, realm_type => 1, realm_scope => DBMS_MACUTL.G_SCOPE_LOCAL); END; /
この時点では、レルムまたはコマンド・ルールに違反するSQL文はまだ実行可能ですが、これらのアクティビティはDBA_DV_SIMULATION_LOGデータ・ディクショナリ・ビューに記録されます。たとえば、次の問合せでは、HR Appsレルムに対する違反が検出されます。
SELECT USERNAME, COMMAND, SQLTEXT, VIOLATION_TYPE FROM DBA_DV_SIMULATION_LOG WHERE REALM_NAME = "HR APPS";
USERNAME COMMAND SQLTEXT VIOLATION_TYPE
-------- ---------- ------------------------------- --------------
DGRANT SELECT SELECT SALARY FROM HR.EMPLOYEES; Realm Violationレルムまたはコマンド・ルールのテストの完了後、DV_ADMINまたはDV_OWNERロールを付与されているユーザーは、このビューDVSYS.SIMULATION_LOG$の基礎となる表の内容を削除することで、.DBA_DV_SIMULATION_LOGデータ・ディクショナリ・ビューをクリアできます。
たとえば:
DELETE FROM DVSYS.SIMULATION_LOG$;
または
DELETE FROM DVSYS.SIMULATION_LOG$ WHERE COMMAND = 'SELECT';
11.2 シミュレーション・モードの使用例
シミュレーション・モードは、新しいレルムおよびコマンド・ルールの開発構成をテストするために役立ちます。
使用例を次に示します。
-
アプリケーション認証
アプリケーションを認証している場合、アプリケーション・テスト環境で、次のようにシミュレーション・モードを使用できます。
-
アプリケーションのすべてのスキーマを、シミュレーション・モードが有効になっている必須レルムに配置します。
-
フル・リグレッション・テストを実行します。
-
DBA_DV_SIMULATION_LOGデータ・ディクショナリ・ビューを問い合せてこれらのスキーマにアクセスできるユーザーを確認することで、シミュレーション・モード・ログを分析します。 -
レルムを新しい認可で更新し、レルムを有効にします(つまり、シミュレーション・モードは使用しない)。
-
リグレッション・テストを再実行します。
-
-
新しいコマンド・ルールの導入
Oracle Database Vaultが有効になっている本番データベースでシミュレーション・モードを使用できます。
-
新しいコマンド・ルールを、必要な数週間の間、シミュレーション・モードで本番に配置します。
-
DBA_DV_SIMULATION_LOGを問い合せて、コマンド・ルールが正しく動作しているかどうかを判断することで、シミュレーション・モード・ログを分析します。 -
必要に応じて、コマンド・ルールに変更を加えます。
-
コマンド・ルールを有効にします。
-
-
シミュレーション・モードでの本番データベースへの新しいレルムの配置。
この方法は、ルール・セット内の信頼できるパスのルールを設定し、レルムの認可ユーザーを見つけるために必要な、システム・コンテキスト情報を確認するために役立ちます。
-
レルムを必須モードで作成し、保護されたオブジェクトを追加します。
-
認可ユーザーは追加しないでください。
-
使用される通常のIPアドレスからアプリケーションおよび開発操作を実行します。
-
両方の認可ユーザーのシミュレーション・ログ・ファイル、および信頼できるパスの作成に使用できるシステム・コンテキスト情報を確認します。
-
信頼できるパスを作成してから、認可ユーザーを追加します。
-
シミュレーション・ログをクリアし、アプリケーションおよび開発操作タスクを再度実行します。
-
一定期間の経過後、シミュレーション・ログを確認します。すべての制御が正しく更新された場合、シミュレーション・ログは空になっています。シミュレーション・モードでのログ・エントリには、レルムおよびルール・セットに加える必要がある追加変更が示されます。または、ログ・エントリに、悪意ある使用が示される場合があります。
-
11.3 チュートリアル: シミュレーション・モードの使用によるレルムに対する違反の追跡
このチュートリアルでは、シミュレーション・モードを使用するレルムを作成してから、レルムに対する違反をテストする方法を示します。
- このチュートリアルについて
このチュートリアルでは、HR.EMPLOYEESスキーマ周りのレルムを作成し、それに対する違反をテストします。 - ステップ1: このチュートリアル用のユーザーの作成
このチュートリアル用に3つのユーザーを作成する必要があります。 - ステップ2: レルムおよびOracle Database Vaultポリシーの作成
次に、HR.EMPLOYEES表の周囲にレルムを作成し、このレルムをOracle Database Vaultポリシーに追加します。 - ステップ3: レルムおよびポリシーのテスト
ユーザーtjones_dbaがレルムに対して違反をコミットし、レルムおよびポリシーをテストします。 - ステップ4: DBA_DV_SIMULATION_LOGビューでの違反の問合せ
これで、ユーザーtjones_dbaが犯した違反のシミュレーション・モード・ログを確認できるようになります。 - ステップ5: レルムの有効化および再テスト
違反を取得したので、ユーザーpsmithは、HR.EMPLOYEES_polポリシーを更新できます。 - ステップ6: このチュートリアルのコンポーネントの削除
コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。
11.3.1 このチュートリアルについて
このチュートリアルでは、HR.EMPLOYEESスキーマ周りのレルムを作成し、それに対する違反をテストします。
HR.EMPLOYEESスキーマには、従業員の給与などの機密データが含まれています。レルムをテストするために、管理者tjones_dbaは、別の従業員smavrisの給与を参照して変更します。Database Vault管理者leo_dvownerは、シミュレーション・モードを使用して、HR.EMPLOYEESスキーマに対する違反を追跡します。これを達成するために、ユーザーleo_dvownerは、委任された管理者であるユーザーpsmithが所有することになる、Database Vaultポリシーを作成します。ユーザーpsmithは、その後、DV_OWNERロールやDV_ADMINロールを必要とせずに、制限された変更をポリシーに加えることができるようになります。
11.3.2 ステップ1: このチュートリアル用のユーザーの作成
このチュートリアル用に3つのユーザーを作成する必要があります。
psmith、HR.EMPLOYEES表での違反をコミットするtjones_dba、給与がtjones_dbaの違反を受けるsmavrisとなります。
11.3.3 ステップ2: レルムおよびOracle Database Vaultポリシーの作成
次に、HR.EMPLOYEES表周りのレルムを作成し、このレルムをOracle Database Vaultポリシーに追加します。
11.3.4 ステップ3: レルムおよびポリシーのテスト
ユーザーtjones_dbaがレルムに対して違反をコミットし、レルムおよびポリシーをテストします。
tjones_dbaの違反は、DBA_DV_SIMULATION_LOGデータ・ディクショナリ・ビューに記録されています。
11.3.5 ステップ4: DBA_DV_SIMULATION_LOGビューでの違反の問合せ
これで、ユーザーtjones_dbaが犯した違反のシミュレーション・モード・ログを確認できるようになります。
tjones_dbaが2つの違反をコミットしたことが示されます。まず、別の従業員の給与を参照し、それのみでなく、半分に減らしました。違反タイプはレルム違反です。自分の給与の参照は正当であるため、smavrisによる問合せは取得されませんでした。
11.3.6 ステップ5: レルムの有効化および再テスト
違反を取得したので、ユーザーpsmithは、HR.EMPLOYEES_polポリシーを更新できます。
HR.EMPLOYEES_realmレルムを有効化できるようにするためです。その後、もう一度違反をテストできます。