Oracle DBの権限とロールの考え方 | 若手エンジニアのブログ

若手エンジニアのブログ

文系出身の若手女子エンジニアによる技術ブログ。
日々の経験や学びをアウトプットするためにブログを書いています。
バックエンド(Java+SpringFramework)を経てインフラエンジニアになりました。
今は育休中につき、本で勉強したことを中心にアウトプットしています。

仕事・プライベートともにぎっしりで、ブログ開くことさえできていませんでした(´・ω・`)

プライベートのほうはわりと落ち着いたので、また少しずつ更新していきます!

 

今回はOracle DBの権限のお話。

Oracle DBの19cを前提に書いていきます。

 

もくじ

1.権限とは

2.ロールとは

3.権限の種類

 

権限とは

OracleのDBユーザ毎に、「これやっていいよ」「これはしたらあかんよ」を決めたルールのこと。
「これやっていいよ」「これはしたらあかんよ」は、1つ1つが権限と呼ばれる。

権限には、例えば、「データベースに接続する権限」、「表領域を作成する権限」などがある。
この権限を付与、もしくは付与しないことによって、DBユーザが実行できる処理を制御することができるようになっている。

 

ロールとは

特にユーザが多くなると、複数のユーザに同じような権限を付与するのが一苦労で、
管理も大変なものとなる。
そういった時に、ユーザ個別に権限を付与するのではなく、「ロール」に対して各権限を付与し、
ユーザにはロールを付与することができる。

イメージ…

ユーザAとユーザBには、共通して付与する権限がある。



ユーザAとユーザBそれぞれに個別の権限を付与することもできるが、

ロールを作って、ロールに権限を付与し、そのロールをユーザAとBに割り当てることが可能となっている。

 

 

 

ロールを1度作ってしまえば、

「表領域を変更する権限を、ユーザAとBに加えたい」という時や

「表領域を作成する権限はなくしたい」という時などに、ロールだけを変更すればよくなる。

 

また、新たにユーザCを作成し、ユーザA、Bと同じ権限を付与したい時にも、

ロール1つを割り当てればそれで事足りる。

ロールは、権限の集合体みたいなものだと言える。

 

 

権限の種類

ロールに(またはユーザに直接)、割り当てることのできる権限は、かなりの数がある。

権限の種類として、代表的な3つを書き出すと、以下となる。

 

種類 説明
システム権限 スキーマ・オブジェクトに対して
1つまたは複数の操作を実行する権限。
「システム」権限という名前の通り、
システム全体に関わる強力な権限も多々存在する。
そのため、権限付与はとくに慎重に行うべきである。
オブジェクト権限で処理を実行するには、
適切なシステム権限が付与されている必要がある。
・DBユーザの作成・変更・削除権限
・表領域の作成・変更・削除権限
・テーブルの作成・変更・削除権限
・データベースへの接続権限
オブジェクト権限 スキーマ・オブジェクト単位で、操作やアクセスを制御。 ・テーブルへのSELECTやISERTの許可
・テーブルの定義の変更
表・ビューへの権限 表やビュー単位で、アクセス権限を制御。 ・××テーブルへのINSERTとUPDATEを許可
・○○ビューへのSELECTを許可しない

 

各権限の違いとしては、

 ・システム権限:データベース全体の操作に関わるでかい範囲での権限

 ・オブジェクト権限:必要なシステム権限を持っている前提で、より具体的な内容の権限

 ・表・ビューへの権限:1つの表やビューという小さな単位で細かく権限を決められる

という感じかと。

 

大きな単位から小さな単位まで細かく決められるので、

セキュリティに配慮した構成にすることができる。

 

 

中身薄いですが(^-^;

今回は以上!