GRANT と REVOKE
表 T の所有者 U1 は,U2 に表 T の SELECT 権限を WITH GRANT OPTION 付きで付与し,U2 は U3 に表 T の SELECT 権限を WITH GRANT OPTION を付けずに付与した。U2 と U3 は,これら以外の経路で表 T に関する権限を付与されていないものとする。標準 SQL の規定に照らして,適切な記述はどれか。
- アU3 は,U2 から付与された権限を用いて,表 T の SELECT 権限を更に U4 に付与できる。
- イU1 が U2 の表 T の SELECT 権限を RESTRICT 指定で取り消すと,U2 の権限だけが取り消され,U3 の権限は残る。
- ウU2 は,SELECT 権限を WITH GRANT OPTION 付きで付与されているので,表 T の UPDATE 権限も U3 に付与できる。
- エU1 が U2 の表 T の SELECT 権限を CASCADE 指定で取り消すと,U2 が U3 に付与した表 T の SELECT 権限も取り消される。
正解と解説を見る
正解 エ
この問題の基礎知識
- SQL の GRANT 文で権限を付与するときに WITH GRANT OPTION を指定すると,受け取った利用者はその権限を他の利用者に再付与できる。指定しなければ再付与できない。
- 付与権限は,SELECT や UPDATE などの個々の権限ごとに与えられるものであり,自分がもっていない別の権限を他の利用者に付与することはできない。
- REVOKE 文で CASCADE を指定すると,取り消す権限に依存して付与された権限も連鎖的に取り消される。RESTRICT を指定すると,依存して付与された権限があれば取消しは失敗する。
アU3 は,U2 から付与された権限を用いて,表 T の SELECT 権限を更に U4 に付与できる。
U2 から U3 への付与は WITH GRANT OPTION を付けずに行われているので,U3 は権限を他の利用者に付与できない。付与権限の連鎖は,WITH GRANT OPTION 付きで受け取った利用者だけが続けられる。
イU1 が U2 の表 T の SELECT 権限を RESTRICT 指定で取り消すと,U2 の権限だけが取り消され,U3 の権限は残る。
RESTRICT を指定した場合,取り消す権限に依存して付与された権限(U2 から U3 への付与)が存在するので,REVOKE 文はエラーとなり,どの権限も取り消されない。
ウU2 は,SELECT 権限を WITH GRANT OPTION 付きで付与されているので,表 T の UPDATE 権限も U3 に付与できる。
WITH GRANT OPTION は,それを指定して付与された権限(ここでは SELECT)についてだけ再付与を認めるものである。U2 は表 T の UPDATE 権限をもたないので,SELECT の付与権限があっても UPDATE 権限を U3 に付与することはできない。
エU1 が U2 の表 T の SELECT 権限を CASCADE 指定で取り消すと,U2 が U3 に付与した表 T の SELECT 権限も取り消される。正解
CASCADE を指定すると,取り消す権限に依存して付与された権限も連鎖的に取り消される。U3 は他の経路で権限を得ていないので,U3 の SELECT 権限も失われる。
検証用の出典レビュー済み
ISO/IEC 9075-2 (JIS X 3005-2) SQL/Foundation