2011年6月3日金曜日

ユーザと権限

実運用のデータベースでは、強力な権限をもつSYSTEMユーザやSYSユーザで操作は好ましくなりません。
どのようなユーザが、どこまでデータを利用できるのか、を明確にすることが大事です。

■管理者ユーザと一般ユーザ
Oracleの管理者ユーザはDBAと呼ばれ、SYSユーザ・SYSTEMユーザがそれにあたります。

一般ユーザは、管理者によって作成されるユーザのことです。
権限を与えない限りは、データベースに対して何の操作もできません。
ユーザを作成するのは、下記のコマンドです(SYSTEMユーザまたはSYSユーザでSQL*Plusに接続します)

SQL> CREATE USER ユーザ名 IDENTIFIED BY パスワード;


■権限
Oracleには、システム権限とオブジェクト権限という2種類があります。

システム権限
データベースの操作に対する許可を与えます。
SELECTやDROPといった操作ができるようになります。

システム権限を付与するには、下記のコマンドを使います。
SQL> GRANT システム権限名 TO ユーザ名

システム権限名としては、ざっと以下のものがあります(本当はもっと複雑で多いけども省略)
・CREATE SESSION(データベースに接続できる権限)
・CREATE TABLE(表を作成できる権限)
・CREATE ANY TABLE(別のスキーマも含めて表を作成できる権限)
・SYSDBA(データベースの起動・停止、オブジェクトの作成など何でもできる権限)
・ALL PRIVILEGES(何でもできる権限)


オブジェクト権限
特定のユーザのオブジェクトを利用する許可を与えます。
つまり、別のユーザのスキーマを利用することができます。

オブジェクト権限を付与するには、下記のコマンドを使います。
SQL> GRANT オブジェクト権限名 ON オブジェクト名 TO ユーザー名

オブジェクト権限名としは、ざっと以下のものがあります
・SELECT(検索)
・INSERT(挿入)
・ALTER(変更)
・INDEX(索引作成)


権限の確認
与えられている権限は下記のようにして確認できます。
権限を見たいユーザでSQL*Plusにつなぐ。
SQL> SELECT * FROM USER_SYS_PRIVS;


権限の削除
設定されている権限を削除します。

SQL> REVOKE 権限 [ON オブジェクト名] FROM 対象ユーザ名;

オブジェクト権限を削除するときに、[ON オブジェクト名] を指定します。
権限に、ALL PRIVIREGES を指定すると、全ての権限を削除することができます。

参考) 基礎からのOracle

0 件のコメント:

コメントを投稿