データベース応用 第 5 回 (安全なデータベースの設計) 「アクセス許可」 講義ノート目次

データベースは誰でもが書き込んだり、誰でもが閲覧できる必要は必ずしもない。 例えば、アルバイト店員が、時給を自由に設定できたり、 学生が他の学生の成績を閲覧できたりするようなシステムは、 データベースサーバとしてはよくない。

アクセスを制限する場合、アクセスするユーザを認可することによって可能 になる。アクセスの認可は GRANT、取り消しは REVOKE を使用する。 ここでは GRANT を練習する。

この講義の受講者は guest アカウントで SELECT が可能になるようなデータベースにしよう。

ta05001=> GRANT SELECT ON practice TO guest;

guest アカウントで自分のデータベースに guest アカウントで入るには、

ta05001=> \c - guest;

隣の学生の作成したデータベースに入ってみよう。-U で guest アカウント、 また隣の学生の作成したデータベースを指定しよう。同じ操作ができるか確認しよう。

% psql -U guest c10XXXX

まずは表をのぞいてみよう。


ta05001=> select * from practice;
ERROR:  permission denied for relation practice

guest アカウントには何も許可をしていないため、 表にアクセスすることができない。SELECT だけを許可しよう。


ta05001=> GRANT SELECT ON practice TO guest;
GRANT

guest アカウントにより、select ができることを確認しよう。


ta05001=> \c - ta05001;
You are now connected to database "ta05001" as user "ta05001".
ta05001=>  select * from practice;
 西村まどか | 月   |  4 | 前期 | 公益自由研究         | 102
 西村まどか | 月   |  5 | 通年 | 専門演習I            | 102
 西村まどか | 月   |  6 | 前期 | 専門演習II           | 102
 西村まどか | 火   |  1 | 前期 | 基礎プログラミングIB | 101
 西村まどか | 火   |  2 | 前期 | 基礎プログラミングIC | 101
 西村まどか | 水   |  1 | 前期 | 情報交換概論         | 102
 西村まどか | 火   |  1 | 後期 | 基礎プログラミングII | 101
 西村まどか | 火   |  2 | 後期 | 基礎プログラミングII | 101
 西村まどか | 水   |  2 | 後期 | 基礎の自然科学(物理) | 102

guest は UPDATE ができないことを確かめよ

アクセス停止

アクセスを停止するには REVOKE を使う。

データを削除させないよう設定するには次のとおり。

ta05001=> REVOKE DELETE ON practice FROM ta05yyy;

書き換えもできないようにするためにはどのようにしたらよいか。