7.4 Oracle Machine Learning for SQLのモデルとデータへのアクセス制御
リストされているステップに従うことで、Oracle Machine Learning for SQLユーザーを作成し、必要な権限を付与できます。
7.4.1 Oracle Machine Learning for SQLユーザーの作成
OML4SQLユーザーは、機械学習操作を実行する権限を持つデータベース・ユーザー・アカウントです。
例7-6 SQL*Plusでのデータベース・ユーザーの作成
- 
                           システム権限を使用してSQL*Plusにログインします。 Enter user-name: sys as sysdba Enter password: password
- 
                           oml_userというユーザーを作成するには、次のコマンドを入力します。選択したパスワードを指定します。CREATE USER oml_user IDENTIFIED BY password DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON USERS; Commit;USERSおよびTEMP表領域は、Oracle Databaseに含まれています。USERSは主にデモ・ユーザーによって使用されるため、OML4SQLの例についてで説明されている例の実行に適しています。TEMPは、ほとんどのデータベース・ユーザーによって共有される一時表領域です。ノート: OML4SQLユーザー用の表領域は、システム・ロードとシステム・リソースに応じて、標準的なDBAの手順に従って割り当てる必要があります。 
- 
                           oml_userとしてログインするには、次のコマンドを入力します。CONNECT oml_user Enter password:password
関連項目:
CREATE USER文の完全な構文については、『Oracle Database SQL言語リファレンス』を参照してください。
                        
7.4.1.1 Oracle Machine Learning for SQLの権限の付与
CREATE MINING MODELは、モデルに対して操作を作成および実行するために必要な権限です。その他の機械学習権限の一部は、GRANT文を発行することで割り当てることができます。 
                     
独自のスキーマにモデルを作成するには、CREATE MINING MODEL権限を所有している必要があります。所有しているモデルに対しては、どのような操作も実行できます。これには、モデルの適用、コスト・マトリックスの追加、モデルの名前の変更、およびモデルの削除が含まれます。 
                        
次の例のGRANT文では、基本的な機械学習権限のセットをoml_userアカウントに割り当てます。これらの権限のうちの一部はすべての機械学習操作に必要とは限りませんが、これらすべてをグループとして付与することをお薦めします。
                        
特定の機械学習操作の有効化または制限を行うには、追加のシステム権限およびオブジェクト権限が必要です。
次の表に、OML4SQLの例の実行に必要なシステム権限をリストします。
表7-2 dmshgrants.sqlによってOML4SQLユーザーに付与されるシステム権限
| 権限 | OML4SQLユーザーに次の操作を許可 | 
|---|---|
| 
 | データベース・セッションへのログイン | 
| 
 | 表( | 
| 
 | ビュー( | 
| 
 | OML4SQLモデルの作成 | 
| 
 | 
 | 
例7-7 機械学習に必要な権限
この例では、必要な権限をユーザーoml_userに付与します。
GRANT CREATE SESSION TO oml_user;
GRANT CREATE TABLE TO oml_user;
GRANT CREATE VIEW TO oml_user;
GRANT CREATE MINING MODEL TO oml_user;
GRANT EXECUTE ON CTXSYS.CTX_DDL TO oml_user;
自分のスキーマ内にないデータに対してはREADまたはSELECT権限が必要です。たとえば、次の文は、sh.customers表にSELECTアクセス権を付与します。 
                        
GRANT SELECT ON sh.customers TO oml_user;
7.4.2 Oracle Machine Learning for SQLのためのシステム権限
システム権限は、データベース内の特定のアクションを実行する権限または1つのタイプのスキーマ・オブジェクトに対してアクションを実行する権限を付与します。たとえば、表領域を作成する権限や、データベース内の任意の表から行を削除する権限などがシステム権限です。
適切なシステム権限を所有している場合、他のスキーマの機械学習モデルに対しても特定の操作を実行できます。たとえば、CREATE ANY MINING MODELを所有している場合、他のスキーマにモデルを作成できます。SELECT ANY MINING MODELを所有している場合、他のスキーマにあるモデルを適用できます。モデルにコメントを追加するには、COMMENT ANY MINING MODEL権限を所有している必要があります。
                     
システム権限を付与するには、ADMIN OPTIONを指定したシステム権限またはGRANT ANY PRIVILEGEシステム権限が付与されている必要があります。
                     
次の表に示されているシステム権限は、機械学習モデルに対する操作を制御します。
表7-3 Oracle Machine Learning for SQLのためのシステム権限
例7-8 Oracle Machine Learning for SQLのシステム権限の付与
次の文は、oml_userによる任意のスキーマ内のデータのスコアリングおよびモデルの詳細の表示を許可します(SELECTアクセス権がデータに付与されている場合)。ただし、oml_userはoml_userスキーマにのみモデルを作成できます。
                     
GRANT CREATE MINING MODEL TO oml_user; GRANT SELECT ANY MINING MODEL TO oml_user;
次の文は、他のスキーマ内のスコアリングまたはモデルの詳細の表示の権限を取り消します。この文が実行された場合、oml_userはoml_userスキーマでのみ機械学習操作を実行できます。
                     
REVOKE SELECT ANY MINING MODEL FROM oml_user;
7.4.3 Oracle Machine Learning for SQLのモデルのオブジェクト権限
機械学習のオブジェクト権限について学習します。
オブジェクト権限は、特定のスキーマ・オブジェクトに対して特定のアクションを実行する権限を付与します。たとえば、SH.PRODUCTS表から行を削除する権限は、オブジェクト権限の例です。
                     
ユーザーには、自身のスキーマに含まれるスキーマ・オブジェクトに対するオブジェクト権限がすべて自動的に付与されています。ユーザーは、自身のスキーマのオブジェクトに対するオブジェクト権限を、他のユーザーまたはロールに付与できます。
次の表に示されているオブジェクト権限は、特定の機械学習モデルに対する操作を制御します。
表7-4 Oracle Machine Learning for SQLのモデルのオブジェクト権限
| オブジェクト権限 | 許可される操作 | 
|---|---|
| 
 | |
| 
 | 
例7-9 Oracle Machine Learning for SQLのモデルに対するオブジェクト権限の付与
次の文は、oml_userによるsales表へのモデルtestmodelの適用を許可し、適用ごとに異なるコスト・マトリックスを指定します。ユーザーoml_userは、モデルtestmodelの名前を変更することもできます。testmodelモデルおよびsales表は、oml_userスキーマ内ではなく、shスキーマ内にあります。 
                     
GRANT SELECT ON MINING MODEL sh.testmodel TO oml_user; GRANT ALTER ON MINING MODEL sh.testmodel TO oml_user; GRANT SELECT ON sh.sales TO oml_user;
次の文は、oml_userがtestmodelのコスト・マトリックスの名前の変更またはコスト・マトリックスの変更を行うのを防ぎます。ただし、oml_userは引き続きtestmodelをsales表に適用できます。
                     
REVOKE ALTER ON MINING MODEL sh.testmodel FROM oml_user;