階層式存取控制

建立 PostgreSQL 資料庫

Darryl Reeves

Industry Assistant Professor, New York University

用 schema 進行存取控制

  • Schema:資料庫物件的命名容器
  • 可以用 schema 做存取控制
建立 PostgreSQL 資料庫

範例:finances 資料庫中的 schema 使用

  • 配偶可存取 finances 資料庫
  • 預設使用 public schema
  • 兩個新 schema:mespouse
CREATE SCHEMA me;
CREATE SCHEMA spouse;
CREATE TABLE me.account (...);
CREATE TABLE spouse.account (...);
建立 PostgreSQL 資料庫

授與 schema 權限

CREATE USER better_half WITH PASSWORD 'changeme';
GRANT USAGE ON SCHEMA spouse TO better_half;
GRANT USAGE ON SCHEMA public TO better_half;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA spouse;

TO better_half;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public

TO better_half;

已實作以 schema 為基礎的存取控制

建立 PostgreSQL 資料庫

使用群組

  • Group:識別一位或多位使用者的角色類型
  • 可在群組層級套用存取控制
CREATE GROUP family;
GRANT USAGE ON SCHEMA public TO family;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA

public TO family;
ALTER GROUP family ADD USER fin
ALTER GROUP family ADD USER better_half;
建立 PostgreSQL 資料庫

共用與個別的資料存取

  • 已啟用對 public schema 的共用存取
  • 以個別 schema 控制資料存取
建立 PostgreSQL 資料庫

一起來練習吧!

建立 PostgreSQL 資料庫

Preparing Video For Download...