DCLとは(全体像)
DCLとは、データベースの「権限」を制御するためのSQLのことだ(Data Control Languageの略)。
データを出し入れするDML、構造を作るDDLに対し、DCLは「だれが、どの操作をしてよいか」を決める役割をもつ。命令は2つ。
- GRANT … 権限を与える(例:「この人は、表を見てよい」)
- REVOKE … 権限を取り消す(与えた権限を、あとで外す)
ここで一番のポイント。GRANTとREVOKEは、逆の役割だ。「GRANTもREVOKEも、同じく権限を与える命令だ」と思い込むと誤りで、GRANTは与える、REVOKEは取り消すと、向きが反対だ。
詳しく:最小権限の原則
ここが心臓部。ポイントを表で押さえよう。
DCLのポイント
| 項目 | やさしい意味 |
|---|---|
| DCL | だれが何をできるかの権限を制御する |
| GRANT | 権限を与える |
| REVOKE | 権限を取り消す |
| 最小権限の原則 | 必要最小限の権限だけを与える |
権限を与えるとき、大事な考え方が最小権限の原則だ。これは、その人の仕事に必要な、最小限の権限だけを与えるという考え方。
ここで一番のポイント。権限は、必要最小限だけ与える。「念のため、全部の権限を与えておけばよい」と思い込むと誤りで、余分な権限は、情報もれなどの危険を増やす。だから、必要な分だけにしぼるのが、セキュリティの基本だ。
わかりやすく言い換えると
身近なたとえで整理しよう。
DCLは、「建物の、だれにどの部屋の鍵を渡すかを決めるしくみ」のイメージ。GRANTは鍵を渡す、REVOKEは鍵を返してもらう、にあたる。
GRANTとREVOKEの違いは、「GRANTは権限を与える、REVOKEは与えた権限を取り消す」こと。要するに、向きが逆。
最小権限の原則は、「その人の仕事に必要な鍵だけを渡し、いらない鍵は渡さない」こと。つまり、余計な権限は与えない。
試験のツボ
🔴 一番出る:GRANTとREVOKE
①GRANT=権限を与える、REVOKE=権限を取り消す
②2つは逆の役割(与える/取り消す)
🔴 次に出る:DCLの役割
①だれが、どの操作をしてよいかの権限を制御する
②セキュリティ上、欠かせない役割
🟡 押さえると安定:最小権限の原則
①必要最小限の権限だけを与える
②余分な権限は、危険を増やすので与えない
よくある間違い
①「GRANTもREVOKEも、同じく権限を与える命令だ」→ ✗ GRANTは権限を与える、REVOKEは権限を取り消す。役割が逆。
②「念のため、全部の権限を与えておけばよい」→ ✗ 必要最小限だけを与える(最小権限の原則)。余分な権限は危険を増やす。
③「DCLは、要らない(権限の制御はしなくてよい)」→ ✗ DCLは、だれが何をできるかを決める、セキュリティ上欠かせない役割。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(DCLの正体)
DCLに関する次の記述のうち、最も適切なものはどれか。
- 社員の出退勤を記録して、毎月の給与を計算するためのしくみだ
- だれが何をできるか、という権限を制御するためのSQLである
- 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
- 完成したシステムを宣伝して、より多く売るための広告活動である
解答は 2 です。
DCLは、だれが何をできるか、という権限を制御するSQLなのです。建物の鍵を、だれに渡すかを決めるイメージなります。
選択肢1は給与計算、選択肢3は請求書の事務、選択肢4は広告で、どれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のしくみではない |
| 2 | ✓ | 権限を制御するSQLで正しい |
| 3 | ✗ | 請求書の事務の話 |
| 4 | ✗ | 広告活動ではない |
オリジナル問題2(GRANTとREVOKE)
GRANTとREVOKEに関する次の記述のうち、最も適切なものはどれか。
- GRANTは権限を与え、REVOKEは権限を取り消すものである
- 社員の給与を計算するときだけ、使われるとされているものだ
- 取引先への請求書の枚数しだいで、使われるとされているのだ
- GRANTもREVOKEも、まったく同じものだとされているのである
解答は 1 です。
GRANTは権限を与える、REVOKEは権限を取り消すのです。向きが逆の役割なります。
選択肢2の給与、選択肢3の請求書、選択肢4の「まったく同じ」は、いずれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 与える・取り消すで正しい |
| 2 | ✗ | 給与計算のときだけではない |
| 3 | ✗ | 請求書の枚数で決まるのではない |
| 4 | ✗ | 役割が逆で、同じではない |
オリジナル問題3(最小権限の原則)
最小権限の原則に関する次の記述のうち、最も適切なものはどれか。
- 社員の給与を計算するときだけ、適用されるとされているものだ
- 取引先への請求書の枚数しだいで、決まるとされているものである
- 仕事に必要な、最小限の権限だけを与えるという考え方のことだ
- 念のため、すべての権限を与えておくのがよいとされているのだ
解答は 3 です。
最小権限の原則は、仕事に必要な、最小限の権限だけを与えるという考え方なのです。余分な権限は危険を増やすので与えないなります。
選択肢1の給与、選択肢2の請求書、選択肢4の「すべて与える」は、いずれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のときだけではない |
| 2 | ✗ | 請求書の枚数で決まるのではない |
| 3 | ✓ | 必要最小限だけ与えるで正しい |
| 4 | ✗ | 余分な権限は与えない |
まとめ
押さえどころ
- 🔴 GRANTとREVOKE = GRANTは権限を与える、REVOKEは権限を取り消す。向きが逆の役割。
- 🔴 DCLの役割 = だれが何をできるかの権限を制御する。セキュリティ上、欠かせない。
- 🟡 最小権限の原則 = 仕事に必要な、最小限の権限だけを与える。余分な権限は危険を増やすので与えない。
次に学ぶ
- SQL基本(DDL/DML/DCL/TCL) ── SQLの4分類。DCLは、その権限を制御する分類。
- DDL(CREATE/ALTER/DROP) ── 構造を定義するSQL。DCLとあわせて、データベースを安全に管理する。
執筆: SikakuQuest編集部