忍者ブログ
IT関係の小作人労働の日々の日記です。 最近データベースが好きです。 インフラ構築、DB構築、アプリケーション開発・・・何でも屋です。 何でもできそうで、何にもできない。

【OSS-DB Silver対策】GRANT文とPUBLICの意味


OSS-DB Silver試験対策シリーズ、今回は権限付与を行うSQL文、`GRANT`で使用される特殊なキーワード「PUBLIC」について解説します。誰に対して権限を与えているのか、その範囲を正確に把握しましょう。

1. GRANT文におけるPUBLICとは

【 基本 】 `GRANT SELECT ON TABLE1 TO PUBLIC` のように記述した場合、この「PUBLIC」は、現在および将来のすべてのユーザ(ロール)を指す特殊なグループとして機能します。

[ PUBLICのポイント ]
全ユーザが対象:個別に権限を与えていないユーザも含め、すべてのユーザが対象となります。
自動適用:PUBLICに権限を付与した後に作成された「新しいユーザ」にも、自動的にその権限が適用されます。
暗黙のグループ:PUBLICという名前の特定のユーザが存在するわけではなく、一種の「全員参加のグループ」として扱われます。

2. 試験対策問題:4択チェック

【 問題 】 次のSQL文を実行した場合の「PUBLIC」の説明として、最も適切なものはどれですか?
GRANT SELECT ON TABLE1 TO PUBLIC;

問題:GRANT文の付与対象に指定された「PUBLIC」が指す範囲を選びなさい。

1. データベースを作成した所有者(オーナー)のみを指す。

2. システム管理権限(スーパーユーザ)を持つユーザのみを指す。

3. その時点で存在するユーザのみを指し、後から作成されたユーザは含まれない。

4. すべてのユーザ(ロール)を指し、将来作成される新しいユーザも含まれる。

3. 正解と解説

正解:4

【 解説 】
1. 理解のコツ: `PUBLIC` は「全員」という意味です。PostgreSQLでは、個々のユーザに権限を割り当てる手間を省くために、全ユーザに共通の権限を与えたい時にこれを使用します。
2. 復習の視点: 逆に権限を取り消したい場合は `REVOKE SELECT ON TABLE1 FROM PUBLIC;` と記述します。デフォルトで一部のオブジェクトにはPUBLICに権限が割り当てられていることもあるため、セキュリティ設定の際にも重要な知識となります。


4. まとめ

「PUBLIC = 全ユーザ(未来のユーザも含む)」。このシンプルな定義を覚えておけば、SQLの権限問題で迷うことはありません。試験では「既存のユーザのみ」というひっかけ選択肢がよく出るので、注意してくださいね!


PR