分层访问控制

创建 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 数据库

使用组

  • 组:标识一个或多个用户的角色类型
  • 可在组级别实施访问控制
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 数据库

Passons à la pratique !

创建 PostgreSQL 数据库

Preparing Video For Download...