[DB] 権限・ロールまとめ [SQL]

どうも、tatsuです!

最近は2018年4月のデータベーススペシャリスト試験にむけて勉強を頑張っているわけですが、午後ⅠのSQLの問題を解いていてセキュリティと絡めた問題がいくつかあるなという印象を受けました。

昨今はどの試験区分においてもセキュリティを重視するとIPAから発表されているので、SQLもセキュリティと絡めた問題が多くなっている傾向にあるみたいです。

実際に解いてみたところ、セキュリティを問題に取り込む場合は以下の点について問われることが多いなと思いました。

  • ビュー
  • 権限
  • ロール

そこで今回は午後ⅠのSQLの問題で間違えないように、権限とロールについてまとめてみたのでよかったら見ていってください!

権限

権限とは、テーブルに対してどのような操作を行うことができるかの設定のことです。

例えば、「従業員テーブルに対してSELECTする権限」といったものがあります。
この権限をユーザIDに付与することで、そのユーザはテーブルをSELECTすることができます。

構文は以下のようになります。
※ユーザIDはカンマ区切りで複数指定することができます

権限を与える構文
GRANT SELECT ON テーブル名(ビュー名) TO ユーザID

 
また、上記構文の「SELECT」部分に入る文字には以下の種類があります。

権限 内容
ALL PRIVILEGES 全ての権限
SELECT 参照権限
INSERT 挿入権限
UPDATE 更新権限
DELETE 削除権限

 
また、ユーザから権限を剥奪したい場合には以下の構文を使います。

権限を剥奪する構文
REVOKE SELECT ON テーブル名(ビュー名) FROM ユーザID
注意
GRANTではTOだったところが、REVOKEではFROMになっている点に注意してください。

ロール

権限だけでも表操作の制限はかけられるのですが、同じ権限の組合せをたくさんのユーザに与えるとなると面倒ですよね?
そこで登場するのがロールです!

ロールとは、複数の権限をまとめたものになります。
なので、ロールに対して複数の組合せの権限を付与しておけば、そのロールをユーザに付与するだけなので簡単です!

ロール作成の構文は以下のようになります。

構文
CREATE ROLE ロール名

 
それができたら、そのロールに対して権限を付与していきます。
※これは権限をユーザに付与する構文と同じです。

構文
GRANT SELECT ON テーブル名(ビュー名) TO ロール名

 
さらにロールが完成したら、それをユーザに付与します。

構文
GRANT ロール名 TO ユーザID

どうですか?ロールを使うと権限の付与がすごく簡単になりました!

 
また、ロールを削除するときには以下のように記述します。

構文
DROP ROLE ロール名

まとめ

いかがでしたでしょうか?
実際にロールの問題がでた年の講評を読んでみたところ、ロールや権限についての問題の正答率が低かったそうです。

この機会にしっかりマスターして取りこぼしの無いように一緒に頑張りましょう!

それでは!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です