`

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未发生变化。

 


 

 
 

 

  • 大小: 12.2 KB
  • 大小: 12.5 KB
  • 大小: 12.1 KB
  • 大小: 12.5 KB
分享到:
评论

相关推荐

    postgrest和postgresql权限认证,jwt插件

    - 角色和权限管理:JWT可以包含用户的角色信息,PostgreSQL可以根据角色分配不同的权限,实现细粒度的访问控制。 - 安全性:由于JWT是加密的,即使被拦截,攻击者也无法解读其中的信息,增加了安全性。 - 非持久化...

    PostgreSQL中文手册9.2

    PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (角色和权限 角色和权限 角色和权限 ) 52 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据库管理 数据库管理 数据库管理 ) 54 一、...

    VFrontMySQL与PostgreSQL数据库前端管理工具v0.95c

    2. **分组与权限管理**:VFront支持对数据库中的数据进行分组管理,并能根据不同的用户角色设置权限。这使得团队协作更加有序,确保数据的安全性,避免了未经授权的访问和修改。 3. **数据导入导出**:VFront提供了...

    postgresql

    7. **安全与权限**:PostgreSQL提供了精细的权限控制机制,允许管理员设置用户访问权限、角色、表和函数的权限,以保证数据的安全。 8. **备份与恢复**:定期备份是数据库管理的重要环节。PostgreSQL支持多种备份...

    PostgreSQL12.2中文手册.chm.7z

    5. **安全性与权限**:PostgreSQL有强大的用户管理和权限控制机制,手册会指导如何设置用户、角色,以及如何分配权限和访问控制。 6. **复制与高可用性**:PostgreSQL支持多种复制模式,如物理复制、逻辑复制,以及...

    PostgreSQL_8.2.3.rar_postgresql_windows 8

    3. **安全性与权限**:在8.2.3版本中,理解角色、用户管理和权限控制是关键。文档可能会详细解释如何创建和管理用户账户,以及如何设置对象级别的访问权限。 4. **数据类型与操作**:PostgreSQL支持多种数据类型,...

    基于Python的Flask WEB框架实现后台权限管理系统

    本项目基于Python的轻量级Web框架Flask,旨在实现一个完整的后台权限管理功能,包括用户管理、角色管理、资源管理和机构管理。Flask因其简洁、灵活的特性,被广泛用于快速开发小型到中型的Web应用。 首先,让我们...

    PostgreSQL实战

    《PostgreSQL实战》将介绍权限控制、角色管理、加密选项等,确保数据库的安全运行。同时,也会讨论备份与恢复策略,以应对可能的数据丢失风险。 最后,本书还会涉及监控和性能调优。通过监控工具和性能指标,可以...

    MySQL和PostgreSQL的比较

    两者在数据库连接和用户管理上具有相似性,客户机通过指定数据库名、用户ID和密码来连接数据库,同时利用角色管理机制控制数据库访问权限。不过,PostgreSQL提供了更为丰富的身份验证方法,包括信任、口令、Kerberos...

    PostgreSQL教程(十二):角色和权限管理介绍

    通过本文,我们可以看到,PostgreSQL角色和权限管理机制是通过角色的概念和权限设置来实现的。利用角色作为权限分配的单位,能够有效地管理用户的访问控制,并确保数据的安全性。在创建角色时,要根据实际需要为角色...

    PGAdmin系统管理PostgreSQL 中文手册

    用户与权限管理** pgAdmin提供了方便的用户和角色管理功能。可以创建新的用户,分配不同的权限,控制他们对数据库对象的访问。此外,还可以设置访问控制列表(ACL)以进一步细化权限。 **6. 数据备份与恢复** pg...

    PostgreSQL 角色与用户管理介绍

    PostgreSQL角色与用户管理介绍 在数据库管理系统中,角色和用户是两个非常核心的概念,它们用于对数据库中的不同使用者进行身份验证与权限控制。虽然在很多数据库系统中角色与用户被视为两个不同的实体,但在...

    数据库系统原理与开发-PostgreSQL数据库管理项目实践.ppt

    总的来说,这个PPT文档提供了对PostgreSQL数据库管理系统深入理解的基础,强调了角色权限管理、用户管理以及数据库安全性和可用性的重要性。通过这样的项目实践,学习者可以掌握数据库管理的关键技能,为实际工作中...

    Postgresql修炼之道 pdf

    7. 安全特性:包括角色管理、权限控制、SSL连接、加密功能等,确保数据库的安全性。 8. 扩展模块:Postgresql支持丰富的扩展模块,如PostGIS用于地理空间数据的存储与查询,pg_stat_statements用于分析SQL执行效率...

    pgAdmin III postgresql 管理工具

    - **权限管理**:可以设置和修改数据库用户的访问权限,管理角色和权限分配。 - **图表和报告**:可以生成各种数据库图表和统计报告,帮助分析和理解数据。 - **服务器组**:允许组织和管理多个服务器实例,方便大...

    postgresql集群管理器-pgclusteradmin-阿弟@PostgreSQL1

    【PostgreSQL 集群管理器 - pgclusteradmin】是一个基于 Go 语言开发的高效能 PostgreSQL 集群管理工具,特别设计用于简化 PostgreSQL 的集群维护任务。它提供了丰富的功能,包括节点信息管理、参数配置、服务控制、...

    基于Greenplum Hadoop- 分布式平台的大数据解决方案08 - 角色权限及客户端认证管理(2).zip

    在这样的分布式平台上,角色权限管理是保障数据安全的关键。在Greenplum中,可以创建不同的用户角色,分配特定的权限,如读取、写入、修改或删除数据。这有助于防止未经授权的访问和操作,保护数据的完整性和隐私。...

    PostgreSQL从入门到精通视频教程(全).zip

    4. **安全性与权限管理**:掌握用户账户的创建、角色管理、权限分配和访问控制。 5. **备份与恢复**:学习如何进行数据库备份,使用pg_dump和pg_restore工具,以及如何实现热备份和流复制。 **二、进阶篇** 6. **...

    PostgreSQL1

    安全性是另一个重要方面,PostgreSQL提供了角色系统、权限控制、加密选项以及审计功能,确保数据安全。例如,通过GRANT和REVOKE语句,可以精确地控制用户对数据库对象的操作权限。 备份与恢复是数据库管理的关键...

Global site tag (gtag.js) - Google Analytics