Oracle Database(オラクルデータベース)の運用や開発において、セキュリティを担保する上で欠かせないのが「権限(Privilege)」の管理です。 しかし、Oracleの権限には大きく分けて「システム権限」と「オブジェクト権限」の2種類があり、「どちらをどう付与すればいいのか」「それぞれ何ができるのか」と混同してしまいがちです。
本記事では、この「システム権限」と「オブジェクト権限」の明確な違いをはじめ、権限の付与(GRANT)や取り消し(REVOKE)の基本構文、さらにはロール(ROLE)を活用した効率的な権限管理の方法まで、初心者にも分かりやすく解説します。
結論:Oracleのシステム権限とオブジェクト権限の違い
まずは結論として、Oracle Databaseにおける「システム権限」と「オブジェクト権限」の違いを以下の表にまとめます。
| 比較項目 | システム権限 | オブジェクト権限 |
|---|---|---|
| 対象範囲 | データベース全体・システム単位 | 特定のオブジェクト(テーブル、ビュー等) |
| 権限の内容 | オブジェクトの作成、ユーザー管理、セッション確立など | 特定オブジェクトへのデータの検索・追加・更新・削除など |
| 構文の特徴 | GRANT [権限] TO [ユーザー] | GRANT [権限] ON [オブジェクト] TO [ユーザー] |
| 誰が与えるか | 主にデータベース管理者(DBA) | 対象オブジェクトの所有者(またはGRANT ANY OBJECT PRIVILEGEを持つ人) |
| 再付与オプション | WITH ADMIN OPTION | WITH GRANT OPTION |
| 取消時の連鎖 | 連鎖しない(第三者に付与した権限は残る) | 連鎖する(第三者に付与した権限も同時に消える) |
「何をすることができるか(DB全体に影響する操作)」を制御するのがシステム権限であり、「誰のどのデータに触れるか」を制御するのがオブジェクト権限です。
それぞれの詳しい解説や、付与・取り消しの具体例については、以降のセクションで順番に解説します。
はじめに:Oracle Databaseの権限管理(Privilege)とは?
Oracle Databaseにおいて、セキュリティを担保し、各ユーザーが適切な操作だけを行えるように管理する仕組みが「権限(Privilege)」です。 権限が適切に設定されていないと、誤って重要なデータを削除してしまったり、不正アクセスを許してしまうリスクがあります。
Oracleの権限は、大きく分けて以下の2種類が存在します。
- システム権限 (System Privileges)
- オブジェクト権限 (Object Privileges)
この記事では、これら2つの権限の違いについて、分かりやすく解説します。
Oracleのシステム権限(System Privileges)とは?全体に影響する強力な権限
システム権限とは、「データベース全体に対する特定の操作」を実行するための権限です。 データベースの構造を変更したり、セッションを確立したり、システム全体に影響を及ぼすようなアクションを許可する際に使用します。
主なシステム権限の種類・具体例(CREATE SESSIONなど)
システム権限は非常に種類が多く、100種類以上の権限が用意されています。代表的なものは以下の通りです。
CREATE SESSION: データベースに接続(ログイン)する権限CREATE TABLE: 自身のスキーマにテーブルを作成する権限CREATE USER: 新しいユーザーを作成する権限DROP ANY TABLE: データベース内の任意のテーブルを削除する権限ALTER SYSTEM: データベースのシステム設定を変更する権限
なお、DBA はシステム権限ではなく「ロール(ROLE)」です。多くのシステム権限を含む事前定義ロールであり、データベース管理者向けに用意されています。ロールについては後述します。
「ANY」が付く権限(例: SELECT ANY TABLE)は、他人のスキーマのオブジェクトにもアクセスできる非常に強力な権限です。付与する際には十分な注意が必要です。
システム権限の付与(GRANT)と取り消し(REVOKE)の方法
システム権限の付与には GRANT 文を、取り消しには REVOKE 文を使用します。
付与(GRANT)の例
-- ユーザー「test_user」にデータベース接続とテーブル作成の権限を付与するGRANT CREATE SESSION, CREATE TABLE TO test_user;【重要】権限の再付与(WITH ADMIN OPTION)と取り消し時の動作
システム権限を他者に再付与できるようにするには、WITH ADMIN OPTION を指定して付与します。
特筆すべき点として、このオプションで付与された権限を後から REVOKE で取り消しても、そのユーザーが第三者に付与した権限は連鎖的に取り消されません。
取り消し(REVOKE)の例
-- ユーザー「test_user」からテーブル作成の権限を取り消すREVOKE CREATE TABLE FROM test_user;Oracleのオブジェクト権限(Object Privileges)とは?特定データに対する権限
オブジェクト権限とは、「特定のデータベース・オブジェクト(テーブル、ビュー、順序、プロシージャなど)に対する特定の操作」を実行するための権限です。 別のユーザーが作成したテーブルのデータを読み書きしたい場合などに必要になります。
主なオブジェクト権限の種類・具体例(SELECT、UPDATEなど)
オブジェクトの種類によって付与できる権限が決まっています。代表的なものは以下の通りです。
- テーブル:
SELECT,INSERT,UPDATE,DELETE,ALTER,INDEX,REFERENCES - ビュー:
SELECT,INSERT,UPDATE,DELETE(ALTER・INDEXindex [インデックス]検索を高速化するためのデータ構造・REFERENCESは不可) - 順序(シーケンス):
SELECT,ALTER - プロシージャ / ファンクション:
EXECUTE
たとえば、Aさんが作成した EMPLOYEES テーブルを、Bさんが検索(SELECT)したい場合、Bさんには EMPLOYEES テーブルに対する SELECT オブジェクト権限が必要です。
オブジェクト権限の付与(GRANT)と取り消し(REVOKE)の方法
オブジェクト権限の付与や取り消しも GRANT と REVOKE を使用しますが、対象となる「オブジェクト」を指定する点がシステム権限と異なります。
付与(GRANT)の例
-- ユーザー「A」のテーブル「EMPLOYEES」に対するSELECT権限を、ユーザー「B」に付与するGRANT SELECT ON A.EMPLOYEES TO B;【重要】権限の再付与(WITH GRANT OPTION)と取り消し時の動作
オブジェクト権限を他者に再付与できるようにするには、WITH GRANT OPTION を指定して付与します。
システム権限とは異なり、このオプションで付与された権限を後から REVOKE で取り消すと、そのユーザーが第三者に付与した権限も「同時に(連鎖的に)取り消される」 という重要な違いがあります。
取り消し(REVOKE)の例
-- ユーザー「B」から、テーブル「EMPLOYEES」に対するSELECT権限を取り消すREVOKE SELECT ON A.EMPLOYEES FROM B;ロール(ROLE)を活用した効率的なOracle権限管理
実際の運用では、複数のユーザー一人ひとりにシステム権限やオブジェクト権限を細かく付与していくのは非常に手間がかかり、管理が複雑になります。
そこで利用されるのがロール(ROLE) です。 ロールとは、「複数の権限をひとまとめにしたグループ」のことです。
ロールを利用して複数権限をまとめるメリット
- 管理の簡素化: 必要な権限をまとめてロールに付与し、そのロールをユーザーに付与するだけで済みます。
- 権限の一括変更: 業務変更などで権限を追加・削除したい場合、ロール側の権限を変更するだけで、そのロールを持つ全ユーザーに適用されます。
-- ロールの作成CREATE ROLE developer_role;
-- ロールに権限を付与GRANT CREATE SESSION, CREATE TABLE TO developer_role;GRANT SELECT ON A.EMPLOYEES TO developer_role;
-- ロールをユーザーに付与GRANT developer_role TO test_user;Oracleには、あらかじめ用意された事前定義ロール(CONNECT、RESOURCE、DBA など)も存在します。用途に合わせてこれらを活用したり、独自にロールを作成して管理するのがベストプラクティスです。
まとめ:システム権限とオブジェクト権限の違いを理解して安全なDB運用を
この記事では、Oracle Databaseの権限管理の基本である「システム権限」と「オブジェクト権限」の違いについて解説しました。
- システム権限: データベース全体の操作(ログイン、テーブル作成など)を許可する。
- オブジェクト権限: 特定のオブジェクト(他人のテーブルなど)に対する操作(SELECT、UPDATEなど)を許可する。
それぞれの役割と違いを正確に理解し、必要最小限の権限(最小特権の原則)を付与するように設計することが、セキュアなデータベース運用の第一歩です。
Oracleのその他の機能・使い方について
Oracle Databaseの環境構築から、より実践的なSQLSQL [エスキューエル / シークエル]Structured Query Language。関係データベース(RDB)の管理や操作を行うデータベース言語関数・テクニックまで、実務で役立つ情報を以下のまとめページで体系的に解説しています。ぜひ併せて参考にしてください。

Oracle Database 使い方・設定まとめ
Oracle Databaseの使い方・設定まとめページ。Windowsへのインストール手順から、NVL・TRUNC等の必須関数、ROWNUM・UNIONの使い分けなど実務で役立つSQLの応用・チューニング手法まで、初心者から中級者向けに体系的に解説します。
以上で本記事の解説を終わります。
よいITライフを!
人気記事
- 1
- 2
- 3
- 4
- 5
図解が豊富で、概念的な理解に最適。実務に入る前の「全体像把握」に最適な一冊です。