0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【OSS-DB Silver対策】GRANTとREVOKE

Posted at

はじめに

OSS-DB Silver試験対策として、どの操作に対して権限を付与・削除できるのかをまとめました。

対象者

  • OSS-DB Silverを受験する方

GRANTとREVOKEについて

GRANT

権限付与のコマンドです。
権限付与には2種類あります。1

  • データベースオブジェクト(テーブル、列、ビュー、外部テーブル、シーケンス、データベース、外部データラッパ、外部サーバ、関数、手続き言語、スキーマ、テーブル空間)に対する権限の付与
  • ロール内のメンバ資格の付与(グループに対して権限を付与)

書式

データベースオブジェクトに対する権限付与

GRANT { 権限 [, ...] | ALL [PRIVILEGES] }
ON { オブジェクト種類 } オブジェクト名 [, ...]
TO { ロール名 | PUBLIC } [, ...]
[WITH GRANT OPTION];

ロールに対するメンバーシップ付与

GRANT ロール名 [, ...]
TO ロール名 [, ...]
[WITH ADMIN OPTION];

REVOKE

テーブルに設定されたアクセス権限を削除します。

REVOKE [GRANT OPTION FOR]
{権限 [, ...] | ALL [PRIVILEGES]}
ON {オブジェクト種類} オブジェクト名 [, ...]
FROM {ロール名 | PUBLIC} [, ...]
[CASCADE | RESTRICT];
-- aliceからSELECT権限を剥奪
REVOKE SELECT
ON TABLE sample
FROM alice;

権限一覧(主要オブジェクト)

オブジェクト 権限 内容
テーブル / ビュー SELECT 行を読み取る
INSERT 行を追加
UPDATE 行を更新(列単位可)
DELETE 行を削除
TRUNCATE テーブル全体を一括削除
REFERENCES 外部キー参照の対象にする
TRIGGER トリガ作成を許可
シーケンス SELECT currval() などの利用
UPDATE nextval() による増加
USAGE シーケンス参照許可
ALL 上記すべて
データベース CREATE 新しいスキーマ作成
CONNECT 接続許可
TEMP 一時テーブル作成
スキーマ CREATE スキーマ内にオブジェクト作成
USAGE 参照可能(中のオブジェクト利用には別途権限必要)
関数 / プロシージャ EXECUTE 実行許可
言語 USAGE 関数をその言語で作成可能
テーブルスペース CREATE その領域にDBオブジェクトを作成可能
外部サーバ USAGE 外部データラッパ(あるデータベースからその外部のデータへのアクセスを行うための仕組み)の利用許可

GRANT/REVOKEで扱えない操作

DBシステムを管理する権限は GRANT/REVOKEでは付与できません。
これらは ロール属性の指定(CREATE ROLE/ALTER ROLE)やスーパーユーザでのみ付与できます。

操作 付与できない理由
データベース削除・作成 DROP DATABASE / CREATE DATABASE データベース自体の管理は所有者または CREATEDB 権限を持つロール専用。GRANT対象は「既存DBの利用」に限られる。
ロール作成・削除・管理 CREATE ROLE / DROP ROLE / ALTER ROLE ユーザ管理はシステムレベルの仕事。GRANTではオブジェクト権限しか渡せない。ロール属性 CREATEROLE が必要。
スーパーユーザ権限 SUPERUSER これはシステム管理者専用。GRANTで配ると世界が終わるので不可。ロール作成時の属性でしか付与できない。
サーバ設定変更 ALTER SYSTEM, pg_reload_conf() 設定はクラスタ全体に影響するため、DB利用者に与える権限ではない。スーパーユーザのみ。
オブジェクト定義の変更・削除 ALTER TABLE, DROP TABLE これらはオブジェクトの所有者かスーパーユーザのみ可能。GRANTは「使う権限」だけ渡せる。

結論

  • GRANT・REVOKEで権限操作できるもの→「データベースオブジェクトを使う操作」
    (SELECT, INSERT, EXECUTE, CONNECT, USAGE…)

  • GRANT・REVOKEで権限操作できないもの→「DBシステムを管理する操作」
    (CREATE/DROP DATABASE, CREATE/DROP ROLE, SUPERUSER, ALTER SYSTEM, ALTER/DROP TABLE…)

  1. https://www.postgresql.jp/docs/9.5/sql-grant.html。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?