基本情報技術者試験 (FE) 科目 A — データベース

GRANT と REVOKE — アクセス権の制御

定義

GRANT は表やビューに対する操作の権限を利用者に与える命令。REVOKE はそれを取り消す。WITH GRANT OPTION を付けると、権限を与えられた利用者がさらに他の利用者へ同じ権限を与えられる。

このレッスンは解説のみです

GRANT は「誰に」権限を与えるかを指定する命令で、データベースの利用者という 概念が必要になります。このツールはブラウザ内で表だけを扱うため実行できません。 試験にはよく出るので、書式と考え方を押さえてください。

アクセス権とは

データベースは複数の人が共有して使います。 「経理の人は給与を見られるが、営業の人は見られない」のように、誰が何をできるかを制御する仕組みがアクセス権です。

GRANT — 権限を与える

GRANT SELECT ON 商品 TO 山田

GRANT SELECT, UPDATE ON 商品 TO 山田, 佐藤

GRANT SELECT ON 商品 TO PUBLIC     -- 全利用者に

構文は GRANT 権限 ON 対象 TO 利用者 です。 与えられる権限には SELECT / INSERT /UPDATE / DELETE などがあり、ALL PRIVILEGES ですべてをまとめて指定することもできます。

PUBLICすべての利用者を指す特別な指定です。

WITH GRANT OPTION — 権限を配る権限

GRANT SELECT ON 商品 TO 山田 WITH GRANT OPTION

これを付けると、山田さんは自分が受け取った権限を さらに他の人へ与えられるようになります。 付けなければ、山田さんは自分が使えるだけです。

REVOKE — 権限を取り消す

REVOKE SELECT ON 商品 FROM 山田

GRANT ... TO に対して REVOKE ... FROM です。前置詞が変わる点が地味に問われます。

ビューと組み合わせる

アクセス権は列単位では指定しにくいため、 実務ではビューと組み合わせます。

-- 給与を含まないビューを作り、そのビューにだけ権限を与える
CREATE VIEW 従業員一覧 AS
  SELECT 社員番号, 氏名, 部門コード FROM 従業員;

GRANT SELECT ON 従業員一覧 TO PUBLIC

こうすると、利用者は氏名や部門は見られますが、 給与の列にはそもそも到達できません。「ビューは列を隠すのに使える」という定番の組み合わせで、 試験でもこの形で出題されます。

試験で問われるポイント

  • GRANT ... TO と REVOKE ... FROM の前置詞
  • WITH GRANT OPTION の意味(権限を再配布できる)
  • PUBLIC が全利用者を指すこと
  • ビューと組み合わせて列を隠す使い方

よくある疑問

Q.GRANT はこの実行シミュレーターで試せますか?
A.試せません。GRANT は「誰に」権限を与えるかを指定する命令で、データベースの利用者アカウントという概念が必要になります。このツールはブラウザ内で表だけを扱うため、利用者を持っていません。試験範囲なので解説だけを置いています。
Q.WITH GRANT OPTION を付けるとどうなりますか?
A.権限を与えられた利用者が、さらに別の利用者へ同じ権限を与えられるようになります。付けなければ、受け取った利用者は自分が使えるだけで、他人に配ることはできません。
Q.PUBLIC とは何ですか?
A.すべての利用者を指す特別な指定です。GRANT SELECT ON 商品 TO PUBLIC と書くと、そのデータベースの全利用者が商品表を参照できるようになります。

自由に試す / 他のレッスンを読む

データベース分野をもっと学ぶ(おすすめ書籍)

本セクションはAmazonアソシエイトのリンクを含みます。

オンライン個別指導

プログラムの読み方でつまずいたら。

たいてっくが、アルゴリズムの追い方から SQL・データベース設計まで、1対1で学習をサポートします。「コードを目で追っても何をしているか分からない」段階からで大丈夫です。まずは無料相談から。

無料相談を予約する →
受講者の声 (DB・SQL コース)
menta レビュー原文を見る →
  • 教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。
    H 様DB・SQL コース受講
  • 体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。
    M 様DB・SQL コース受講
  • 大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。
    K 様DB・SQL コース受講