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 '123456' craterole valid until 'infinity'; create role username3 login password '123456' login 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 命令来实现冒名顶替其父角色的身份,从而得到超级用户权限,但是这种冒名顶替仅在当前会话存储期间有效。
例如:username1是username5的成员角色,其可以通过下列命令实现冒名顶替的目的。
SET ROLE username5
当然这是非永久授权行为,一旦会话结束,超级用户权限将被回收。
然而,命令:SET SESSION AUTHORIZATION username1,更加强大。
两者比较:
(1)首先,只有具备SUPERUSER权限的角色才可以执行SET SESSION AUTHORIZATION,SET ROLE任何一个成员角色都可以执行;
(2)其次,SET SESSION AUTHORIZATION可以使当前角色扮演系统中任何一个其他角色,SET ROLE仅限于扮演父角色。
(3)从系统内部实现机理看,每个会话会有两个表示当前用户身份的环境变量:一个是session_user,即当前用户登录带的原始身份;一个是current_user,即当前用户所扮演的身份,默认二者一致。SET SESSION AUTHORIZATION命令会将session_user和current_user都替换为所扮演角色的相应身份ID,而SET ROLE只会修改current_user,而保持session_user不变。这也意味着SET SESSION AUTHORIZATION命令会对后续的SET ROLE命令产生影响,因为原始身份session_user发生了变化;而SET ROLE不会对后续的SET SESSION AUTHORIZATION产生影响,因为原始身份session_user未发生变化。
相关推荐
- 角色和权限管理:JWT可以包含用户的角色信息,PostgreSQL可以根据角色分配不同的权限,实现细粒度的访问控制。 - 安全性:由于JWT是加密的,即使被拦截,攻击者也无法解读其中的信息,增加了安全性。 - 非持久化...
PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (角色和权限 角色和权限 角色和权限 ) 52 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据库管理 数据库管理 数据库管理 ) 54 一、...
2. **分组与权限管理**:VFront支持对数据库中的数据进行分组管理,并能根据不同的用户角色设置权限。这使得团队协作更加有序,确保数据的安全性,避免了未经授权的访问和修改。 3. **数据导入导出**:VFront提供了...
7. **安全与权限**:PostgreSQL提供了精细的权限控制机制,允许管理员设置用户访问权限、角色、表和函数的权限,以保证数据的安全。 8. **备份与恢复**:定期备份是数据库管理的重要环节。PostgreSQL支持多种备份...
5. **安全性与权限**:PostgreSQL有强大的用户管理和权限控制机制,手册会指导如何设置用户、角色,以及如何分配权限和访问控制。 6. **复制与高可用性**:PostgreSQL支持多种复制模式,如物理复制、逻辑复制,以及...
本项目基于Python的轻量级Web框架Flask,旨在实现一个完整的后台权限管理功能,包括用户管理、角色管理、资源管理和机构管理。Flask因其简洁、灵活的特性,被广泛用于快速开发小型到中型的Web应用。 首先,让我们...
《PostgreSQL实战》将介绍权限控制、角色管理、加密选项等,确保数据库的安全运行。同时,也会讨论备份与恢复策略,以应对可能的数据丢失风险。 最后,本书还会涉及监控和性能调优。通过监控工具和性能指标,可以...
两者在数据库连接和用户管理上具有相似性,客户机通过指定数据库名、用户ID和密码来连接数据库,同时利用角色管理机制控制数据库访问权限。不过,PostgreSQL提供了更为丰富的身份验证方法,包括信任、口令、Kerberos...
通过本文,我们可以看到,PostgreSQL角色和权限管理机制是通过角色的概念和权限设置来实现的。利用角色作为权限分配的单位,能够有效地管理用户的访问控制,并确保数据的安全性。在创建角色时,要根据实际需要为角色...
用户与权限管理** pgAdmin提供了方便的用户和角色管理功能。可以创建新的用户,分配不同的权限,控制他们对数据库对象的访问。此外,还可以设置访问控制列表(ACL)以进一步细化权限。 **6. 数据备份与恢复** pg...
PostgreSQL角色与用户管理介绍 在数据库管理系统中,角色和用户是两个非常核心的概念,它们用于对数据库中的不同使用者进行身份验证与权限控制。虽然在很多数据库系统中角色与用户被视为两个不同的实体,但在...
总的来说,这个PPT文档提供了对PostgreSQL数据库管理系统深入理解的基础,强调了角色权限管理、用户管理以及数据库安全性和可用性的重要性。通过这样的项目实践,学习者可以掌握数据库管理的关键技能,为实际工作中...
7. 安全特性:包括角色管理、权限控制、SSL连接、加密功能等,确保数据库的安全性。 8. 扩展模块:Postgresql支持丰富的扩展模块,如PostGIS用于地理空间数据的存储与查询,pg_stat_statements用于分析SQL执行效率...
3. **安全性与权限**:在8.2.3版本中,理解角色、用户管理和权限控制是关键。文档可能会详细解释如何创建和管理用户账户,以及如何设置对象级别的访问权限。 4. **数据类型与操作**:PostgreSQL支持多种数据类型,...
- **权限管理**:可以设置和修改数据库用户的访问权限,管理角色和权限分配。 - **图表和报告**:可以生成各种数据库图表和统计报告,帮助分析和理解数据。 - **服务器组**:允许组织和管理多个服务器实例,方便大...
【PostgreSQL 集群管理器 - pgclusteradmin】是一个基于 Go 语言开发的高效能 PostgreSQL 集群管理工具,特别设计用于简化 PostgreSQL 的集群维护任务。它提供了丰富的功能,包括节点信息管理、参数配置、服务控制、...
在这样的分布式平台上,角色权限管理是保障数据安全的关键。在Greenplum中,可以创建不同的用户角色,分配特定的权限,如读取、写入、修改或删除数据。这有助于防止未经授权的访问和操作,保护数据的完整性和隐私。...
安全性是另一个重要方面,PostgreSQL提供了角色系统、权限控制、加密选项以及审计功能,确保数据安全。例如,通过GRANT和REVOKE语句,可以精确地控制用户对数据库对象的操作权限。 备份与恢复是数据库管理的关键...
4. **安全性与权限管理**:掌握用户账户的创建、角色管理、权限分配和访问控制。 5. **备份与恢复**:学习如何进行数据库备份,使用pg_dump和pg_restore工具,以及如何实现热备份和流复制。 **二、进阶篇** 6. **...