特定のユーザ,アプリケーションで操作を制限する(PRODUCT_USER_PROFILE)
特定のユーザ,アプリケーションで操作を制限する(PRODUCT_USER_PROFILE)
0.改訂履歴
1.はじめに
このドキュメントでは,PRODUCT_USER_PROFILEを使って,scottユーザがselect出来ないように設定してみる手順を説明する.
2.現在の状態を確認
- scottユーザで接続して,empテーブルをselectしてみる.
SQL> connect scott/tiger@testdb
Connected.
SQL> select count(*) from emp;
COUNT(*)
----------
14
SQL>
|
- selectできている.
- 次に,systemユーザで接続して,PRODUCT_USER_PROFILEテーブルの中身を確認してみる.
SQL> connect system/systempassword@testdb
Connected.
SQL> select * from product_user_profile;
no rows selected
SQL>
|
3.制限データを作成する
- PRODUCT_USER_PROFILEテーブルにデータを追加する.
SQL> insert into product_user_profile
2 (
3 product,userid,attribute,char_value
4 )
5 values
6 (
7 'SQL*Plus','SCOTT','SELECT','DISABLED'
8 )
9 ;
1 row created.
SQL>
|
SQL> desc product_user_profile
Name Null? Type
----------------------------------------- -------- ----------------------------
PRODUCT NOT NULL VARCHAR2(30)
USERID VARCHAR2(30)
ATTRIBUTE VARCHAR2(240)
SCOPE VARCHAR2(240)
NUMERIC_VALUE NUMBER(15,2)
CHAR_VALUE VARCHAR2(240)
DATE_VALUE DATE
LONG_VALUE LONG
SQL> col product format a10
SQL> col userid format a10
SQL> col attribute format a10
SQL> col char_value format a10
SQL> select product,userid,attribute,char_value from product_user_profile;
PRODUCT USERID ATTRIBUTE CHAR_VALUE
---------- ---------- ---------- ----------
SQL*Plus SCOTT SELECT DISABLED
SQL>
|
- みて判るとおり,
- 「SQL*Plusで接続してきたscottユーザは,select処理を実行できない」
- となっている.
4.制限されたか確認してみる
- SQL*Plusを使って,scottユーザで接続する.
SQL> connect scott/tiger@testdb
Connected.
SQL>
|
SQL> select count(*) from emp;
SP2-0544: invalid command: select
SQL>
|
- select処理はinvalidだと表示された!
- 次に,先ほど作成したPRODUCT_USER_PROFILEテーブルのデータを削除して,再度scottユーザで接続してselectする.
SQL> connect system/systempasswordnotoracle@testdb
Connected.
SQL> delete product_user_profile;
1 row deleted.
SQL> connect scott/tiger@testdb
Connected.
SQL> select count(*) from emp;
COUNT(*)
----------
14
SQL>
|
5.接続しているモジュール名を調べる
- PRODUCT_USER_PROFILEを使って制限する場合,アプリケーション名を知らないとデータを作れない.
- よって,次のSQL文で現在接続しているモジュール名について確認する事が出来る.
SQL> select module from v$session where module is not null;
MODULE
------------------------------------------------
SQL*Plus
SQL>
|