データベースのロールとアクセス制御

データベース設計

Lis Sulmont

Curriculum Manager

ビューへのアクセスの付与と取り消し

GRANT privilege(s)またREVOKE privilege(s)

ON object

TO roleまたFROM role

  • 権限: SELECTINSERTUPDATEDELETEなど
  • オブジェクト: テーブル、ビュー、スキーマなど
  • ロール: データベースユーザーまたはデータベースユーザーのグループ
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
データベース設計

データベースロール

  • データベースアクセス権限を管理する
  • データベースロールは、次の情報を含むエンティティである:
    • ロールの権限を定義する
      • ログインできるか?
      • データベースを作成できるか?
      • テーブルに書き込めるか?
    • クライアント認証システムと連携する
      • パスワード
  • ロールは1人以上のユーザーに割り当てることができる
  • ロールはデータベースクラスター設定全体でグローバル
データベース設計

ロールの作成

  • 空のロール
CREATE ROLE data_analyst;
  • 一部の属性が設定されたロール
CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
CREATE ROLE admin CREATEDB;
ALTER ROLE admin CREATEROLE;
1 http://bit.ly/postgresql_attributes
データベース設計

ロールからの権限の GRANT (付与)と REVOKE (削除)

GRANT UPDATE ON ratings TO data_analyst;
REVOKE UPDATE ON ratings FROM data_analyst;

PostgreSQL で利用可能な権限:

  • SELECTINSERTUPDATEDELETETRUNCATEREFERENCESTRIGGERCREATECONNECTTEMPORARYEXECUTE、やUSAGE
1 http://bit.ly/postgresql_privileges
データベース設計

ユーザーとグループ(両方がロール)

  • ロールは、ユーザー/グループ/その両方として機能できるエンティティ
    • ユーザーロール
    • グループの役割

Roles graphic where an outer circle is a group role and three inner circles within the outer circle are user roles

データベース設計

ユーザーとグループ(両方がロール)

グループロール

CREATE ROLE data_analyst;

ユーザーロール

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
データベース設計

ユーザーとグループ(両方がロール)

グループロール

CREATE ROLE data_analyst;

ユーザーロール

CREATE ROLE alex WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
データベース設計

一般的な PostgreSQL ロール

ロール 許可されたアクセス
pg_read_all_settings すべての設定変数を読み取る。通常はスーパーユーザーにのみ表示されるものも含む
pg_read_all_stats pg_stat_* ビューをすべて読み取る。通常はスーパーユーザーにのみ表示される各種統計関連拡張も使用する
pg_signal_backend 他のバックエンドに信号を送信する(例: クエリのキャンセル、終了)
その他 その他
1 http://bit.ly/default_roles_postgresql
データベース設計

ロールのメリットとデメリット

メリット

  • ロールはユーザーが削除された後も残る
  • ロールはユーザーアカウントの前に作成できる
  • DBAの時間を節約

デメリット

  • 役割が特定のユーザーに過剰なアクセス権を与えることがある
    • 注意が必要
データベース設計

練習しましょう!

データベース設計

Preparing Video For Download...