核心系统用PG了,抠脑壳的权限,搞晕了!

news2024/12/23 14:45:08
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、
高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理

微信:jem_db
QQ交流群:587159446
公众号:IT邦德

文章目录

  • 前言
    • 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)策略

--创建表test,包含不同用户数据信息
postgres=# CREATE TABLE test
(id int, role varchar(100), data varchar(100));

--打开行访问控制策略开关
postgres=# ALTER TABLE test ENABLE ROW LEVEL; 

--创建行访问控制策略,当前用户只能查看用户自身的数据
postgres=# CREATE ROW LEVEL SECURITY POLICY test_rls 
ON test USING(role = CURRENT_USER);

1.3 列级访问

在一些业务场景中,某些列存储敏感信息,需要对用户不可见,但其他列的数据又需要用户能够查看或操作,此时就需要针对数据表的特定列做访问控制,实现针对用户的列级别的访问控制。

例:授予用户jack对customer_t1表的
c_customer_sk和c_first_name列的查询权限
GRANT SELECT (customer_sk, first_name) ON customer TO jack;
postgres=# \c - jack
postgres=# select customer_sk, first_name from customer;
 customer_sk | first_name
-------------+--------------
         2345| Grace
(1 row)
postgres=# select * from customer ;
ERROR:  permission denied for table customer

1.4 各类型对象的权限列表

2.PG权限管理

2.1 数据库权限

1. CREATE ON DATABASE:  
允许在数据库里创建新的模式
2. CONNECT ON DATABASE:   
允许用户连接到指定的数据库。
3. ALTER ON DATABASE:  
允许用户修改数据库中指定对象的属性,但不包括修改对象的所有者和修改对象所在的模式。
4. DROP ON DATABASE:  
允许用户删除数据库中指定的对象
5. ALL [ PRIVILEGES ] ON DATABASE: 
一次性给指定用户/角色赋予所有可赋予的权限
只有系统管理员有权执行GRANT ALL PRIVILEGES。

2.2 schema权限

1. 用户如果要创建模式需要有CREATE ON DATABASE权限
postgres=# grant create on database db_name to jack;
2. 模式属主表示模式的拥有者,拥有模式的所有权限
postgres=# alter schema myschema owner to jack
3. 用户只能访问属于自己的schema中的数据库对象,即使用的权限
postgres=# GRANT USAGE ON schema myschema TO jack;

2.3 表的权限

1. 创建表需要有CREATE ON SCHEMA的权限
postgres=# GRANT USAGE,CREATE ON schema myschema TO jack;
2. 修改表、查看表首先需要有USAGE的权限
postgres=# GRANT USAGE ON schema myschema TO jack;
postgres=# GRANT SELECT,INSERT,UPDATE,DELETE 
ON ALL TABLES IN SCHEMA myschema TO jack;
3. 需要针对数据表的特定列做访问控制,实现针对用户的列级别的访问控制。

2.4 表空间的权限

表空间是一个目录,可以存在多个,里面存储的是它所包含的数据库的各种物理文件。由于表空间是一个目 录,仅是起到了物理隔离的作用,其管理功能依赖于文件系统。

PG自带了两个表空间,即默认表空间pg_default共享表空间pg_global

1. 表空间属主,表示表空间的拥有者
postgres=# CREATE TABLESPACE mytbs 
RELATIVE LOCATION 'tablespace/mytbs';
postgres=# alter tablespace mytbs owner to jack;
2. 在表空间中创建对象,需要以下权限
postgres=# GRANT CREATE ON TABLESPACE mytbs TO jack;

3.PG的三权分立

默认情况下拥有Superuser属性的系统管理员,具备系统最高权限。但在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立。

三权分立的基本思想是将系统中关键操作的权限分配给不同的角色,
来避免单个用户或角色能够完全控制整个系统,
这通常包括以下三个角色:

1.数据库管理员(DBA):
负责数据库运维管理任务、如创建用户、
表空间、schema管理等。
2.安全管理员(SA):
负责数据库安全策略的制定和实施,
包括用户权限分配和审计等。
3.应用管理员(AA):
负责数据库应用的开发和维护,
包括表结构设计、查询优化和数据加载等。

4.总结

PG的权限对于初学者确实很绕,但也是由于PG的权限的规范管理,使得PG的安全级别控制的非常的规范,后期详细的PG权限分享请大家多看我的直播!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2128030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ThinkPHP8出租屋管理系统

有需要请加文章底部Q哦 可远程调试 ThinkPHP8出租屋管理系统 一 介绍 此出租屋管理系统基于ThinkPHP8框架开发,数据库mysql,前端Vue3,前后端不分离,系统主要角色为管理员。房租计算器,房东记账收租管理,房…

使用 Prism 框架实现导航.NET 6.0 + WPF

动动您的手指关注下公众号,获取更多优质文章 前言 Prism 一个开源的框架,专门用于开发可扩展、模块化和可测试的企业级 XAML 应用程序,适用于 WPF(Windows Presentation Foundation)和 Xamarin Forms 等平台。 Prism…

用什么软件可以把做过的试卷还原?4款软件轻松还原

用什么软件可以把做过的试卷还原?在数字化教育的浪潮中,将做过的试卷还原成空白状态不仅满足了学生和教师对于重复练习和分享的需求,还极大地提升了学习效率与资源利用率。这一功能使得错题重做、模拟考试等教学活动更加便捷,促进…

Openpose

核心概念: OpenPose基于Part Affinity Fields(PAFs,部件亲和场)的概念,这是一种非参数化的表示方法,用于学习图像中个体的身体部位之间的关联。 系统流程: 输入图像: 方法接受一个…

单片机,传感器等低功耗管理

**有些客户需求,把设备做成低功耗管理,这样就可以节省电池的电量,也可以增加传感器的使用寿命 HCLK为CPU提供时钟,内核执行代码。当CPU不需要继续运行时,可以利用多种低功耗模式,等待某个事件触发 ① 睡眠…

大模型实战教程:使用Langchain与ChatGLM实现本地知识库

大语言模型也只是将用户提供的大规模数据集训练而来,也并非万能的什么都知道,特别是一些小众知识、内部数据或私密的个人数据等,此时ChatGLM3肯定会胡乱回答就是ChatGPT4也不一定能给出满意回答;不少公司、个人都有自己的知识库或…

大型集团企业指标体系建设

大型集团企业在进行指标体系建设时,通常会遵循以下几个方面的要求来确保体系的有效性和适用性: 全面性:指标体系应覆盖企业的各个方面,包括但不限于财务状况、市场表现、运营效率、客户满意度、员工发展等。这有助于企业从多个角度…

c4d的vray的蒙版渲染

在一个比较隐藏的角落,extensions>v-ray Tags> Object Properties>勾选Matte Surface,Alpha Contribution打上-1.

JVM面试真题总结(七)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 解释GC的引用计数算法及其局限性 引用计数算法是一种非常直观、简…

Rocky Linux 9 初次安装后启用 SSH Root 远程登录

Rocky Linux 9 是由 CentOS 的创始人发布的版本,目的是解决 CentOS 停服后企业用户的替代需求。Rocky Linux 9 基于 Red Hat Enterprise Linux 9 下游版本。在 Rocky Linux 9 中,为了增强系统的安全性,默认禁用了 SSH root 密码登录。这是为了…

第12章 进入保护模式

第12章 进入保护模式 章节一开始说明了为什么要有保护模式?后续介绍了如何进入保护模式。 实模式:在实模式下,程序是可以“为所欲为”的。它想访问内存的哪一部分,都可以很轻松地通过设置段地址和偏移地址来办到。 保护模式&am…

Plasma FX

Plasma FX是使用自定义着色器的等离子效果的集合。 通过调整粒子系统参数和颜色,可以轻松自定义效果。 特征 50+效果 定制化 等离子粒子着色器 演示场景 移动预制件 下载:​​Unity资源商店链接资源下载链接 效果图:

nodejs基础教程之-异步编程promise/async/generator

1. 异步 所谓"异步",简单说就是一个任务分成两段,先执行第一段,然后转而执行其他任务,等做好了准备,再回过头执行第二段,比如,有一个任务是读取文件进行处理,异步的执行过程就是下面…

C#获取计算机信息

目录 效果 项目 代码 下载 效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Management; n…

基于SSM的二手物品交易管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的二手物品交易管理系统7拥有两种角色 管理员:用户管理、分类管理、商品管理、订单管理、系统管理等 用户:登录注册、充值、收货、评价、收藏、购物车、订…

vue + Element UI table动态合并单元格

一、功能需求 1、根据名称相同的合并工作阶段和主要任务合并这两列,但主要任务内容一样,但要考虑主要任务一样,但工作阶段不一样的情况。(枞向合并) 2、落实情况里的定量内容和定性内容值一样则合并。(横向…

【机器学习】马尔可夫随机场的基本概念、和贝叶斯网络的联系与对比以及在python中的实例

引言 马尔可夫随机场(Markov Random Field,简称MRF)是一种用于描述变量之间依赖关系的概率模型,它在机器学习和图像处理等领域有着广泛的应用 文章目录 引言一、马尔科夫随机场1.1 定义1.2 特点1.3 应用1.4 学习算法1.5 总结 二、…

使用 Apache Spark 和 Deequ 分析大数据集

在当今的数据驱动环境中,掌握使用 Apache Spark 和 Deequ 对大型数据集进行分析对于任何处理数据分析、SEO 优化或需要深入研究数字内容的类似领域的专业人士来说都至关重要。 Apache Spark 提供处理大量数据所需的计算能力,而 Deequ 提供质量保证层&am…

杨氏矩阵中查找某个数字是否存在(不能使用遍历)

杨氏矩阵&#xff1a; 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的 如图所示&#xff1a; i为行&#xff0c;j为列 如果要找9&#xff0c;先从arr【0】【2】处开始找&#xff0c;3<9,i,排除第一行&#xff0c;6<9,i,排除第…

基于SSM和VUE的药品管理系统(含源码+sql+视频导入教程+文档)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM和VUE的药品管理系统2拥有两种角色 管理员&#xff1a;药品管理、出库管理、入库管理、销售员管理、报损管理等 销售员&#xff1a;登录注册、入库、出库、销售、报损等 1.1 背景…