PREPARATION
受験対策

Silverの例題解説
「S2.5 基本的な運用管理作業(テーブル単位の権限)」

今回は、Silverの「S2 運用管理 - S2.5 基本的な運用管理作業(テーブル単位の権限)」からの出題です。

例題

2.90

GRANT/REVOKEによる権限付与について正しい説明を2つ選びなさい。

  1. テーブルの所有者は、SELECT権限をREVOKEされてもテーブルからデータをSELECTすることができる。

  2. スーパーユーザは、SELECT権限をREVOKEされてもテーブルからデータをSELECTすることができる。

  3. SELECTとUPDATEなど複数の権限を付与するときに、1つのGRANT文で複数の権限をまとめて指定することができる。

  4. テーブルを更新するにはテーブルのデータを読む必要があるので、UPDATE権限をGRANTするだけで、自動的にSELECT権限もGRANTされる。

  5. あるテーブルについてINSERT権限がGRANTされているが、SELECT権限がGRANTされていないという場合、他のユーザがINSERTしたデータはSELECTできないが、自分がINSERTしたデータはSELECTできる。

※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2018年10月9日

解答と解説

データベースでは、テーブルあるいはテーブルの列についてのSELECT、INSERT、UPDATE、DELETEなどの権限をユーザごとに細かく制御することができますが、デフォルトではテーブルの作成者(所有者)のみがすべての権限を所持しており、他のユーザは一切の権限を所持していません。
アクセスを許可するにはGRANT、許可したアクセス権限を取り消すにはREVOKEを使います。
PostgreSQLでは、テーブルの所有者からアクセス権限をREVOKEすることができます(データベースの種類によっては、所有者の権限はREVOKEできません)。SELECT権限をREVOKEされたら、所有者でもそのテーブルのデータをSELECTすることはできません。ただし、所有者はGRANTコマンドを実行することができるので、自分に対して GRANT SELECT を実行すれば、再び SELECT できるようになります。
スーパーユーザは特殊なユーザで、アクセス権限がなくても、テーブルにアクセスすることができます。スーパーユーザから SELECT 権限を REVOKE するコマンド自体は成功しますが、スーパーユーザはそれでもそのテーブルから SELECT を実行することができます。
複数の権限をまとめて付与するには、権限をカンマで区切って 
GRANT SELECT, UPDATE ON table_name TO user_name;
のようにします。GRANT可能なすべての権限を一括して付与するには、
GRANT ALL ON table_name TO user_name;
のようにすることも可能です。
データを更新する典型的なSQL文は
UPDATE table_name SET column_name1 = value1 WHERE column_name2 = value2;
のような形式ですが、この場合、単にテーブル(あるいは更新対象列)に対するUPDATE権限だけでなく、WHERE句で参照する列についてのSELECT権限も必要となります。しかし、GRANTでUPDATEを許可しても、自動的に他の権限が付与されることはなく、SELECT権限も明示的に付与しなければなりません。なお、テーブルの全行を更新するのであれば、WHERE句を付けずに、
UPDATE table_name SET column_name1 = value;
のようにすると、UPDATE権限だけあればテーブルを更新できます。もちろん、valueとして、テーブルの列を参照するような式を記述するなら、SELECT権限が必要になります。
GRANT/REVOKEで付与する、あるいは取り消す権限はテーブル、あるいはテーブルの列が対象で、行単位の権限はありません。また、各行についてどのユーザが作成したか、という情報は存在しません。自分がINSERTした行であっても、テーブルのSELECT権限がなければSELECTすることはできません。

したがって正解はBとCです。

例題解説についてのご質問やご意見は以下からご連絡ください。

※本例題および解説は、例題作成者から提供されたものです。実際の試験問題とは異なります。
※実際の試験問題に関するお問い合わせについてはご回答いたしかねます。あからじめご了承ください。

企業の基幹システムや業務システムでの
OSS-DBの採用がますます拡大している中、
昇格・昇給・就職・転職に必ず役立つ認定資格になります

OSS-DBの受験対策

受験の学習をサポートする情報や対策に役立つ情報をご紹介

例題解説

例題のアーカイブを試験ごとにまとめています。OSS-DB技術者認定試験の学習にお役立てください

学習教材・教育機関ご紹介

OSS-DB認定教材や教育機関について詳しくご説明いたします。

無料技術解説セミナー

受験準備をされていらっしゃる方々を対象に、無料技術解説セミナーの日程をお知らせしています。

OSS-DB道場

OSS-DBやPostgreSQLの知識、技術を得るために役立つ情報の紹介やコラムを公開しています。

応募者全員プレゼント!
オープンソース データベース標準教科書 -PostgreSQL-