1、/2025.01.04/搞晕了,这让人抠脑壳的PG权限,把ta嚼烂!王丁丁 PostgreSQL ACEBOE工业互联网数据库专家Subject 1用户和角色Subject 2三权分立的基本思想Subject 3PG权限概述Subject 4PG权限管理CONTENTPART 01用户和角色/2025.01.04/1.用户和角色4n 用户:是指被授权访问和管理数据库系统的实体,即使用和管理数据库资源的人。每个数据库管理系统(DBMS)都有自己的用户管理策略,用于管理数据库用户的访问权限。n 角色:是一种用于管理和组织数据库用户权限的重要概念。角色允许数据库管理员将一组权限分配给一个角色,然后将
2、该角色分配给一个或多个数据库用户。这样可以简化权限管理,提高安全性和可维护性。create usercreate rolelogin-ROLE创建时缺省不具有LOGIN权限CREATE ROLE hefei PASSWORD hefei;-USER创建时缺省就具备了LOGIN权限CREATE USER beijing PASSWORD beijing;ROLE不具有缺省的LOGIN权限,这就是ROLE/USER的区别PART 02PG的三权分立/2025.01.04/目的默认情况下拥有Superuser属性的系统管理员,具备系统最高权限。但在实际业务管理中,为了避免系统管理员拥有过度集中的权利
3、带来高风险,可以设置三权分立。分类三权分立的基本思想是将系统中关键操作的权限分配给不同的角色,来避免单个用户或角色能够完全控制整个系统,这通常包括以下三个角色:1.数据库管理员(DBA):负责数据库运维管理任务、如创建用户、表空间、schema管理等。2.安全管理员(SA):负责数据库安全策略的制定和实施,包括用户权限分配和审计等。3.应用管理员(AA):负责数据库应用的开发和维护,包括表结构设计、查询优化和数据加载等。2.PG的三权分立PART 03PG权限概述/2025.01.04/3.PG权限概述n 权限的分类对象权限对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,
4、以及通过GRANT将对象的权限授予其他用户。对象权限指数据库对象(表和视图、指定字段、数据库、函数、模式、表空间等)的相关权限(创建、删除、修改等)。GRANT命令将数据库对象的特定权限授予一个或多个角色,这些权限会追加到已有的权限上。系统权限系统权限又称为用户属性,包括Superuser、CREATE DB、CREATE ROLE、Replication和LOGIN。系统权限一般通过CREATE/ALTER ROLE语法来指定。其中,Superuser权限可以通过GRANT/REVOKE ALL PRIVILEGE授予或撤销。但系统权限无法通过ROLE和USER的权限被继承,也无法授予PUB
5、LIC。Schema/2025.01.04/3.PG权限概述GRANT使用GRANT语句将系统权限,对象权限与权限授予该用户schema授权:grant usage on schema sch1 to user1;REVOKEn 行级访问行级访问控制特性将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,读取到的结果是不同的。用户可以在数据表创建行访问控制(Row Level Security)策略-打开行访问控制策略开关postgres=#ALTER TABLE test ENABLE ROW LEVEL;-创建行访问控制策略,当前用户只能查
6、看用户自身的数据postgres=#CREATE ROW LEVEL SECURITY POLICY test_rls ON test USING(role=CURRENT_USER);-创建表test,包含不同用户数据信息postgres=#CREATE TABLE test(id int,role varchar(100),data varchar(100);REVOKE:使用REVOKE命令进行权限回收schema授权收回:revoke usage on schema sch1 from user1;/2025.01.04/3.PG权限概述n 列级访问在一些业务场景中,某些列存储敏感信息