8.4 マイニング・モデルおよびデータへのアクセスの制御

データ・マイニング・ユーザーの作成方法および必要な権限の付与方法について理解します。

8.4.1 データ・マイニング・ユーザーの作成

データ・マイニング・ユーザーの作成方法について説明します。

データ・マイニング・ユーザーとは、データ・マイニング操作を実行するための権限を持つデータベース・ユーザー・アカウントです。例8-6では、データベース・ユーザーの作成方法を示しています。例8-7では、ユーザーにデータ・マイニング権限を割り当てる方法を示しています。

ノート:

データ・マイニングのサンプル・プログラム用にユーザーを作成するには、「データ・マイニングのサンプル・プログラム」で説明されている2つの構成スクリプトを実行する必要があります。

例8-6 SQL*Plusでのデータベース・ユーザーの作成

  1. システム権限を使用してSQL*Plusにログインします。

        Enter user-name: sys as sysdba
        Enter password: password
    
  2. dmuserというユーザーを作成するには、次のコマンドを入力します。選択したパスワードを指定します。

    CREATE USER dmuser IDENTIFIED BY password
           DEFAULT TABLESPACE USERS
           TEMPORARY TABLESPACE TEMP
           QUOTA UNLIMITED ON USERS;
    Commit;
    

    USERS表領域およびTEMP表領域は、データベース・メディアに付属の事前構成済データベースに含まれています。USERSは通常、デモ・ユーザーによって使用され、「データ・マイニングのサンプル・プログラム」で説明されているサンプル・プログラムの実行に適しています。TEMPは、ほとんどのデータベース・ユーザーによって共有される一時表領域です。

    ノート:

    データ・マイニング・ユーザー用の表領域は、システム・ロードとシステム・リソースに応じて、標準的なDBAの手順に従って割り当てる必要があります。

  3. dmuserとしてログインするには、次を入力します。

    CONNECT dmuser
    Enter password: password

関連項目:

CREATE USER文の完全な構文については、『Oracle Database SQL言語リファレンス』を参照してください。

8.4.1.1 データ・マイニングの権限の付与

独自のスキーマにモデルを作成するには、CREATE MINING MODEL権限を所有している必要があります。所有しているモデルに対しては、どのような操作も実行できます。これには、モデルの適用、コスト・マトリックスの追加、モデルの名前の変更、およびモデルの削除が含まれます。

次の例のGRANT文では、基本的なデータ・マイニング権限のセットをdmuserアカウントに割り当てます。これらの権限のうち一部はどのマイニング操作にも必要ありませんが、これらすべてをグループとして付与することをお薦めします。

特定のマイニング操作の有効化または制限を行うには、追加のシステム権限およびオブジェクト権限が必要です。

例8-7 データ・マイニングに必要な権限

GRANT CREATE MINING MODEL TO dmuser;
GRANT CREATE SESSION TO dmuser;
GRANT CREATE TABLE TO dmuser;
GRANT CREATE VIEW TO dmuser;
GRANT EXECUTE ON CTXSYS.CTX_DDL TO dmuser;

自分のスキーマ内にないデータに対してはREADまたはSELECT権限が必要です。たとえば、次の文は、sh.customers表にSELECTアクセス権を付与します。

GRANT SELECT ON sh.customers TO dmuser;

8.4.2 データ・マイニングのシステム権限

マイニング・モデルに対する操作を制御する様々な権限について説明します。

システム権限は、データベース内の特定のアクションを実行する権限または1つのタイプのスキーマ・オブジェクトに対してアクションを実行する権限を付与します。たとえば、表領域を作成する権限や、データベース内の任意の表から行を削除する権限などがシステム権限です。

適切なシステム権限を所有している場合、他のスキーマのマイニング・モデルに対しても特定の操作を実行できます。たとえば、CREATE ANY MINING MODELを所有している場合、他のスキーマにモデルを作成できます。SELECT ANY MINING MODELを所有している場合、他のスキーマにあるモデルを適用できます。モデルにコメントを追加するには、COMMENT ANY MINING MODEL権限を所有している必要があります。

システム権限を付与するには、ADMIN OPTIONを指定したシステム権限またはGRANT ANY PRIVILEGEシステム権限が付与されている必要があります。

次の表に示されているシステム権限は、マイニング・モデルに対する操作を制御します。

表8-2 データ・マイニングのシステム権限

システム権限 許可される操作

CREATE MINING MODEL

ユーザー自身のスキーマへマイニング・モデルを作成する。

CREATE ANY MINING MODEL

任意のスキーマへマイニング・モデルを作成する。

ALTER ANY MINING MODEL

任意のスキーマ内の任意のマイニング・モデルの名前またはコスト・マトリックスを変更する。

DROP ANY MINING MODEL

任意のスキーマ内のマイニング・モデルを削除する。

SELECT ANY MINING MODEL

任意のスキーマ内のマイニング・モデルの適用および任意のスキーマ内のモデルの詳細の表示を行う。

COMMENT ANY MINING MODEL

任意のスキーマ内の任意のマイニング・モデルへコメントを追加する。

AUDIT_ADMINロール

任意のスキーマ内の任意のマイニング・モデルの監査証跡を生成する。(詳細は、『Oracle Databaseセキュリティ・ガイド』を参照。)

例8-8 データ・マイニングのシステム権限の付与

次の文は、dmuserによる任意のスキーマ内のデータのスコアリングおよびモデルの詳細の表示を許可します(SELECTアクセス権がデータに付与されている場合)。ただし、dmuserがモデルを作成できるのはdmuserスキーマ内のみです。

GRANT CREATE MINING MODEL TO dmuser;
GRANT SELECT ANY MINING MODEL TO dmuser;

次の文は、他のスキーマ内のスコアリングまたはモデルの詳細の表示の権限を取り消します。この文が実行されると、dmuserがデータ・マイニング操作を実行できるのはdmuserスキーマ内のみになります。

REVOKE SELECT ANY MINING MODEL FROM dmuser;

8.4.3 マイニング・モデルのオブジェクト権限

オブジェクト権限は、特定のスキーマ・オブジェクトに対して特定のアクションを実行する権限を付与します。たとえば、SH.PRODUCTS表から行を削除する権限は、オブジェクト権限の例です。

ユーザーには、自身のスキーマに含まれるスキーマ・オブジェクトに対するオブジェクト権限がすべて自動的に付与されています。ユーザーは、自身のスキーマのオブジェクトに対するオブジェクト権限を、他のユーザーまたはロールに付与できます。

次の表に示されているオブジェクト権限は、特定のマイニング・モデルに対する操作を制御します。

表8-3 マイニング・モデルのオブジェクト権限

オブジェクト権限 許可される操作

ALTER MINING MODEL

特定のマイニング・モデル・オブジェクトの名前またはコスト・マトリックスを変更する。

SELECT MINING MODEL

特定のマイニング・モデル・オブジェクトの適用およびそのモデルの詳細表示を行う。

例8-9 マイニング・モデルに対するオブジェクト権限の付与

次の文は、dmuserによるsales表へのモデルtestmodelの適用を許可し、適用ごとに異なるコスト・マトリックスを指定します。ユーザーdmuserは、モデルtestmodelの名前を変更することもできます。testmodelモデルおよびsales表は、dmuserスキーマ内ではなく、shスキーマ内にあります。

GRANT SELECT ON MINING MODEL sh.testmodel TO dmuser;
GRANT ALTER ON MINING MODEL sh.testmodel TO dmuser;
GRANT SELECT ON sh.sales TO dmuser;

次の文は、dmusertestmodelのコスト・マトリックスの名前の変更またはコスト・マトリックスの変更を行うのを防ぎます。ただし、dmuserは引き続きtestmodelsales表に適用できます。

REVOKE ALTER ON MINING MODEL sh.testmodel FROM dmuser;