文章目录
- 前言
- 1.PG权限架构
- 1.1 层层通关
- 1.2 行级访问
- 1.3 列级访问
- 1.4 各类型对象的权限列表
- 2.PG权限管理
- 2.1 数据库权限
- 2.2 schema权限
- 2.3 表的权限
- 2.4 表空间的权限
- 3.PG的三权分立
- 4.总结
前言
分享一些技能给大家,别让PG的权限再把大家绕进去了!
大家好,最近也是由于系统上线,PG的权限确实绕啊!对于我这个DBA老兵,花了2周的时间对权限进行了梳理,利用这次机会,分享一些技能给大家,别让PG的权限再把大家绕进去了!
1.PG权限架构
1.1 层层通关
1.允许多个用户使用同一数据库而不相互干扰,数据库严格分开的,不允许跨库访问
2.schema可以将数据库对象组织成易于管理的逻辑组,用户根据其对schema的权限,可以访问所连接数据库的schema中的对象
3.表空间是一个目录,仅是起到了物理隔离的作用,可以跨数据库,其管理功能依赖于文件系统。
4.ALL代表所有访问权限,PUBLIC代表所有用户
5.数据库在创建后,会自动创建名为public的schema,这个schema的all权限已经赋予给public角色
6.拥有者(Owner)对相应的数据库对象拥有完全的控制权
如果你想访问一个表,你就锝按照下面的流程层层通关才可以
1.2 行级访问
行级访问控制特性将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。
不同用户执行相同的SQL查询操作,读取到的结果是不同的。
用户可以在数据表创建行访问控制(Row Level Security)策略
1.3 列级访问
在一些业务场景中,某些列存储敏感信息,需要对用户不可见,但其他列的数据又需要用户能够查看或操作,此时就需要针对数据表的特定列做访问控制,实现针对用户的列级别的访问控制。
1.4 各类型对象的权限列表
2.PG权限管理
2.1 数据库权限
2.2 schema权限
2.3 表的权限
2.4 表空间的权限
表空间是一个目录,可以存在多个,里面存储的是它所包含的数据库的各种物理文件。由于表空间是一个目 录,仅是起到了物理隔离的作用,其管理功能依赖于文件系统。
PG自带了两个表空间,即默认表空间pg_default共享表空间pg_global
3.PG的三权分立
默认情况下拥有Superuser属性的系统管理员,具备系统最高权限。但在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立。
三权分立的基本思想是将系统中关键操作的权限分配给不同的角色,
来避免单个用户或角色能够完全控制整个系统,
这通常包括以下三个角色:
4.总结
PG的权限对于初学者确实很绕,但也是由于PG的权限的规范管理,使得PG的安全级别控制的非常的规范,后期详细的PG权限分享请大家多看我的直播!