Oracle University 講師が ORACLE MASTER 取得を目指している方に向けて試験トピックを解説するブログ連載講座。「ORACLE MASTER Silver SQL 2019」資格取得に向けた試験トピックについて解説します。
————————————————-
今回はORACLE MASTER Silver SQLの試験トピック「ユーザー・アクセスの制御 – システム権限とオブジェクト権限との差別化 -」に関連する問題をご紹介いたします。ORACLE MASTER Silver SQL(Exam Number: 1Z0-071-JPN)の詳細につきましては以下URLをご参考ください。
Oracle Database SQL Exam Number: 1Z0-071
URL: https://education.oracle.com/ja/oracle-database-sql/pexam_1Z0-071
————————————————-
今回はデータベースのセキュリティとして重要な権限に関する問題をご紹介いたします。
以下の問題を確認してください。

(解説)
それでは解説をしてきましょう。データベースセキュリティを確保するために権限の付与というのは非常に重要な設定になります。一般ユーザーに対して過剰に権限を付与してしまうと、そこがセキュリティ・ホールになってしまう可能性が出てきますのでしっかりと必要な権限のみを付与するように心がけることが重要ですね。
さて、この権限の種類ですが「システム権限」と「オブジェクト権限」の2つに分類することができます。
以下にそれぞれの内容をまとめておきましょう。
- システム権限:データベース内での特定の操作の実行
- 新しいユーザーの作成(CREATE USER権限)
- 新しいテーブルや任意のインデックス作成(CREATE TABLE権限、CREATE ANY INDEX権限)
- データベースへのログイン(CREATE SESSION権限)
- 任意のテーブルに対する処理(SELECT ANY, UPDATE ANY, DELETE ANY, INSERT ANY, etc…)
- WITH ADMIN OPTIONを指定して付与すると他のユーザーへ権限付与・取消操作が可能
- オブジェクト権限:データベース・オブジェクトのコンテンツ操作
- SELECT ON <table name> TO <user name> のように、一般的にオブジェクトを所有するユーザーが他のユーザーに対して操作を許可する
- WITH GRANT OPTIONを指定して付与すると他のユーザーへ権限の付与・取消操作が可能
権限の種類はとても多いので、「これはシステム権限?オブジェクト権限?」と悩むこともあるかもしれません。少々粗削り感がありますが、以下と認識しておくと覚えやすいと思います。


あと、確実に押さえておきたい知識としては WITH 〇〇〇 OPTION になります。このオプションを権限付与の際に指定すると権限付与されたユーザーがさらに他ユーザーにも権限を付与・取消操作ができるわけですがシステム権限とオブジェクト権限で構文が異なります。
| オプション |
説明 |
| WITH ADMIN OPTION |
ADMIN OPTIONを指定してシステム権限を付与すると、権限受領者は他のユーザーへそのシステム権限の付与が可能です。 |
| WITH GRANT OPTION |
GRANT OPTIONを指定してオブジェクト権限を付与すると、権限受領者は他のユーザーへそのオブジェクト権限の付与が可能です。 |
実行例も載せておきますので参考にしてください。

それでは権限について一通り確認できましたので問題の選択肢を確認していきましょう。
選択肢1のデータベースにログイン(接続)する権限はCREATE SESSIONシステム権限ですよね。正しい内容を述べています。
選択肢2はシステム権限にWITH GRANT OPTIONと言っているので誤りです。WITH GRANT OPTION はオブジェクト権限の付与の際に指定できるオプションになります。
選択肢3に記載があるWITH GRANT OPTION を指定して付与されたユーザーは、他ユーザーに対して同等の権限の付与、つまりWITH GRANT OPTION付きで付与することができます。これはシステム権限で指定できるWITH ADMIN OPTIONについても同様です。正しい内容になります。
選択肢4は誤った内容になりますが間違って選択してしまった人がいるのではないでしょうか。「表に問合せ」とあるのでオブジェクト権限の説明のように見えますが、「任意の様々な表」という点に着目してください。つまりデータベース内のユーザー(SYSを除く)が所有するすべての表にアクセスできるということを示しており、SELECT ANY TABLE システム権限のことを説明しています。
選択肢5は正解の選択肢ですね。他人の持ち物(別スキーマ)であるプログラム(プロシージャ)を実行したいという内容になりますからEXECUTEオブジェクト権限になります。
選択肢6は少し難しかったかもしれませんが誤りです。自分の持ち物(自スキーマ)であれば 追加の権限付与の必要なくTRUNCATEを実行してデータの切り捨てができますが「別スキーマの表」という文章を見落とさないようにしてください。この場合、TRUNCATEを実行する際には実行ユーザーにDROP ANY TABLEシステム権限が付与されていることが必要です。
以上の結果から、正解の選択肢は1と3と5になります。
今回は権限の取消処理であるREVOKEについては触れませんでしたが、データベースのセキュリティを維持するために不必要な権限については適切に取り消す必要がありますので「Oracle Database SQL言語リファレンス」のマニュアルを参考にして構文は押さえておきましょう。
SQL言語リファレンスの – GRANT – の項目を確認していただければシステム権限、オブジェクト権限の一覧も確認することができます。構文を確認後、実際に権限の付与・取消のSQL文を実行してみてくださいね。
今回の講義はここまでとしましょう。お疲れ様でした。
————————————————-
– ORACLE MASTER Silver SQL 2019 のご紹介
– ORACLE MASTER Silver SQL 2019 試験記事トピック一覧
————————————————-
その他の ORACLE MASTER 試験トピック解説講座シリーズ:
【Oracle University講師によるORACLE MASTER Gold DBA 2019 試験トピック解説講座】トピック一覧
————————————————-
