Oracleデータベースのユーザと権限

Oracleの基礎

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という最上位管理者ユーザで、最初はこのユーザでユーザを追加したり、データベースを作成したりします。

名前説明
SYSOracleデータベースの最上級管理者ユーザです。
すべての操作ができ、全てのデータベースオブジェクトにアクセスできます。
SYSTEMSYSと同じく管理者ユーザですが、データベースバックアップやリカバリと、Oracleデータベースのアップグレードができない点がSYSとの違いです。

権限

Oracleデータベースに作成したユーザは、実行できる操作やアクセスできるデータを制限する必要があります。
ユーザに対し、何をできるかを決めるルールを「権限」と言い、ユーザに対して権限が正しく設定されていないと、関係者以外のユーザからデータにアクセスされたり、ユーザの誤操作によりデータが消失してしまったりするリスクがあります。


Oracleデータベースでは、新しく作成したユーザーにはデフォルトで特定の権限は付与されておらず、ユーザーはデータベース内で何も操作できない状態です。
ユーザー作成後には、明示的に必要な権限を付与する必要があります。

権限の種類

Oracleデータベースの権限は、システム権限とオブジェクト権限の2種類あります。
2種類の権限について簡単に説明した表がこちらです。

名称説明
システム権限データベース全体に対する操作
例)ログイン、テーブルの作成、ユーザの作成
オブジェクト権限特定のテーブル等のオブジェクトに対する操作
例)テーブルの閲覧やデータ挿入

システム権限

システム権限の具体的内容について説明します。
まず、システム権限はユーザ作成や変更・削除の権限があります。さらにユーザに対してデータベースへ接続可否を設定する権限もあります。

また、テーブル、ビュー、インデックスの作成や変更・削除権限もシステム権限です。

デフォルトで用意されている管理用権限

Oracleデータベースには、デフォルトで管理者用の権限が用意されています。

名称説明
SYSDBASYSDBAは、最上位の権限で、インスタンスの起動や停止、バックアップとリカバリ、データベースの作成、全データへアクセスなどなんでもできます。
デフォルトで用意されているユーザSYSにはこのSYSDBA権限が付与されています。
SYSOPERSYSOPERはインスタンスの起動や停止、バックアップとリカバリの操作が可能な権限です。
データベースの作成や削除はできないので、データベース構築後の運用保守向けの権限といえます。


オブジェクト権限

オブジェクト権限 は、データベースオブジェクト(テーブル、ビュー、プロシージャなど)に対して、ユーザーが実行できる操作を制御する権限のことです。


ロール

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

コメント

タイトルとURLをコピーしました