権限とロールでユーザー管理

※ポイント※
     Oracleデータベースにおける権限には、システム権限とオブジェクト権限の2種類がある。
     複数の権限をグループ化して管理するためのものとして、ロールがある。

     すべての権限やロールを覚える必要はないが、特殊な管理方法などを含めて理解しておく。

 システム権限 

ユーザーに、データベースに対する特定の操作(テーブル作成、ユーザー作成など)を許可するもの。

システム権限の中には、「ANY」キーワードが含まれているものがある。
これは、他スキーマにも権限が及ぶことを意味している。

例えばCREATE TABLEシステム権限では、自分のスキーマにテーブルを作成することができる。
CREATE ANY TABLEシステム権限の場合はこれに加え、他スキーマとしてテーブルを作成することもできる。

システム権限を付与する構文

GRANT 権限名 TO {ユーザー名 | PUBLIC | ロール名}
[WITH ADMIN OPTION]

ADMIN OPTIONを使用すると、付与されたユーザーは、別のユーザーにその権限を付与できるようになる。

 オブジェクト権限 

特定のオブジェクトに対する操作(他スキーマのオブジェクトへのアクセスなど)を許可するもの。

ユーザーは、自分のスキーマへのアクセスはすべて許可されている。
ほかのスキーマにアクセスするためには、ANYキーワードを含むシステム権限、もしくはオブジェクト権限が必要。

オブジェクト権限を付与する構文

GRANT {権限名 | ALL} ON オブジェクト名
TO {ユーザー名 | PUBLIC | ロール名}
[WITH GRANT OPTION]

ALLを使用すると、対象となるオブジェクトタイプに応じたすべての権限が付与される。
GRANT OPTIONを使用すると、付与されたユーザーは、別のユーザーに対してその権限を付与することができる。

 ロール 

権限をグループ化するには、ロールを使用する。
ロールに権限を付与し、そのロールをユーザーに付与することで、
システム権限とオブジェクト権限を個別に付与するのではなく、グループ化して管理することが可能。

ロールの利点として、次のようなものがある。
・ 簡単な権限管理 

・ 動的な権限管理 
セッション確立後に、直接付与されたシステム権限とオブジェクト権限を変更しても、既存セッションには変更が反映されない。
ロールを使用して権限を変更すると、既存セッションにも変更が反映される。

・ 権限の選択的な利用 
ユーザーにデフォルトロールを設定することで、ログイン時から有効なロールを限定できる。
また、SET ROLEコマンドを使用して一時的に使用可能にしたり使用禁止にしたりすることもできる。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License