プライマリ・コンテンツに移動
Oracle® Database Vault管理者ガイド
11gリリース2 (11.2)
B56297-10
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

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

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

コマンド・ルールの概要

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

コマンド・ルールには、コマンド・ルールのコマンドへの関連付けに加えて、次の属性があります。

  • コマンド・ルールで保護されるSQL文

  • コマンド・ルールが影響するオブジェクトの所有者

  • コマンド・ルールが影響するデータベース・オブジェクト

  • コマンド・ルールが有効かどうか

  • 関連付けられているルール・セット

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

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

  • 範囲がシステム全体に及ぶコマンド・ルール。このタイプでは、データベース・インスタンスごとに1つのコマンド・ルールのみを作成できます。例として、ALTER SYSTEMおよびCONNECT文のコマンド・ルールがあげられます。

  • スキーマ固有のコマンド・ルール。DROP TABLE文のコマンド・ルールの作成は、この一例です。

  • オブジェクト固有のコマンド・ルール。コマンド・ルール定義に含まれる特定の表を使用してDROP TABLE文を作成することは、この一例です。

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

通常の手順であるユーザー認証プロセス、ファクタの初期化および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

-

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


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

  • ALTER PROFILE

  • ALTER USER

  • CREATE PROFILE

  • CREATE USER

  • DROP PROFILE

  • DROP USER

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

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

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

ALTER CLUSTER CREATE CONTEXT DROP DIRECTORY
ALTER DIMENSION CREATE DATABASE LINK DROP FUNCTION
ALTER FUNCTION CREATE DIMENSION DROP INDEX
ALTER INDEX CREATE DIRECTORY DROP INDEXTYPE
ALTER INDEXTYPE CREATE FUNCTION DROP JAVA
ALTER JAVA CREATE INDEX DROP LIBRARY
ALTER OPERATOR CREATE INDEXTYPE DROP OPERATOR
ALTER OUTLINE CREATE JAVA DROP OUTLINE
ALTER PACKAGE CREATE LIBRARY DROP PACKAGE
ALTER PACKAGE BODY CREATE OPERATOR DROP PACKAGE BODY
ALTER PROCEDURE CREATE OUTLINE DROP PROCEDURE
ALTER PROFILE CREATE PACKAGE DROP PROFILE
ALTER RESOURCE COST CREATE PACKAGE BODY DROP ROLE
ALTER ROLE CREATE PROCEDURE DROP ROLLBACK SEGMENT
ALTER ROLLBACK SEGMENT CREATE PROFILE DROP SEQUENCE
ALTER SEQUENCE CREATE ROLE DROP SNAPSHOT
ALTER SNAPSHOT CREATE ROLLBACK SEGMENT DROP SNAPSHOT LOG
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
CONNECT DROP DATABASE LINK UPDATE
CREATE CLUSTER DROP DIMENSION

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

次の手順に従います。

  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとしてOracle Database Vault Administratorにログインします。

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

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

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

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

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

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

一般

次の設定を入力します。

  • コマンド: コマンド・ルールを作成するSQL文または操作を選択します。この属性は必須です。

  • ステータス: 「有効」または「無効」のいずれかを選択し、実行時にコマンド・ルールを有効または無効にします。デフォルトは「有効」です。この属性は必須です。

適用性

次の設定を入力します。

  • オブジェクト所有者: リストから、コマンド・ルールが影響するオブジェクトの所有者を選択します。ワイルドカード文字%を使用して、すべての所有者を選択できます。(ただし、ワイルドカード文字をテキストと一緒に使用することはできません。たとえば、EM%を使用して、名前がEMで始まるすべての所有者を選択することはできません。)この属性は、特定のスキーマ内のオブジェクトに提供するすべてのSQL文で必須です。サポートされているSQL文のリストは、「コマンド・ルールで保護できるSQL文」を参照してください。

    SELECTINSERTUPDATEDELETEおよびEXECUTE文は、すべての選択(%)、またはSYSおよびDVSYSスキーマには使用できないことに注意してください。

  • オブジェクト名: コマンド・ルールが影響するデータベース・オブジェクトの名前を入力するか、%を指定してすべてのデータベース・オブジェクトを選択します。ただし、ワイルドカード文字をテキストと一緒に使用することはできません(たとえば、EMP_%と入力して、文字EMP_で始まるすべての表を指定することはできません)。「オブジェクト所有者」リストからオブジェクト所有者を選択した場合、この属性は必須です。

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

ルール・セット

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

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

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

コマンド・ルールの削除

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

コマンド・ルールの削除手順:

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

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

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

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

コマンド・ルールの動作

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

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 amalcolm_dvacctmgr
    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またはDV_ADMINロールを使用した接続とコマンド・ルールの作成

  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとしてOracle Database Vault Administratorにログインします。

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

  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);
    

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

    ORA-47400: Command Rule violation for create table on SCOTT.T1
    

    この例からわかるように、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表を削除します。

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

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

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

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

  • 維持が簡単であるため、ファイングレイン・コマンド・ルールを作成します。

    たとえば、特定のスキーマ・オブジェクトでSELECT文が発生しないようにする場合は、スキーマ・レベルでSELECT文を阻止する一般的なコマンド・ルールを作成するのではなく、特定のスキーマ・オブジェクトでSELECT文を阻止する複数のコマンド・ルールを設計します。

  • CONNECTイベントにルールを作成する場合、必要なユーザー接続を間違えてロックアウトしないロジックを慎重に指定してください。アカウントが誤ってロックアウトされた場合、DV_ADMINまたはDV_OWNERロールを付与されたユーザーに、ロックアウト問題の原因となっているルールにログインして修正してもらうようにしてください。CONNECTコマンドは、DV_OWNERロールとDV_ADMINロールを持つユーザーには適用されません。これにより、不適切に構成されたCONNECTコマンド・ルールで完全なロックアウトが生じることはありません。

    アカウントがロックアウトされている場合は、Oracle Database Vaultを無効にして、ロックアウトの問題の原因となっているルールを修正し、再びOracle Database Vaultを有効にします。Oracle Database Vaultが無効な場合でも、Database Vault AdministratorとDatabase Vault PL/SQLパッケージはまだ使用できます。Database Vaultの無効化および再有効化の手順は、付録B「Oracle Database Vaultの無効化および有効化」を参照してください。

  • 管理タスクに対して有効なコマンド・ルールを一時的に緩和することが必要な場合があります。コマンド・ルールを無効にするのではなく、セキュリティ管理者(DV_ADMINまたはDV_OWNERロールが付与されているアカウント)をログインさせて、ルール・セットを「有効」にし、有効という名前のデフォルト・ルール・セットの「成功時または失敗時に監査」をオンにします。タスクが完了したら、コマンド・ルールを元のルール・セットに戻します。

  • コマンド・ルールの設計時には、処理が不用意に無効にされる可能性があるため、バックアップなどの自動プロセスを考慮するようにしてください。使用中のプログラム、使用中のアカウントまたはクライアント・プログラムが稼働中のコンピュータやネットワークなど、一連のOracle Database VaultファクタがTrueであることが明白な場合には、コマンドを許可するルールを作成することでこれらのタスクを把握できます。

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

コマンド・ルールのパフォーマンスは、そのコマンド・ルールに関連付けられているルール・セット内のルールの複雑さに依存します。たとえば、実行に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レポートを示します。これらのレポートの実行方法の詳細は、第18章「Oracle Database Vaultレポート」を参照してください。

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

レポート 説明

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


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

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


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

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


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

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


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

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


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


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