今回は、Silverの「S2 運用管理 - S2.5 基本的な運用管理作業」からの出題です。
ユーザ user1 はテーブル aaa に対して UPDATE 文を実行できる。
ユーザ user1 はテーブル aaa に対して DELETE 文を実行できる。
ユーザ user2 はテーブル aaa に対して SELECT 文を実行できる。
ユーザ user2 はテーブル aaa に対して UPDATE 文を実行できる。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2013年3月21日
デフォルトの設定では、テーブルなど新規に作成されるオブジェクトについては、オブジェクトの作成者がその所有者となり、すべての権限を有します。一方で、所有者以外のユーザは、そのオブジェクトに対する権限を一切、持ちませんから、個別に権限を与える必要があります。
オブジェクト権限の付与はGRANT文で行います。付与した権限を剥奪するときはREVOKE文を使います。GRANT(あるいはREVOKE)の対象として個別のユーザを指定することもできますが、ユーザ名としてpublicを使うと、全ユーザに対して権限の付与(あるいはpublicに対して付与した権限の剥奪)を行うことができます。
例題の一連の操作では、ユーザfooがテーブルaaaを作成した後、publicに対してSELECT権限をGRANT(付与)し、user1に対してUPDATEとINSERTの権限をGRANTしています。最後にuser2からSELECTの権限をREVOKE(剥奪)しています。
ユーザfooはテーブルaaaを作成した時点で、すべての権限を持っています。REVOKE文を使って自分自身の権限を制限することも可能ですが、例題の操作では何も変更していないのでDELETEを実行することができます。
user1はUPDATEをGRANTされているので実行できますが、DELETEはGRANTされていませんから実行できません。
user2は個別には何の権限もGRANTされていませんが、publicに対してSELECTがGRANTされているので、SELECTは実行できます。例題ではuser2からSELECTをREVOKEされていますが、これはuser2に個別に付与されたGRANTに対するものなので、publicに対するGRANTには影響を及ぼしません。実際には、user2にSELECTがGRANTされていないので、このREVOKE文は何の効果もありません(エラーにもなりません)。UPDATEはGRANTされていないので実行できません。
間違っているものを選ぶ問題なので、正解はCとEです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.