ヘッダーをスキップ
Oracle Database Vault管理者ガイド
11gリリース1(11.1)
E05797-05
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

6 コマンド・ルールの構成

この章の内容は次のとおりです。

コマンド・ルールの概要

コマンド・ルールは、1つ以上のデータベース・オブジェクトに影響を与えるSELECTALTER SYSTEMデータベース定義言語(DDL)およびデータ操作言語(DML)文を保護するために作成するルールです。コマンド・ルールをカスタマイズして実行するには、1つ以上のルールの集合であるルール・セットにコマンド・ルールを関連付けます。コマンド・ルールは実行時に実行されます。コマンド・ルールは、オブジェクトが存在するレルムに関係なく、コマンド・ルールによって保護されるSQL文の使用を試みる全員に影響します。レルム固有のオブジェクトを保護する場合は、「レルム認可の定義」を参照してください。

コマンド・ルールには、それぞれの結合操作と認可機能に加えて、次の属性があります。

SQL文および操作の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。また、「コマンド・ルールで保護できるSQL文」も参照してください。

コマンド・ルールは、次のように分類できます。

コマンド・ルールの影響を受ける文をユーザーが実行すると、Oracle Database Vaultによって最初にレルム認可がチェックされます。レルム違反が検出されず、関連付けられているコマンド・ルールが有効な場合は、関連付けられているルール・セットがDatabase Vaultによって評価されます。すべてのルール・セットの評価がTrueの場合、その文は認可されてさらに処理されます。評価がFalseのルール・セットがある場合、その文は認可されずコマンド・ルール違反が作成されます。ルール・セットの詳細は、第5章「ルール・セットの構成」で説明しています。

通常の認可プロセス、Oracle Label Securityの初期化、ファクタの初期化およびOracle Label Securityの統合が完了した後に、セッションが許可されているかどうかを確認できるCONNECTイベントにコマンド・ルールを定義することもできます。また、必要な場合にはコマンド・ルールを無効または有効にし、同じルールをレルムやコマンド・ルールに適用できます。

たとえば、BIZAPPスキーマ内で、CREATE TABLEDROP TABLEおよびALTER TABLEなどのDDL文が営業時間後に認可されるのは許可するが、営業時間中には許可しないというコマンド・ルールを構成できます。

Oracle Database Vaultに作成するコマンド・ルール上でレポートを実行できます。詳細は、「関連するレポートおよびデータ・ディクショナリ・ビュー」を参照してください。

この章では、Oracle Database Vault Administratorを使用してコマンド・ルールを構成する方法を説明します。Oracle Database Vaultが提供するPL/SQLインタフェースおよびパッケージを使用してコマンド・ルールを構成するには、次の章を参照してください。

デフォルトのコマンド・ルール

表6-1に、Oracle Database Vaultが提供するデフォルトのコマンド・ルールを示します。

表6-1 デフォルトのコマンド・ルール

SQL文 オブジェクト名 ルール・セット名

ALTER PROFILE

-

アカウント/プロファイルを保守可能

ALTER SYSTEM

-

システム・パラメータを許可

ALTER USER

-

自分のアカウントを保守可能

CREATE PROFILE

-

アカウント/プロファイルを保守可能

CREATE USER

-

アカウント/プロファイルを保守可能

DROP PROFILE

-

アカウント/プロファイルを保守可能

DROP USER

-

アカウント/プロファイルを保守可能

GRANT

SYS.DBMS_RLSパッケージ

VPD管理権限を付与可能

REVOKE

SYS.DBMS_RLSパッケージ

VPD管理権限を付与可能


次に示す一連のコマンド・ルールは、ユーザー管理の職務分離の実現をサポートします。

ユーザーにこれらのコマンドの使用権限を付与するには、ルール・セットによってチェックされるロールをユーザーに付与します。たとえば、CREATE USERコマンド・ルールは、CREATE USER文を実行しようとするユーザーにDV_ACCTMGRロールが付与されていることを確認します。

次に示すOracle Virtual Private Database(VPD)のデフォルトのコマンド・ルールは、データベース管理者によるアカウントへのVPD機能の付与を阻止します。

DV_OWNERロールのあるアカウントのみ、SYS.DBMS_RLSオブジェクトやEXECUTE権限に関連するGRANTおよびREVOKE文を使用できます。

コマンド・ルールで保護できるSQL文

コマンド・ルールを使用して、次のSQL文を保護できます。

ALTER CLUSTER CREATE CONTEXT DROP FUNCTION
ALTER DIMENSION CREATE DATABASE LINK DROP INDEX
ALTER FUNCTION CREATE DIMENSION DROP INDEXTYPE
ALTER INDEX CREATE DIRECTORY DROP JAVA
ALTER INDEXTYPE CREATE FUNCTION DROP LIBRARY
ALTER JAVA CREATE INDEX DROP OPERATOR
ALTER OPERATOR CREATE INDEXTYPE DROP OUTLINE
ALTER OUTLINE CREATE JAVA DROP PACKAGE
ALTER PACKAGE CREATE LIBRARY DROP PACKAGE BODY
ALTER PACKAGE BODY CREATE OPERATOR DROP PROCEDURE
ALTER PROCEDURE CREATE OUTLINE DROP PROFILE
ALTER PROFILE CREATE PACKAGE DROP ROLE
ALTER RESOURCE COST CREATE PACKAGE BODY DROP ROLLBACK SEGMENT
ALTER ROLE CREATE PROCEDURE DROP SEQUENCE
ALTER ROLLBACK SEGMENT CREATE PROFILE DROP SNAPSHOT
ALTER SEQUENCE CREATE ROLE DROP SNAPSHOT LOG
ALTER SNAPSHOT CREATE ROLLBACK SEGMENT DROP SYNONYM
ALTER SNAPSHOT LOG CREATE SCHEMA DROP TABLE
ALTER SYNONYM CREATE SEQUENCE DROP TABLESPACE
ALTER SYSTEM CREATE SNAPSHOT DROP TRIGGER
ALTER TABLE CREATE SNAPSHOT LOG DROP TYPE
ALTER TABLESPACE CREATE SYNONYM DROP TYPE BODY
ALTER TRIGGER CREATE TABLE DROP USER
ALTER TYPE CREATE TABLESPACE DROP VIEW
ALTER TYPE BODY CREATE TRIGGER EXECUTE
ALTER USER CREATE TYPE GRANT
ALTER VIEW CREATE TYPE BODY INSERT
ANALYZE CLUSTER CREATE USER NOAUDIT
ANALYZE INDEX CREATE VIEW RENAME
ANALYZE TABLE DELETE REVOKE
ASSOCIATE STATISTICS DISASSOCIATE STATISTICS SELECT
AUDIT DROP CLUSTER TRUNCATE CLUSTER
COMMENT DROP CONTEXT TRUNCATE TABLE
COMMIT DROP DATABASE LINK UPDATE
CONNECT DROP DIMENSION
CREATE CLUSTER DROP DIRECTORY

コマンド・ルールの作成および編集

次の手順に従います。

  1. Database Vault所有者(DV_OWNER)ロールが付与されているデータベース・アカウントを使用して、Oracle Database Vault Administratorにログインします。

    少なくとも、DV_ADMINロールを持っている必要があります。ログイン方法は、「Oracle Database Vault Administratorの起動」で説明されています。

  2. 「管理」ページの「Database Vault機能管理」で、「コマンド・ルール」をクリックします。

  3. 「コマンド・ルール」ページで次のようにします。

    • 新しいコマンド・ルールを作成するには、「作成」をクリックします。

    • 既存のコマンド・ルールを編集するには、リストからコマンド・ルールを選択して「編集」をクリックします。

  4. 「コマンド・ルールの作成」(または「コマンド・ルールの編集」)ページで、次の設定を入力して「OK」をクリックします。

一般

次の設定を入力します。

適用性

次の設定を入力します。

ルール・セット

リストから、コマンド・ルールに関連付けるルール・セットを選択します。この属性は必須です。

ルール・セットの評価がTrueの場合、そのSQL文は成功します。評価がFalseの場合、そのSQL文は失敗し、Oracle Database Vaultによってコマンド・ルール違反が作成されます。(第16章で説明されている「コマンド・ルール構成の問題」レポートを使用して、そのようなルール違反を追跡できます。)ルール・セットに関連付けられている監査およびカスタム・イベント処理は、コマンド・ルール処理の一部として発生します。

ルール・セットの詳細は、第5章「ルール・セットの構成」を参照してください。

コマンド・ルールの削除

コマンド・ルールを削除する前に、それに関連するOracle Database Vaultビューに問い合せることで、そのコマンド・ルールへの様々な参照を特定できます。詳細は、「Oracle Database Vaultのデータ・ディクショナリ・ビュー」を参照してください。

コマンド・ルールを削除するには、次のようにします。

  1. Oracle Database Vaultの「管理」ページで、「コマンド・ルール」を選択します。

  2. 「コマンド・ルール」ページで、削除するコマンド・ルールを選択します。

  3. 「削除」をクリックします。

  4. 「確認」ページで「はい」をクリックします。

コマンド・ルールの動作

「レルムの動作」では、データベース・アカウントによりレルム内のオブジェクトに影響するSELECT、DDLまたはDML文が発行された場合の動作を説明しています。

コマンド・ルールが実行されると、次のアクションが実行されます。

  1. Oracle Database Vaultが、アカウントで使用するすべてのルールを問い合せます。

    SELECT、DDLおよびDML文では、オブジェクト所有者およびオブジェクト名でワイルドカード表記を使用できるため、複数のコマンド・ルールが適用される場合があります。

    ルール・セットは、コマンド・ルールおよびレルム認可の両方に関連付けることができます。Oracle Database Vaultにより、まずレルム認可ルール・セットが評価され、評価されるコマンド・タイプに適用するルール・セットが次に評価されます。

  2. 適用する各コマンド・ルールに関して、Oracle Database Vaultはそれに関連付けられているルール・セットを評価します。

  3. 適用可能なコマンド・ルールに関連付けられているルール・セットが1つでもFalseまたはエラーで返されると、Oracle Database Vaultによりそのコマンドの実行が阻止されます。それ以外の場合、コマンドは認可されてさらに処理されます。監査およびイベント・ハンドラに関するルール・セットの構成により、発生する監査またはカスタム処理が決定されます。

    コマンド・ルールはオブジェクト権限より優先されます。コマンドまたはコマンドのルール・セットを無効(あるいはこれらに「無効」を設定)にできます。コマンドを無効にした場合、それに関連付けられているルール・セットに関係なく、コマンドは実行できません。つまり、コマンド自体が無効になります。ただし、コマンドのルール・セットを無効にした場合、ルール・セットはチェックされません。この場合、コマンドは無条件で実行を許可されます。コマンドが「無効」に設定されていると、表に対するSELECT権限を持っていても、そのユーザーは表の問合せを実行できません。(コマンド自体ではなく、ルール・セットのみが無効になっている場合。)

チュートリアル: ユーザーによる表作成を制御するためのコマンド・ルールの使用方法

このチュートリアルでは、ユーザーSCOTTの表作成権限を無効にし、その後有効にする簡単なコマンド・ルールを作成します。

このチュートリアルの内容は次のとおりです。


関連項目:

違反発生時に電子メール・アラートを送信するために、どのようにコマンド・ルールとルール・セットが連携して機能するかを示す別の例は、「チュートリアル: セキュリティ違反の電子メール・アラートの作成」を参照してください。

手順1: ユーザーSCOTTとしての接続と表の作成

  1. ユーザーSCOTTとしてSQL*Plusにログインします。

    sqlplus SCOTT
    Enter password: password
    

    SCOTTアカウントがロックされて無効になっている場合、Database Vaultアカウント・マネージャとしてログインし、SCOTTのロックを解除し、新しいパスワードを作成します。たとえば、次のようになります。

    sqlplus dbvacctmgr
    Enter password: password
    
    ALTER USER SCOTT ACCOUNT UNLOCK IDENTIFIED BY password;
    

    passwordをセキュアなパスワードに置き換えます。パスワードを作成するための最小限の要件は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

    CONNECT SCOTT
    Enter password: password
    
  2. ユーザーSCOTTとして、表を作成します。

    CREATE TABLE t1 (num NUMBER);
    
  3. 表を削除します。

    DROP TABLE t1;
    

この段階で、ユーザーSCOTTは、表の作成および削除を行うことができます。SQL*Plusを終了せずに、SCOTTとして接続したままにします。後でSCOTTが別の表を作成しようとするときに使用します。

手順2: DVOWNERロールを使用した接続とコマンド・ルールの作成

  1. Database Vault所有者(DV_OWNER)ロールが付与されているデータベース・アカウントを使用して、Oracle Database Vault Administratorにログインします。

    ログイン方法は、「Oracle Database Vault Administratorの起動」で説明されています。

  2. Oracle Database Vault Administratorの「管理」ページで、「コマンド・ルール」をクリックします。

    「コマンド・ルール」ページが表示されます。

  3. 「作成」をクリックします。

    「コマンド・ルールの作成」ページが表示されます。

  4. 次の設定を入力します。

    • 「コマンド」リスト: 「CREATE TABLE」を選択します。

    • ステータス: 「有効」に設定して、コマンド・ルールをアクティブにします。

    • オブジェクト所有者: 「SCOTT」を選択します。

    • オブジェクト名: %に設定して、SCOTTスキーマ内のすべてのオブジェクトに適用します。

    • ルール・セット: 「無効」を選択して、ユーザーSCOTTが表を作成できないようにします。

  5. 「OK」をクリックします。

    Database Vault Administratorを終了しないでください。

コマンド・ルールは即時有効になります。ユーザーSCOTTは、CREATE TABLEコマンド・ルールを作成する前の、先ほどまでいたユーザー・セッションにまだいるとしても、ただちに表を作成できなくなります。

手順3: コマンド・ルールのテスト

  1. SQL*Plusで、ユーザーSCOTTとしてログインしていることを確認します。

    CONNECT SCOTT
    Enter password: password
    
  2. 表を作成してみます。

    CREATE TABLE t1 (num NUMBER);
    

    次のような出力結果が表示されます。

    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-47400: Command Rule violation for create table on SCOTT.T1
    ORA-06512: at "DVSYS.AUTHORIZE_EVENT", line 55
    ORA-06512: at line 31
    

    この例からわかるように、SCOTTは、自身のスキーマ内でも、表を作成できなくなります。

  3. Oracle Database Vault Administratorで、次の作業を実行します。

    1. 「コマンド・ルール」ページで、「CREATE TABLE」コマンド・ルールを選択して、「編集」をクリックします。

    2. 「コマンド・ルールの編集」ページで、「ルール・セット」リストから「有効」を選択します。

    3. 「OK」をクリックします。

  4. SQL*Plusで、ユーザーSCOTTとして、表の作成を再試行します。

    CREATE TABLE t1 (num NUMBER);
    
    Table created.
    

CREATE TABLEコマンド・ルールが「有効」に設定されたので、ユーザーSCOTTは、再び表の作成が許可されるようになりました。(SQL*Plusを終了しないでください。)

手順4: このチュートリアルのコンポーネントの削除

  1. Oracle Database Vault Administratorで、CREATE TABLEコマンド・ルールを次のように削除します。

    • 「コマンド・ルール」ページに戻ります。

    • 「CREATE TABLE」コマンド・ルールを選択して、「削除」をクリックします。

    • 「確認」ページで「はい」をクリックします。

  2. ユーザーSCOTTとしてSQL*Plusにログインし、t1表を削除します。

    SQL> DROP TABLE t1;
    
  3. SCOTTアカウントが使用可能である必要がなくなった場合、Database Vaultアカウント・マネージャとして接続し、次のALTER USER文を入力します。

    CONNECT dbvacctmgr
    Enter password: password
    
    ALTER USER SCOTT ACCOUNT LOCK PASSWORD EXPIRE;
    

コマンド・ルール設計のガイドライン

次に示すコマンド・ルール構成のガイドラインに従ってください。

コマンド・ルールのパフォーマンスへの影響

コマンド・ルールのパフォーマンスは、そのコマンド・ルールに関連付けられているルール・セット内のルールの複雑さに依存します。たとえば、実行に5秒かかるPL/SQLファンクションを起動するルール・セットがあるとします。この場合、このルール・セットを使用するコマンド・ルールでは、実行するコマンド文へのアクセス権の付与に5秒かかります。

Oracle Enterprise Manager(デフォルトでOracle DatabaseとともにインストールされるOracle Enterprise Manager Database Controlを含む)、StatspackおよびTKPROFなどのツールを実行してシステム・パフォーマンスを確認できます。Oracle Enterprise Managerの詳細は、Oracle Enterprise Managerのドキュメント・セットを参照してください。Database Controlの詳細は、オンライン・ヘルプを参照してください。StatspackおよびTKPROFユーティリティについては、『Oracle Databaseパフォーマンス・チューニング・ガイド』で説明されています。

関連するレポートおよびデータ・ディクショナリ・ビュー

表6-2に、コマンド・ルールの分析に便利なOracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、第16章「Oracle Database Vaultレポート」を参照してください。

表6-2 コマンド・ルールに関連するレポート

レポート 説明

「「コマンド・ルールの監査」レポート」


コマンド・ルールを処理する操作により生成された監査レコードが表示されます。

「「コマンド・ルール構成の問題」レポート」


コマンド・ルールに存在するその他の構成問題に加え、ルール違反が追跡されます。

「オブジェクト権限レポート」


コマンド・ルールが影響するオブジェクト権限が表示されます。

「機密オブジェクト・レポート」


コマンド・ルールが影響するオブジェクトが表示されます。

「「ルール・セット構成の問題」レポート」


ルールが定義されていないか、有効ではなく、それらを使用するコマンド・ルールに影響を与える可能性があるルール・セットが表示されます。


DBA_DV_COMMAND_RULEデータ・ディクショナリ・ビューを使用すると、コマンド・ルールにより保護されているSQL文を検出できます。詳細は、「DBA_DV_COMMAND_RULEビュー」を参照してください。