権限(REVOKE の連鎖)難易度 高無料
次の順で権限を付与した後、USER_A から権限を REVOKE する。挙動として正しいものを選べ。(単一選択)
-- ① システム権限(管理オプション付き) GRANT CREATE TABLE TO user_a WITH ADMIN OPTION; -- user_a が user_b へ再付与 CONNECT user_a/pw GRANT CREATE TABLE TO user_b; -- ② オブジェクト権限(付与オプション付き) CONNECT scott/pw GRANT SELECT ON scott.emp TO user_a WITH GRANT OPTION; -- user_a が user_b へ再付与 CONNECT user_a/pw GRANT SELECT ON scott.emp TO user_b; -- 取消 CONNECT system/pw REVOKE CREATE TABLE FROM user_a; -- 取消(1) CONNECT scott/pw REVOKE SELECT ON scott.emp FROM user_a; -- 取消(2)
- A取消(1) も取消(2) も
user_bの権限まで連鎖的に取り消される - B取消(1)(システム権限)では
user_bのCREATE TABLEは残るが、取消(2)(オブジェクト権限)ではuser_bのSELECTも連鎖的に取り消される - C取消(1)(システム権限)では
user_bも連鎖取消され、取消(2)(オブジェクト権限)ではuser_bは残る - D取消(1) も取消(2) も
user_bの権限はどちらも残る(連鎖しない)
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:B✓Gold監修
解説
システム権限とオブジェクト権限で、再付与した相手への取消の連鎖(cascade)挙動が異なる。
- システム権限(
WITH ADMIN OPTION): 付与者から取り消しても、その付与者が他者へ与えた権限は連鎖して取り消されない(NO CASCADE)。 よって取消(1) でuser_aのCREATE TABLEは消えるが、user_bのCREATE TABLEは残る。 - オブジェクト権限(
WITH GRANT OPTION): 付与者から取り消すと、その付与者がGRANT OPTIONを使って他者へ与えた権限も連鎖して取り消される(CASCADE)。 よって取消(2) でuser_aのSELECTが消えると、user_bのSELECTも連鎖して消える。
この「システム権限は連鎖しない/オブジェクト権限は連鎖する」という非対称が本問の核心。
- Aシステム権限(取消1)は連鎖しないので
user_bのCREATE TABLEは残る。両方連鎖は誤り。 - C連鎖の向きが逆。連鎖するのはオブジェクト権限の方で、システム権限は連鎖しない。
- Dオブジェクト権限(取消2)は連鎖するので
user_bのSELECTは残らない。両方残るは誤り。
ひっかけ:
WITH ADMIN OPTION(システム権限)と WITH GRANT OPTION(オブジェクト権限)を「どちらも再付与可・取消も同じ」と思い込む。
再付与できる点は同じでも、取消時の連鎖はオブジェクト権限だけ。さらに付与オプションの名称自体も別物(ADMIN ↔ GRANT)。✓Gold 保有者による書き下ろし解説・実機で検証済