SQL文|情報処理安全確保支援士 平成29年 春期午前Ⅱ試験 問21
出典:平成29年春期 午前Ⅱ 問21
分野:データベース / データ操作
次のSQL文をA表の所有者が発行した場合を説明したものはどれか。
GRANT ALL PRIVILEGES ON A TO B WITH GRANT OPTION
GRANT ALL PRIVILEGES ON A TO B WITH GRANT OPTION
- ア:利用者Bに対して,A表に関するSELECT権限,UPDATE権限,INSERT権限,DELETE権限などのすべての権限,及びそれらの付与権を付与する。
- イ:利用者Bに対して,A表に関するSELECT権限,UPDATE権限,INSERT権限,DELETE権限などのすべての権限を付与するが,それらの付与権は付与しない。
- ウ:利用者Bに対して,A表に関するSELECT権限,UPDATE権限,INSERT権限,DELETE権限は付与しないが,それらのすべての付与権だけを付与する。
- エ:利用者Bに対して,A表に関するSELECT権限,及びSELECT権限の付与権を付与するが,UPDATE権限,INSERT権限,DELETE権限,及びそれらの付与権は付与しない。
TSUNAGARU-ADVICE
まず押さえたいこと
SQLの「GRANT ALL PRIVILEGES ON A TO B」は、利用者Bに対してA表に関するSELECT、UPDATE、INSERT、DELETEなどの権限をまとめて付与する指定です。さらに「WITH GRANT OPTION」が付いているため、Bは付与された権限を他の利用者にも付与できるようになります。
迷ったときの判断軸
ALL PRIVILEGESは、SELECTだけではなく、表に対する主要な操作権限全体を指します。また、WITH GRANT OPTIONは、権限そのものではなく「付与された権限を他者へ与える権限」を追加する指定です。したがって、全権限 + それらの付与権と判断しましょう。
科目Bにつなげるために
科目Bでは、データベースのアクセス制御・最小権限・権限委譲・内部不正対策などと絡めて問われることがあります。WITH GRANT OPTIONを付けると権限がさらに広がる可能性があるため、誰にどの権限を与え、その人がさらに誰へ付与できるのかまで追う視点を持ちましょう。
※DB関連試験向け。
GRANT文は、利用者に対して表などのデータベースオブジェクトへの権限を付与するSQL文です。
ALL PRIVILEGESを指定すると、A表に対するSELECT権限、UPDATE権限、INSERT権限、DELETE権限などのすべての権限を利用者Bに付与します。さらに、WITH GRANT OPTIONを指定しているため、利用者Bは付与された権限を他の利用者へ付与することもできます。
したがって、アが適切です。
❌他選択肢が誤りの理由イ:利用者Bに対して,A表に関するSELECT権限,UPDATE権限,INSERT権限,DELETE権限などのすべての権限を付与するが,それらの付与権は付与しない。
⇒WITH GRANT OPTIONが指定されているため、利用者Bには各権限だけでなく、それらを他の利用者へ付与する権限も与えられます。
ウ:利用者Bに対して,A表に関するSELECT権限,UPDATE権限,INSERT権限,DELETE権限は付与しないが,それらのすべての付与権だけを付与する。
⇒WITH GRANT OPTIONは、権限そのものを付与せずに付与権だけを与える指定ではありません。まず対象の権限が付与され、その権限を他者へ再付与できるようになります。
エ:利用者Bに対して,A表に関するSELECT権限,及びSELECT権限の付与権を付与するが,UPDATE権限,INSERT権限,DELETE権限,及びそれらの付与権は付与しない。
⇒SELECTだけを指定しているわけではなく、ALL PRIVILEGESが指定されています。そのため、SELECT以外のUPDATE、INSERT、DELETEなどの権限も対象になります。