見出し画像

OracleDBでの権限とロールの話

こんにちは。
ALH開発エンジニアのR.Kです。

以前『Oracle Database SQL 受験レポート』の記事を書きましたが、

今回は、そんなOracle DBにおける権限とロールの話です。


初めに

現場でOracleデータベースを操作している際に「権限がありません」といった文言が表示され、やりたい操作ができないことがしばしばありました。
権限のことは知ってはいましたが、細かなことは調べたことがなかったのでこれを機会に調べてみました。
調べたことをまとめましたので、少しでも参考になれば幸いです。

権限とは

 Oracleデータベースでは、ユーザーが*特定の操作を実行する場合にそれぞれの操作に対応した権限が必要になります。
 そして権限には大きく分けて、システム権限オブジェクト権限があり、権限は人に付与することと、人から取り消すことができます。
 この権限がないとデータベースにアクセスすることも、表の作成をすることもできませんので注意です。

*特定の操作:データベースに接続する、表を作成する、データを検索するなど

システム権限

システム権限とは
・データベースにそのものに対する操作を制御する権限
 例)データベースにログインする→CREATE SESSION権限
   表を作成する→CREATE TABLE権限
・システム権限を*付与する場合はGRANTコマンドを使用する
 →付与する場合は別途ADMIN OPTIONが必要
・システム権限を*取り消す場合はREVOKEコマンドを使用する

*付与する場合:GRANT <システム権限名> TO <付与するユーザー> (WITH ADMIN OPTION);
取り消す場合:REVOKE <システム権限名> FROM <取り消すユーザー>;

システム権限のイメージ

オブジェクト権限

オブジェクト権限とは
・他ユーザーが所有するオブジェクト(表、ビューなど)に対する操作を制御する権限

例)対象の表へ検索する→SELECT権限
   対象の表へデータを追加する→INSERT権限
・オブジェクト権限を*付与する場合はGRANTコマンドを使用する
 →付与する場合は別途GRANT OPTIONが必要
・オブジェクト権限を*取り消す場合はREVOKEコマンドを使用する
・自分が所有する(作成した)オブジェクトへの全ての操作は権限が不要

*付与する場合:GRANT <オブジェクト権限名> ON <オブジェクト名> TO <付与するユーザー> (WITH GRANT OPTION);
取り消す場合:REVOKE <システム権限名> ON <オブジェクト> FROM <取り消すユーザー>;

オブジェクト権限のイメージ

管理権限(特殊なシステム権限)

管理権限とは
・システム権限の中には通常の権限とは異なる扱い方がされる権限のこと
 →分類上はシステム権限であるが、管理色が強いので管理権限と呼ばれる
・主な管理権限はSYSDBA権限とSYSOPER権限(権限の強さSYSDBA>SYSOPER)

ロールとは

複数の権限を1つにまとめて取り扱いやすくしたもの(権限のグループ化)
で、ロールは自分で作成することができ、権限の追加・削除ができ、またロールを他ユーザーに付与することができます(※ロールに関するシステム権限が必要)

 例)ロールを作成する/削除する→CREATE ROLEコマンド/DROP ROLEコマンド
   ロールへ権限を付与する/取り消す→GRANTコマンド/REVOKEコマンド
   ロールを付与する/取り消す→GRANTコマンド/REVOKEコマンド

さらにロールの中に別のロールを付与することもできます。

事前定義済みロール

事前定義済みロールとは
・Oracleデータベースを作成すると自動的に作成されるロールのこと

主な定義済みロール

権限とロールの違い

権限

権限の場合
・権限を付与する操作を3回行わなければならない
・別のユーザーに同じ権限を付与する場合も3回の操作が必要

ロール

ロールの場合
・ロールを作成してしまえば操作は1回のみ
・別のユーザーに同じ権限を付与する場合でも1回の操作のみ

参考:ふたつのユーザー

SYSユーザーとSYSTEMユーザー
・Oracleデータベースを作成すると自動作成される管理用ユーザーのこと
・作成と同時にDBAロール(ほぼ全てのシステム権限が含まれているロール)が付与されている
・管理用ユーザーなので表を操作する際などには使用しない
・SYSユーザーとSYSTEMユーザーの違い(権限の強さSYS>SYSTEM)

まとめ

・Oracleデータベース上で特定の操作をするには対応する権限が必要
・権限にはシステム権限とオブジェクト権限の2つがある
  →権限の数は非常に多いので都度調べてみてください!
・ロールを使用すると、複数の権限をまとめて取り扱うことができる
・デフォルトで管理用のSYS/SYSTEMユーザーが設定されている
  →取り扱いに注意!





↓ ↓ ↓ 採用サイトはこちら ↓ ↓ ↓


↓ ↓ ↓ ALHについてはこちら ↓ ↓ ↓


↓ ↓ ↓ もっとALHについて知りたい? ↓ ↓ ↓