Oracleデータベースのユーザや権限について基礎を解説します。
Oracleデータベースを利用していくうえで、セキュリティを考慮してうえで、ユーザは特定のデータに対してどのような操作ができるのか(データを読むだけ、編集も可能等)を決める必要があります。
マルチテナント構成で構築されたOracleデータベースでの環境を前提に解説します。
なお、本ページは具体的な手順の説明はありませんので、ご了承ください。
ユーザの種類
Oracleデータベースはマルチテナントという構成が主流になっています。
このマルチサイト構成の場合、Oracleデータベースのユーザは下の2種類が存在しています。
種類の名称 | 説明 |
共通ユーザ | CDBに作成され、すべてのPDBからアクセス可能。 システム全体の管理や設定を行う。 |
ローカルユーザ | 各PDBに作成され、PDB内のデータやリソースにアクセスするために使用。 |
次の図のように共通ユーザとローカルユーザがいます。

共通ユーザ
共通ユーザは、CDB内の全てのPDBに対してアクセス権を持つユーザで、CDB配下の各PDBにアクセスできます。(PDB毎に利用不可と設定することも可能)
共通ユーザーの名前は、必ずc##またはC##の文字で始まります。
※Oracleデータベースをインストールすると、デフォルトでSYSとSYSTEMという管理者用の共通ユーザが用意されていますが、これはC##が付きません。
ローカルユーザ
ローカルユーザーは、特定のPDBにのみ存在し、他のPDBにアクセスできないユーザーです。
デフォルトで用意されている管理者用ユーザ
Oracleデータベースをインストールすると用意されているユーザはいくつかありますが、最初によく使うのがSYSという最上位管理者ユーザで、最初はこのユーザでユーザを追加したり、データベースを作成したりします。
名前 | 説明 |
SYS | Oracleデータベースの最上級管理者ユーザです。 すべての操作ができ、全てのデータベースオブジェクトにアクセスできます。 |
SYSTEM | SYSと同じく管理者ユーザですが、データベースバックアップやリカバリと、Oracleデータベースのアップグレードができない点がSYSとの違いです。 |
権限
Oracleデータベースに作成したユーザは、実行できる操作やアクセスできるデータを制限する必要があります。
ユーザに対し、何をできるかを決めるルールを「権限」と言い、ユーザに対して権限が正しく設定されていないと、関係者以外のユーザからデータにアクセスされたり、ユーザの誤操作によりデータが消失してしまったりするリスクがあります。

Oracleデータベースでは、新しく作成したユーザーにはデフォルトで特定の権限は付与されておらず、ユーザーはデータベース内で何も操作できない状態です。
ユーザー作成後には、明示的に必要な権限を付与する必要があります。
権限の種類
Oracleデータベースの権限は、システム権限とオブジェクト権限の2種類あります。
2種類の権限について簡単に説明した表がこちらです。
名称 | 説明 |
システム権限 | データベース全体に対する操作 例)ログイン、テーブルの作成、ユーザの作成 |
オブジェクト権限 | 特定のテーブル等のオブジェクトに対する操作 例)テーブルの閲覧やデータ挿入 |
システム権限
システム権限の具体的内容について説明します。
まず、システム権限はユーザ作成や変更・削除の権限があります。さらにユーザに対してデータベースへ接続可否を設定する権限もあります。
また、テーブル、ビュー、インデックスの作成や変更・削除権限もシステム権限です。

デフォルトで用意されている管理用権限
Oracleデータベースには、デフォルトで管理者用の権限が用意されています。
名称 | 説明 |
SYSDBA | SYSDBAは、最上位の権限で、インスタンスの起動や停止、バックアップとリカバリ、データベースの作成、全データへアクセスなどなんでもできます。 デフォルトで用意されているユーザSYSにはこのSYSDBA権限が付与されています。 |
SYSOPER | SYSOPERはインスタンスの起動や停止、バックアップとリカバリの操作が可能な権限です。 データベースの作成や削除はできないので、データベース構築後の運用保守向けの権限といえます。 |
オブジェクト権限
オブジェクト権限 は、データベースオブジェクト(テーブル、ビュー、プロシージャなど)に対して、ユーザーが実行できる操作を制御する権限のことです。

ロール
ロールは、権限を集めて一つのパックにしたようなものです。
ロールを作れば複数のユーザーに同じ権限を付与したい場合に一度に付与することができます。
また、ユーザーや他のロールに対してロールを付与することで、権限の管理が柔軟かつ効率的に行えます。

コメント