PostgreSQL 角色权限管理

PostgreSQL  角色权限管理

 

PostgreSQL中使用角色的概念,表示用户账户。拥有登录权限的角色称为可登录角色。一个角色可以继承其他角色的权限,从而成为其成员角色,一个拥有成员角色的角色被称为组角色。

 

PostgreSQL新版本去除了用户的概念,取而待之的是可登录角色组角色。但是为保持前向兼容,create user create group 这两个命令依然支持,但建议最好不要使用。

 

PostgreSQL 安装过程中数据库初始化,系统会默认创建一个postgres的角色,同时会创建一个同名(postgres)的数据库。安装完成后要做的第一件事就是用psql或者pgAdmin工具以postgres角色身份登录,然后创建其他已规划好的角色。

 

  

角色

 

1.创建普通用户角色

create role username1 login password '123456' createdb valid until 'infinity';

create role username2 login password '123456craterole valid until 'infinity';

create role username3 login password '123456login valid until 'infinity;

 

valid 是可选的,其功能是为此角色权限设置有效期,过期后所有权限都将失效,默认为'infinity',即永不过期

createdb修饰符表示为此角色赋予创建新数据库的权限

craterole修饰符表示为此角色赋予创建新角色的权限

login 修饰符表示此角色只有登录权限

 

2.创建超级用户角色

create role username4 login password '123456' superuser valid until '2020-1-1 00:00:00';

 

3.修改角色权限

alter role username4 nologin nocreatedb;

 

 

组角色

 

1.创建组角色

create role username5 inherit;

grant username5 to username1;

grant username5 to username2;

 

Inherit表示username5的任何一个成员角色都将自动继承“超级用户权限”外的所有权限。出于安全考虑,PostgreSQL不允许超级用户权限通过继承的方式传递。

 

2.从组角色继承权限

 

PostgreSQL还有一个奇葩功能是禁止组角色将其权限授予其成员角色,该功能通过NOINHERIT 关键字控制。因此创建组角色时务必显式声明INHERIT或者NOINHERIT关键字。

 

有些权限无法继承,例如前面提到的SUPERUSER超级用户权限。但是其成员角色可以通过SET ROLE 命令来实现冒名顶替其父角色的身份,从而得到超级用户权限,但是这种冒名顶替仅在当前会话存储期间有效。

例如:username1username5的成员角色,其可以通过下列命令实现冒名顶替的目的。

SET ROLE username5

当然这是非永久授权行为,一旦会话结束,超级用户权限将被回收。

 

然而,命令:SET SESSION AUTHORIZATION username1,更加强大。

两者比较:

(1)首先,只有具备SUPERUSER权限的角色才可以执行SET SESSION AUTHORIZATIONSET ROLE任何一个成员角色都可以执行;

(2)其次,SET SESSION AUTHORIZATION可以使当前角色扮演系统中任何一个其他角色,SET ROLE仅限于扮演父角色。

(3)从系统内部实现机理看,每个会话会有两个表示当前用户身份的环境变量:一个是session_user,即当前用户登录带的原始身份;一个是current_user,即当前用户所扮演的身份,默认二者一致。SET SESSION AUTHORIZATION命令会将session_usercurrent_user都替换为所扮演角色的相应身份ID,而SET ROLE只会修改current_user,而保持session_user不变。这也意味着SET SESSION AUTHORIZATION命令会对后续的SET ROLE命令产生影响,因为原始身份session_user发生了变化;而SET ROLE不会对后续的SET SESSION AUTHORIZATION产生影响,因为原始身份session_user未发生变化。

 


 

 
 

 

PostgreSQL权限管理实战:5分钟掌握用户角色查询与权限分配技巧 本文提供PostgreSQL权限管理的实战指南,重点介绍如何快速查询用户角色与分配权限。通过解析pg_roles等系统视图和使用psql命令,帮助DBA和开发者掌握用户权限查询的核心技巧,并构建安全高效的数据库访问控制体系,提升运维效率与数据安全性。 阅读详情

相关推荐

PostgreSQL数据库安全加固(三)——设置密码更换周期

尽管PostgreSQL数据库不直接提供该密码更换周期功能,但是我们可以通过设置角色的有效期来强制指定,密码到期后, 将无法认证通过。`该项设置要求定期修改角色的有效期,如果你觉得这个过程繁琐或容易遗忘,那么也可以通过在数据库服务器上编写一个定期执行的shell脚本,将时间作为一个参数传入,定期执行alter role valid until '2023-01-01’命令即可。

ma286388309的博客 3205

PostgreSQL 权限管理

权限管理是所有数据库都绕不开的话题,PG 中使用 `角色role)`机制来处理用户身份认证。 本篇文章介绍如何管理 PostgreSQL 中的 `角色 用户 组角色`。

分享既学习 7443

PostgreSql 用户及权限管理

ALTER DEFAULT PRIVILEGES 允许设置将被应用于未来要创建的对象的特权(它不会影响分配给已经存在的对象的特权)。当前,只能修改用于模式、表(包括视图和外部表)、序列、函数和类型(包括域)的特权。其中,可设置权限的函数包括聚集函数和过程函数。当这个命令应用于函数时,单词 FUNCTIONS 和 ROUTINES 是等效的。(推荐使用 ROUTINES,因为它是用来囊括函数和过程的一个标准术语。在较早的 PostgreSQL 发行版中,只允许单词 FUNCTIONS。

脑子进水养啥鱼?的博客 1万+

PostgreSQL权限管理详解

本文介绍PostgreSQL中如何管理用户和权限,这些是正确管理PostgreSQL权限必备的前置知识。 角色 - ROLE PG中,围绕角色进行权限的管理。它可以被看做是一个user,或一组user。区分role、user、group。user和group是PG 8.1之前的两个实体,role是那之后唯一存在的实体,现在user和role,等价。 初始角色 数据库刚创建时,会自动创建一个超级用户的角色:postgres。任何操作都是从该用户开始的。 创建角色 CRAETE ROLE {角色名} [LOG

zou8944的博客 2万+

PostgreSQL安装用户、角色权限管理

记得使用-d指定数据库,默认的超级用户和创建的数据库都是postgres,如果只修改了超级用户名称,psql的时候记得使用-d指定数据库,否则默认连接的就是和用户名同名的数据库。psql命令非常方便,提供了很多默认选项,如果没有修改过默认配置,用起来非常方便顺手,但是如果修改了默认配置,就一定要多注意。PostgreSQL中用户与角色基本是一个东西,唯一区别是角色没有登录权限,用户有登录权限,可以登录。所以,我们涉及权限的时候,可以把权限分配给角色,在为用户指定不同的角色(一个用户可以有多个角色)

trayvontang的博客 2481

PostgreSQL用户角色权限管理

一.用户角色管理1.创建用户角色create user cjr LOGIN;create role cjr1 CREATEDB;create role cjr2 superuser; cr...

Enmotech的博客 7215

[转帖]PostgreSQL的用户、角色权限管理

PostgreSQL的用户、角色权限管理 2018年05月18日 14:02:29jerry-89阅读数 6143 https://blog.csdn.net/eagle89/article/details/80363365 最近公司在用瀚高 需要学习一下. 版权声明:本文为博主原创文章,未经博主允许不...

weixin_30265103的博客 331

PostgreSQL权限管理:Postgres Operator角色与用户配置终极指南

Postgres Operator是一个强大的开源工具,专门用于在Kubernetes环境中创建和管理PostgreSQL集群。本指南将详细介绍如何使用Postgres Operator进行权限管理,包括角色创建、用户配置和访问控制的最佳实践。 ## 为什么选择Postgres Operator进行权限管理? Postgres Operator简化了PostgreSQL集群的权限管理流程,通过

gitblog_01185的博客 1042

PostgreSQL的用户、角色权限管理

Pg权限分为两部分,一部分是“系统权限”或者数据库用户的属性,可以授予role或user(两者区别在于login权限);一部分为数据库对象上的操作权限。超级用户不做权限检查,其它走acl。对于数据库对象,开始只有所有者和超级用户可以做任何操作,其它走acl。在pg里,对acl模型做了简化,组和角色都是role,用户和角色的区别是角色没有login权限。pg_roles:该视图提供访问数据库角色有关...

eagle89的专栏 2万+

Postgresql安装、初始化及用户, 角色权限管理

du: 可以查看所有已存在的用户/角色, 以及它们拥有的权限属性\l: 可以查看所有数据库及其属主和所有拥有权限的用户配置选择一个数据库后,\dt可以查看所有表的属主和相应用户权限select * from information_schema.role_table_grants where grantee = '用户名';可以查看指定用户拥有的所有数据库权限。

wang11876的博客 7050

PostgreSQL 用户、角色权限管理

PostgreSQL是一个多用户数据库,可以为不同用户指定允许的权限。 角色 PostgreSQL使用角色的概念管理数据库访问权限。 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。 角色可以拥有数据库对象(比如表)以及可以把这些对象上的权限赋予其它角色, 以控制谁拥有访问哪些对象的权限。 操作角色的语句: create role db_rol...

weixin_34212762的博客 2006

PostgreSQL用户、角色权限管理

PostgreSQL是一个多用户数据库,可以为不同用户指定允许的权限。 角色 PostgreSQL使用角色的概念管理数据库访问权限。 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。 角色可以拥有数据库对象(比如表)以及可以把这些对象上的权限赋予其它角色, 以控制谁拥有访问哪些对象的权限。 操作角色的语句: create role db_role1; /-...

小田坎儿 804

postgresql数据库用户角色权限管理命令

5、每个用户默认具有所有数据库public 模式的访问和创建权限,但默认没有访问其他用户创建的对象权限。postgresql数据库角色与用户基本是一个概念,用户默认有login权限,这是二者唯一区别。3、给角色授予cep数据库下message_center模式下的表的查询权限。4、登录用户测试查询权限是否生效。2、给角色授权登录权限。

qq_37139220的博客 212

《openEuler2403 安装 PostgreSQL17 后用户权限管理角色创建与权限分配》

在 openEuler 2403 系统上安装 PostgreSQL 17 后,用户权限管理是确保数据库安全的核心任务。PostgreSQL 使用“角色”(roles)来统一管理用户和组权限:角色可以代表单个用户或一组用户,权限通过 SQL 命令分配给角色。在开始权限管理前,确保 PostgreSQL 17 已正确安装并运行。在 openEuler 2403 上管理 PostgreSQL 17 的权限,核心是使用。以下是一个端到端示例,展示如何创建角色数据库和表,并分配权限。:如果需撤销权限,使用。

2501_93876619的博客 928

PostgreSQL数据库安全——基于角色权限管理

在PG 8.1之前,用户和组都是独立类型的记录,之后的版本不再区分用户和组,用角色概念统一了用户和组。

肥叔菌的博客 436

Mathesar权限管理完全指南:基于PostgreSQL角色的精细化访问控制

Mathesar是一款100%开源的电子表格式PostgreSQL数据管理界面,为所有技术水平的用户提供直观的数据查看、编辑、查询和协作体验。其核心优势在于完全基于原生PostgreSQL角色系统构建的精细化访问控制体系,让团队协作既安全又高效。本文将深入解析Mathesar的权限管理系统,帮助您掌握基于角色的访问控制最佳实践。 ## 🛡️ Mathesar权限架构:四层安全模型 Mathe

gitblog_01146的博客 681
上一篇: GroovyShell 脚本应用
下一篇: PostgreSQL 配置文件之pg_hba.conf
iamlyky
博客等级 码龄14年 6粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值