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

戻る
戻る
 
次へ
次へ
 

5 ルール・セットの構成

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

ルール・セットの概要

ルール・セットは、レルム認可、ファクタ割当て、コマンド・ルールまたはセキュア・アプリケーション・ロールに関連付けられる1つ以上のルールの集合です。ルール・セットは、含まれる各ルールの評価および評価タイプ(「すべてTrue」または「いずれかTrue」)に基づいてTrueまたはFalseに評価されます。ルール・セット内のルールは、TrueまたはFalseと評価されるPL/SQL式です。ルールを作成し、そのルールを複数のルール・セットに追加できます。

ルール・セットを使用して次のアクティビティを実行できます。

ルール・セットを作成すると、レルムの認証、コマンド・ルール、ファクタまたはセキュア・アプリケーション・ロールの構成時に選択できるようになります。

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

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

デフォルトのルール・セット

デフォルトで、Oracle Database Vaultには次に示すルール・セットが用意されています。

ルール・セットの作成

通常、ルール・セットを作成するには、まずルール・セットを作成し、次にそのルール・セットを編集して1つ以上のルールに関連付けます。作成したルール・セットに新しいルールを関連付ける、既存のルールを追加する、もしくはそのルール・セットからルールの関連付けを削除することが可能です。

次の項目も参照してください。

ルール・セットを作成するには、次のようにします。

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

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

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

  3. 「ルール・セット」ページで「作成」をクリックします。

  4. 「ルール・セットの作成」ページで、次の設定を入力して「OK」をクリックします。

一般

次の設定を入力します。

監査オプション

ルール・セット用の監査レコードが作成される時期を決定するには、次のオプションから選択します。この属性は必須です。設定は次のとおりです。

Oracle Database Vaultの監査証跡には、Rule_Set_NameおよびRule_Set_IDフィールドが含まれます。これらのフィールドは、ルール・セットがレルム認可やコマンド認可と関連付けられている場合や、ルール・セットがある状況下で監査するよう構成されている場合に値が移入されます。

詳細は、付録A「Oracle Database Vaultの監査」を参照してください。監査対象の情報は、表A-1「監査証跡の書式」に示されています。

エラー処理オプション

ルール・セットがFalseと評価されるか、関連付けられたルールのいずれかに無効なPL/SQL式が含まれる場合は、次の設定を入力してデータベース・セッションへのメッセージを制御します。

ルール・セットを作成すると、ルール・セットに追加するルールを作成できます。これを実行するには、新しいルール・セットを編集しルールを定義します。

ルール・セットの構成または編集

ルール・セットを構成または編集するには、次のようにします。

  1. Oracle Database Vaultの「管理」ページで、「ルール・セット」を選択します。

  2. 「ルール・セット」ページで、編集するルール・セットを選択します。

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

  4. 必要に応じてルール・セットを変更し、「OK」をクリックします。


関連項目:


ルール・セットに追加するルールの作成

新しいルール・セットを作成したら、そのルール・セットを1つ以上のルールに関連付けられます。新しいルールを作成すると、自動的に現行のルール・セットに追加されます。既存のルールをルール・セットに追加することもできます。また、ルール・セットにルールを追加せずに、今後作成するルール・セットのテンプレートとして使用することもできます。

ルール・セットの評価は、評価オプション(「すべてTrue」または「いずれかTrue」)を使用するルールの評価に依存します。ルール・セットが無効である場合、Oracle Database Vaultは、ルールを評価せずにルール・セットをTrueに評価します。

ルールの評価、ルールのネスト、および特定のユーザー(スーパー・システム管理者など)を除外するルールの作成方法は、「ルール・セットの動作」を参照してください。

新規ルールの作成

ルール・セットにルールを作成および追加するには、次のようにします。

  1. Oracle Database Vaultの「管理」ページで、「ルール・セット」を選択します。

  2. 「ルール・セット」ページで、ルールを作成および追加するルール・セットを選択し、「編集」を選択します。

  3. 「ルール・セットの編集」ページで、「ルール・セットに関連付けられたルール」にスクロールし、「作成」を選択します。

  4. 「ルールの作成」ページで、次の設定を入力します。

    • 名前: ルールの名前を入力します。大/小文字混在で最大で90文字まで入力できます。

      名前は動詞から始めて、ルールの目的で完了することをお薦めします。たとえば、次のようになります。

      Prevent non-admin access to SQL*Plus
      

      ルールには「説明」フィールドがないため、明示的な名前を必ず90文字以下で付けてください。

    • ルール式: 次の要件に一致するPL/SQL式を入力します。

      • SQLのWHERE句で有効な式。

      • 次に示すような、独立していて有効なPL/SQLブール式。

        TO_CHAR(SYSDATE,'HH24') = '12'
        
      • ブール(TRUEまたはFALSE)値と評価される式。

      • 255文字以内である必要があります。

      • 現行のデータベース・インスタンスからの既存のコンパイルされたPL/SQLファンクションを含む式。完全修飾ファンクションであることを確認してください(schema. function_name)。完全なSQL文は含めないでください。

        アプリケーション・パッケージ・ファンクションまたはスタンドアロン・ファンクションを使用する場合は、ファンクションのGRANT EXECUTE権限のあるDVSYSアカウントを付与する必要があります。これを行うことで、新しいルールを追加するときに発生するエラーが少なくなります。

      • ルールが機能することを確認してください。SQL*Plusで次の文を実行すると、構文をテストできます。

        SELECT rule_expression FROM DUAL;
        

        たとえば、次のルール式を作成したとします。

        SYS_CONTEXT('USERENV','SESSION_USER') != 'SQL*Plus'
        

        この式は、次のようにテストできます。

        SELECT SYS_CONTEXT('USERENV','SESSION_USER') FROM DUAL;
        

      ルール・セット式で使用可能なファンクションについては、次の項を参照してください。

      その他の式の例は、Oracle Database Vaultが提供するルール・セットに定義されているルールを参照してください。これらのルール・セットは、「デフォルトのルール・セット」に記載されています。

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

    「ルール・セットの編集」ページが表示されます。デフォルトで、新しいルールはルール・セットに追加されます。

ルールの編集

ルールへの変更は、そのルールを含むすべてのルール・セットに適用されます。

ルールを編集するには、次のようにします。

  1. 「ルール・セットの編集」ページで、「ルール・セットに関連付けられたルール」にスクロールします。

  2. 編集するルールを選択して、「編集」をクリックします。

  3. 「ルールの編集」ページで、必要に応じてルールを変更します。

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

ルール・セットからのルールの削除

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

ルール・セットからルールを削除するには、次のようにします。

  1. 「ルール・セットの編集」ページで、「ルール・セットに関連付けられたルール」にスクロールします。

  2. 削除するルールを選択して、「削除」をクリックします。

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

ルール・セットからルールを削除しても、そのルールはまだ存在します。必要に応じて、そのルールをその他のルール・セットに関連付けることができます。ルールを削除する場合は、「DVSYS.DBMS_MACADMのルール・セット・プロシージャ」で説明されているDVSYS.DBMS_MACADM.DELETE_RULEファンクションを使用します。たとえば、ルールNight Shiftを削除するには、Database Vault所有者としてSQL*Plusにログインして、次の文を入力します。

EXEC DVSYS.DBMS_MACADM.DELETE_RULE('Night Shift');

既存のルールのルール・セットへの追加

既存のルールをルール・セットに追加するには、次のようにします。

  1. 「ルール・セット」ページで、ルールを追加するルール・セットを選択し、「編集」を選択します。

  2. 「ルール・セットに関連付けられたルール」で「既存のルールの追加」を選択します。

  3. 「既存のルールの追加」ページで、対象のルールを選択して「移動」(すべて移動する場合は「すべて移動」)をクリックし、それらを「選択したルール」リストに移動します。

    [Ctrl]キーを押しながら各ルールをクリックすると、複数のルールを選択できます。

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

ルール・セットの削除

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

ルール・セットを削除するには、次のようにします。

  1. コマンド・ルールなど、その他のDatabase Vaultオブジェクトがルール・セットを参照している場合は、参照を削除します。

    ルール・セットを削除できるのは、そのルール・セットを参照しているその他のDatabase Vaultオブジェクトがない場合のみです。

  2. Oracle Database Vaultの「管理」ページで、「ルール・セット」を選択します。

  3. 「ルール・セット」ページで、削除するルール・セットを選択します。

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

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

    ルール・セットが削除されます。ただし、ルール・セットに関連付けられているルールは削除されません。

ルール・セットの動作

この項では、ルール・セットがどのように機能するかを次の内容で説明します。

Oracle Database Vaultによるルールの評価方法

ルール・セット内のルールは、式の集合として評価されます。「評価オプション」「すべてTrue」に設定されている場合にルールの評価に失敗すると、ルール・セット内の残りのルールの評価は試行されず、その時点で評価が停止します。同様に、「評価オプション」「いずれかTrue」に設定されている場合にルールがTrueと評価されると、評価はその時点で停止します。ルール・セットが無効である場合、Oracle Database Vaultは、ルールを評価せずにルール・セットをTrueと評価します。

ルール・セットでのルールの表示順序の設定によるパフォーマンスの向上

一般的に、ルール・セット内に表示されるルールの順序は、最終結果には影響しません。ルール・セットによってアクションが許可されるか阻止されるかのいずれかです。ただし、この順序はパフォーマンスに影響します。1つのルール内に複数のルールを配置し、ANDまたはOR演算子を使用してルールの優先順位を設定することで、ルールのパフォーマンスを改善できます。

ルール・セット内でのルールのネスト

ルール・セット内に1つ以上のルールをネストできます。たとえば、Is Corporate Network During Maintenanceという、次の2つのタスクを実行するネストされたルールを作成するとします。

  • データベース・セッションが企業ネットワーク内から発生した場合のみ、表の変更を制限します。

  • 午後10時〜午後10時59分の間にスケジュールされているシステム・メンテナンスの時間帯に、表の変更を制限します。

ルールの定義は次のようになります。

DVF.F$NETWORK = 'Corporate' AND TO_CHAR(SYSDATE,'HH24')  '22' AND '23'

これは、ファクタ・ファンクションを使用して作成できます。詳細は、「Oracle Database VaultのPL/SQLファクタ・ファンクション」を参照してください。ファクタの作成方法は、第7章で説明しています。

1人のユーザーを除く全員に適用するルールの作成

1人のユーザー(たとえばスーパー・システム管理者)を除く全員に適用するルールを作成することも可能です。このタイプのルールのルール定義は、次のようになります。

SYS_CONTEXT('USERENV','SESSION_USER') = 'SUPERADMIN_USER' OR additional_rule

現行ユーザーがスーパー・システム管理者の場合、システムでは、additional_ruleは評価されず、ルールはTrueに評価されます。現行ユーザーがスーパー・システム管理者でない場合、ルールの評価はadditional_ruleの評価によって決まります。

チュートリアル: セキュリティ違反の電子メール・アラートの作成

次のチュートリアルでは、ユーザーがメンテナンスの時間帯以外に表を変更しようとするとトリガーされる電子メール・アラートを作成します。それには、メンテナンスの時間帯を設定するルールを作成し、このルールをルール・セットに追加してから、ユーザーに表の変更を許可するコマンド・ルールを作成する必要があります。次に、ルール・セットをこのコマンド・ルールに関連付けます。これにより、ユーザーがメンテナンスの時間帯以外にALTER TABLE SQL文を使用しようとすると、電子メール・アラートが送信されます。

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

手順1: UTL_MAIL PL/SQLパッケージのインストールおよび構成

  1. SYSDBA権限を使用してSYSとしてSQL*Plusにログインし、UTL_MAILパッケージをインストールします。

    sqlplus "sys / as sysdba"
    Enter password: password
    
    @?/rdbms/admin/utlmail.sql
    @?/rdbms/admin/prvtmail.plb
    

    UTL_MAILパッケージにより、電子メールの管理が可能になります。UTL_MAILの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

  2. SMTP_OUT_SERVERパラメータの現行値を調べ、このチュートリアル完了時に元に戻せるように、この値をメモしておきます。

    たとえば、次のようになります。

    SHOW PARAMETER SMTP_OUT_SERVER
    

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

    NAME                    TYPE              VALUE
    ----------------------- ----------------- ----------------------------------
    SMTP_OUT_SERVER         string            some_value.example.com
    
  3. 次のALTER SYSTEM文を発行します。

    ALTER SYSTEM SET SMTP_OUT_SERVER="imap_mail_server.example.com";
    

    imap_mail_serverを、電子メール・ツールのアカウント設定にあるSMTPサーバーの名前に置き換えます。これらの設定を引用符で囲んでください。たとえば、次のようになります。

    ALTER SYSTEM SET SMTP_OUT_SERVER="my_imap_mail_server.example.com"
    
  4. SYSOPER権限を使用してSYSとして接続し、データベースを再起動します。

    CONNECT SYS/AS SYSOPER
    Enter password: password
    
    SHUTDOWN IMMEDIATE
    STARTUP
    
  5. SMTP_OUT_SERVERパラメータの設定が正しいことを確認します。

    CONNECT SYS/ADMIN AS SYSDBA
    Enter password: password
    
    SHOW PARAMETER SMTP_OUT_SERVER
    

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

    NAME                    TYPE              VALUE
    ----------------------- ----------------- ----------------------------------
    SMTP_OUT_SERVER         string            my_imap_mail_server.example.com
    

手順2: 電子メール・セキュリティ・アラートPL/SQLプロシージャの作成

  1. SYSDBA権限を使用してSYSとして接続していることを確認し、Database Vault所有者アカウントに次の権限を付与します。

    たとえば、次のようになります。

    CONNECT SYS/AS SYSDBA
    Enter password: password
    
    GRANT CREATE PROCEDURE, DROP ANY PROCEDURE TO dbvowner;
    GRANT EXECUTE ON UTL_TCP TO dbvowner;
    GRANT EXECUTE ON UTL_SMTP TO dbvowner;
    GRANT EXECUTE ON UTL_MAIL TO dbvowner;
    GRANT EXECUTE ON DBMS_NETWORK_ACL_ADMIN TO dbvowner;
    

    PL/SQLパッケージUTL_TCPUTL_SMTPUTL_MAILおよびDBMS_NETWORK_ACL_ADMINは、これから作成する電子メール・セキュリティ・アラートで使用されます。

  2. Oracle Database所有者(DV_OWNER)アカウントとしてSQL*Plusに接続します。

    たとえば、次のようになります。

    CONNECT dbvowner
    Enter password: password
    
  3. 次のプロシージャを作成します。

    CREATE OR REPLACE PROCEDURE email_alert AS
    msg varchar2(20000) := 'Realm violation occurred for the ALTER TABLE Command Security Policy rule set.
    The time is: ';
    BEGIN
      msg := msg||to_char(SYSDATE, 'Day DD MON, YYYY HH24:MI:SS');
    UTL_MAIL.SEND (
        sender      => 'youremail@example.com',
        recipients  => 'recipientemail@example.com',
        subject     => 'Table modification attempted outside maintenance!',
        message     => msg);
    END email_alert;
    /
    

    youremail@example.comを自分の電子メール・アドレスに置き換え、recipientemail@example.comを通知を受け取るユーザーの電子メール・アドレスに置き換えます。

  4. このプロシージャに対するEXECUTE権限をDVSYSに付与します。

    GRANT EXECUTE ON email_alert TO DVSYS;
    

手順3: ネットワーク・サービス用のアクセス制御リストの構成

UTL_MAILなどのPL/SQLネットワーク・ユーティリティを使用するには、あらかじめ、外部ネットワーク・サービスに対してファイングレイン・アクセスを有効にするアクセス制御リスト(ACL)ファイルを構成する必要があります。このトピックの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

電子メール・アラートのアクセス制御リストを構成するには、次のようにします。

  1. Database Vault所有者としてSQL*Plusにログインし、次のアクセス制御リストおよびその権限定義を作成します。

    BEGIN
     DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
      acl          => 'email_alert_permissions.xml',
      description  => 'Enables permissions for the e-mail alert',
      principal    => 'DBVOWNER',
      is_grant     => TRUE,
      privilege    => 'connect',
      start_date   => null,
      end_date     => null);
    END;
    /
    

    プリンシパル設定のユーザー名は、大文字で正確に入力してください。このチュートリアルでは、Database Vault所有者アカウントの名前(DBVOWNERなど)を入力します。

  2. アクセス制御リストを電子メール・サーバーの送信SMTPネットワーク・ホストに割り当てます。

    BEGIN
     DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
      acl         => 'email_alert_permissions.xml',
      host        => 'SMTP_OUT_SERVER_setting',
      lower_port  => port,
      upper_port  => port);
    END;
    /
    

    この例では、次のようになります。

    • SMTP_OUT_SERVER_setting: 「手順1: UTL_MAIL PL/SQLパッケージのインストールおよび構成」SMTP_OUT_SERVERパラメータに設定したSMTP_OUT_SERVER設定を入力します。この設定は、電子メール・ツールで送信サーバーに指定されている設定と完全に一致させてください。

    • port: 電子メール・ツールで送信サーバーに指定されているポート番号を入力します。通常、この設定は25です。lower_portupper_portの両方の設定に対してこの値を入力します。

  3. 変更をデータベースにコミットします。

    COMMIT;
    
  4. これまでに作成した設定をテストします。

    EXEC EMAIL_ALERT;
    COMMIT;
    

    SQL*Plusに「PL/SQL procedure successfully completed」というメッセージが表示されます。まもなく、メール・サーバーの速度に応じて、電子メール・アラートを受信します。

    ORA-24247エラーに続いてORA-06512エラーが発生する場合は、アクセス制御リスト・ファイルの設定をチェックしてください。

手順4: 電子メール・セキュリティ・アラートを使用するためのルール・セットおよびコマンド・ルールの作成

  1. 次のルール・セットを作成します。

    BEGIN
     DVSYS.DBMS_MACADM.CREATE_RULE_SET(
      rule_set_name    => 'ALTER TABLE Command Security Policy',
      description      => 'This rule set allows ALTER TABLE only during the
                           maintenance period.',
      enabled          => 'Y',
      eval_options     => 1,
      audit_options    => POWER(2,0),
      fail_options     => 2,
      fail_message     => '',
      fail_code        => NULL,
      handler_options  => POWER(2,0),
      handler          => 'dbavowner.email_alert');
    END;
    /
    
  2. 次のようなルールを作成します。

    ここでは、テストする間持続するようにルールを設定します。たとえば、午後2時から午後3時までの時間帯にテストする場合、次のようにルールを作成します。

    BEGIN
     DVSYS.DBMS_MACADM.CREATE_RULE(
      rule_name  => 'Restrict Access to Maintenance Period',
      rule_expr  => 'TO_CHAR(SYSDATE,''HH24'') BETWEEN ''14'' AND ''15''');
    END;
    /
    

    HH2414および15には、二重引用符ではなく、必ず2つの一重引用符を使用してください。コンピュータのシステム時間は、次のSQL文を発行して二重にチェックできます。

    SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL;
    

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

    TO
    --
    14
    

    後から、ルールの動作に問題がなければ、次のように、サイトで通常メンテナンス作業が実行される時間(たとえば、午後7時から午後10時までの間)にルールを更新できます。

    BEGIN
     DVSYS.DBMS_MACADM.UPDATE_RULE(
      rule_name  => 'Restrict Access to Maintenance Period',
      rule_expr  => 'TO_CHAR(SYSDATE,''HH24'') BETWEEN ''19'' AND ''22''');
    END;
    /
    
  3. Restrict Access to Maintenance PeriodルールをALTER TABLE Command Security Policyルール・セットに追加します。

    BEGIN
     DBMS_MACADM.ADD_RULE_TO_RULE_SET(
      rule_set_name => 'ALTER TABLE Command Security Policy',
      rule_name     => 'Restrict Access to Maintenance Period');
    END;
    /
    
  4. 次のコマンド・ルールを作成します。

    BEGIN
     DVSYS.DBMS_MACADM.CREATE_COMMAND_RULE(
      command         => 'ALTER TABLE',
      rule_set_name   => 'ALTER TABLE Command Security Policy',
      object_owner    => 'SCOTT',
      object_name     => '%',
      enabled         => 'Y');
    END;
    /
    
  5. これらの更新をデータベースにコミットします。

    COMMIT;
    

手順5: 電子メール・セキュリティ・アラートのテスト

  1. ユーザーSCOTTとしてSQL*Plusに接続します。

    たとえば、次のようになります。

    CONNECT SCOTT
    Enter password: password
    

    SCOTTアカウントがロックされて無効になっている場合、DV_ACCTMGRロールを持つユーザーが、このアカウントのロックを解除し、新しいパスワードを次のように作成できます。

    ALTER USER SCOTT ACCOUNT UNLOCK IDENTIFIED BY password;
    

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

  2. ユーザーSCOTTとして、テスト表を作成します。

    CREATE TABLE mytest (col1 number);
    
  3. コンピュータのシステム時間を、ALTER TABLE Command Security Policyルール・セットが実行される時間に変更します。

    たとえば、テスト時間帯を午後2時から午後3時の間に設定する場合、次のようにします。

    UNIXシステム: rootとしてログインし、dateコマンドを使用して時間を設定します。たとえば、今日の日付が2007年12月13日だとすると、次のように入力します。

    $ su root
    Password: password
    
    $ date 12131409
    

    Microsoft Windows: 通常画面の右下隅にある時計アイコンをダブルクリックします。「日付と時刻のプロパティ」ウィンドウで、時刻を午後2時に設定し、「OK」をクリックします。

  4. my_test表の変更を試みます。

    ALTER TABLE mytest ADD (col2 number);
    
    Table altered.
    

    SCOTTは、この時間帯にmytest表を変更できます。

  5. システム時間をRestrict Access to Maintenance Period時間外の時刻に再設定します。

  6. SCOTTとしてログインし、再度my_test表の変更を試みます。

    CONNECT SCOTT
    Enter password: password
    
    ALTER TABLE mytest ADD (col3 number);
    

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

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

    SCOTTmytest表を変更できません。まもなく、「Table modification attempted outside maintenance!」という件名で、次のようなメッセージの電子メールを受信します。

    Realm violation occurred for the ALTER TABLE Command Security Policy rule set.
    The time is: Wednesday 28 NOV, 2007 14:24:25
    
  7. システム時間を正しい時刻に再設定します。

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

  1. Oracle Database所有者(DV_OWNER)アカウントとしてSQL*Plusに接続します。たとえば、次のようになります。

    CONNECT dbvowner
    Enter password: password
    
  2. 次に示した順序で、Oracle Database Vaultルール・コンポーネントを削除します。

    SQL> EXEC DVSYS.DBMS_MACADM.DELETE_RULE_FROM_RULE_SET
    ('ALTER TABLE Command Security Policy', 'Restrict Access to Maintenance Period');
    
    EXEC DVSYS.DBMS_MACADM.DELETE_RULE('Restrict Access to Maintenance Period');
    
    EXEC DVSYS.DBMS_MACADM.DELETE_COMMAND_RULE('ALTER TABLE', 'SCOTT', '%');
    
    EXEC DVSYS.DBMS_MACADM.DELETE_RULE_SET('ALTER TABLE Command Security Policy');
    
  3. email_alert PL/SQLプロシージャを削除します。

    DROP PROCEDURE email_alert;
    
  4. アクセス制御リストを削除します。

    EXEC DBMS_NETWORK_ACL_ADMIN.DROP_ACL ('email_alert_permissions.xml');
    
  5. ユーザーSCOTTとして接続し、mytest表を削除します。

    CONNECT SCOTT
    Enter password: password
    
    DROP TABLE mytest;
    
  6. SYSDBA権限を使用してSYSとして接続し、Oracle Database所有者(DV_OWNER)アカウントから、PL/SQLパッケージUTL_TCPUTL_SMTPおよびUTL_MAILに対するEXECUTE権限を取り消します。

    たとえば、次のようになります。

    REVOKE EXECUTE ON UTL_TCP FROM dbvowner;
    REVOKE EXECUTE ON UTL_SMTP FROM dbvowner;
    REVOKE EXECUTE ON UTL_MAIL FROM dbvowner;
    REVOKE EXECUTE ON DBMS_NETWORK_ACL_ADMIN from dbvowner;
    
  7. SMTP_OUT_SERVERパラメータを元の値に設定します。

    たとえば、次のようになります。

    ALTER SYSTEM SET SMTP_OUT_SERVER="some_value.example.com";
    
  8. SYSOPER権限を使用してSYSとして接続し、データベースを再起動します。

    CONNECT SYS/AS SYSOPER
    Enter password: password
    
    SHUTDOWN IMMEDIATE
    STARTUP
    

ルール・セット設計のガイドライン

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

ルール・セットのパフォーマンスへの影響

一般的に、ルールが多く複雑になるほど、これらのルール・セットで制御されている特定の操作を実行する際のパフォーマンス・オーバーヘッドが増加します。たとえば、SELECT文を制御するルール・セットに大量のルールが含まれる場合は、パフォーマンスが大幅に低下する可能性があります。

多数のルールが必要なルール・セットがある場合、すべてのルールを単一のPL/SQLスタンドアロンまたはパッケージ・ファンクションに定義されているロジックに移動すると、パフォーマンスが向上します。

ただし、ルールが他のルール・セットに使用されている場合、システムのパフォーマンスにはほとんど影響ありません。

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

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

表5-1に、ルール・セットおよびそのルールの分析に便利なOracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、第16章「Oracle Database Vaultレポート」を参照してください。

表5-1 ルール・セットに関連するレポート

レポート 説明

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


ルールが定義されていない、または有効でないルール・セットが表示されます。

「「セキュア・アプリケーション構成の問題」レポート」


不完全または無効なルール・セットのあるセキュア・アプリケーション・ロールが表示されます。

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


不完全または無効なルール・セットが表示されます。


表5-2に、既存のルールおよびルール・セットに関する情報を提供するデータ・ディクショナリ・ビューを示します。

表5-2 ルールおよびルール・セットに使用されるデータ・ディクショナリ・ビュー

データ・ディクショナリ・ビュー 説明

「DBA_DV_RULEビュー」


定義済のルールが表示されます。

「DBA_DV_RULE_SETビュー」


作成済のルール・セットが表示されます。

「DBA_DV_RULE_SET_RULEビュー」


既存のルール・セットに関連付けられているルールが表示されます。