等保2.0涉及的PostgreSQL数据库(中)

访客4年前关于黑客接单501

续上文,等保2.0涉及的PostgreSQL数据库上

应对登录的用户分配账户和权限

针对这个测评项,首先我们要搞清楚postgresql数据库的相应权限问题

在postgresqll数据库中,认为用户就是一个相应的role,PostgreSQL使用角色的概念管理数据库访问权限。一个角色可以被看成是一个数据库用户或者是一个数据库用户组,这取决于角色被怎样设置。角色可以拥有数据库对象(例如,表和函数)并且能够把那些对象上的权限赋予给其他角色来控制谁能访问哪些对象。此外,还可以把一个角色中的成员资格授予给另一个角色,这样允许成员角色使用被赋予给另一个角色的权限。

1.系统权限

1.1 role属性

可以认为是这个用户所具有的系统权限.

  • LOGIN --具有登录权限
  • SUPERUSER --超级用户,具有所有系统权限,除了登录验证
  • CREATEDB --创建数据库权限
  • CREATEROLE --创建role权限
  • PASSWORD --设置密码

1.2 修改属性

创建test角色

create role test login;

alter role test createdb createrole password '****@123';

alter role test nocreatedb nocreaterole superuser;

通过psql程序登录可使用\du命令列出现有角色,以及相应的角色权限

2.role成员权限

role membership(role成员)为了管理上的方便,我们可以创建一个role group,然后可以将各用户或者有特殊权限的role组织在一起,各个role就是这个role group的membership.

role group 是不带login的role,因为pg使用role来表示所有的角色、用户、用户组,所以不要混淆,创建语句都是create role.

2.1 继承role group

1)直接继承

我们创建一个用户,两个角色,分别有直属一个表的查询权限create role jack login inherit;create role r1;create role r2;

然后创建对应的表

授予查询权限

进行grant授权,使jack成为r1,r2的membership

测试角色切换

jack 继承了r1,r2的权限

2)间接继承

移除membership

可以使用revoke group_role from role1,…命令

此时,r1属于r2,然后jack又属于r1

关闭r1的继承

alter role r1 noinherit;

然后再尝试访问tab,发现tab2无法访问取消继承权限后,r1也无权限访问

移除后将无权限

注意:授权不能形成回路

3)系统权限任何时候都不会主动继承

系统权限不会继承,只有主动set才生效

使用set命令后,该会话会具有group_role的临时系统权限,且会被认为是group_role角色,创建的表之类的均为set role的权限

重新开启会话后,无权限

三种方式还原到最初的jack角色:

综上所述:角色属性login、superuser、createdb和createrole可以被认为是一种特殊权限,但是它们从来不会像数据库对象上的普通权限那样被继承。要使用这些属性,你必须实际set role到一个有这些属性之一的特定角色。

4)角色删除

删除role,role下有权限或者是对象属于此role,则删除不了

移除掉相关权限关联后进行删除,然后涉及到r1的成员或者是group_role自动释放

5)role总结
  • pg中的role包含了用户,角色,角色组,成员等所有含义,如使用create role来创建
  • 一个role可以成为多个role的成员,根据role的inherit属性来决定是否集成其他role的各种权限
  • 继承关系不能形成回路
  • 删除role需要先清理此role关联的各种权限

3.等保查看相应点

查看当前数据库内有哪些角色,可通过工具进行查看

然后再查看对应角色对应的权限

命令行界面可以通过\du命令列出现有角色和权限

个人认为,针对之一个条款,不管权限分配是否合理,只要给用户分配权限了就算符合

这条条款主要是为了防止匿名用户的登录,像NTP匿名登录那种

至于权限是否合理,已在后面的最小权限,管理用户的权限分离,访问控制粒度的地方体现,应在那些条款内去判断,所以对于之一条我们只要看他是否为用户分配了相应的账户和权限即可。

应重命名或删除默认账户,修改默认账户的默认口令

1.默认角色

可以通过工具进行查看

PostgreSQL提供一组默认角色, 他们可以访问特定的、通常需要的特权功能和信息。 管理员可以将这些角色 GRANT 给用户和/或其环境中的其他角色, 为这些用户提供对指定功能和信息的访问权限。请注意,每个默认角色的特定权限可能会因为将来添加额外的功能而发生变化。 管理员应监控发行说明以进行更改,如下图:

角色允许的权限
pg_read_all_settings阅读所有配置变量,即使那些通常只对超级用户可见的配置变量。
pg_read_all_stats阅读所有pg_stat_*视图并使用各种统计相关的扩展,甚至那些通常只对超级用户可见的扩展。
pg_stat_scan_tables执行可能对表进行可能需要很长时间ACCESS SHARE锁定的监视功能。
pg_signal_backend给其他后端发送信号(比如: 取消查询、终止)。
pg_monitor读取/执行各种监视视图和函数。 此角色是pg_read_all_settings、?pg_read_all_stats和?pg_stat_scan_tables的成员。

pg_mointor、pg_read_all_settings、pg_read_all_stats和pg_scan_tables角色旨在允许管理员轻松配置角色以见识数据库服务器。他们授予一组通用权限,允许角色读取通常仅限于超级用户的各种有用的配置设置,统计和其他系统信息。应小心授予这些角色,以确保只在需要执行所需监视的情况下才会使用这些角色。管理员可以使用grant命令给这些用户授予访问权限:grant pg_signal_backend to admin_user;上述的的默认角色默认都是不可登录的。

2. 等保查看相应点

默认账户为postgres,查看其是否设置禁止登录,或将其重命名在psql的程序下可以通过\du命令查看,无法登录将有cannot login字样

相关文章

socco手表价格(mko手表老手表正常的价格)

多爵socco手表价值表价值查询购置销售公司 socco手表时尚青款什么价   831100/元     青岛翻黄钟表有限公司   mko手表内行表银灰版报价   317900/元     中山...

黑客能破解qq空间吗,黑客软件能监控别人手机,克制黑客攻击服务器网站

或许 触发裂缝后, winrar解压程序将会操作压缩包内文件,推行终究的PE荷载backup.exe。 A count of packets which the program will send...

广西中美集团被控骗贷420多亿元 行贿1500多万元

备受关注的广西中美天元融资性担保集团有限公司(以下简称为中美天元集团)被控单位骗取银行贷款及单位行贿犯罪一案,于2017年1月首次开庭休庭后,今年8月2日上午9时30分,在柳州市中级人民法院公开复庭审...

全面网站SEO优化攻略

全面网站SEO优化攻略

一个优质网站的产生就需要SEO优化,不是每天没日没夜的更新文章就是优化,这只是一个优化过程,没有达到真正的优化目的。那优化的目的就是将优质内容通过搜索引擎展现给需要的我们,而不是单纯的交换友链和伪原创...

做什么挣钱呢?首推这三个项目!

针对许多要想自主创业的人而言,挑选一个比较好的创业好项目或者领域,能协助自身迅速地完成取得成功的大总体目标。并且好的创业项目代表着自主创业市场前景比较好,更有实际操作的室内空间。针对许多人而言,好的创...

oppo手机怎么样?OPPO、vivo手机到底怎么样

oppo手机怎么样?OPPO、vivo手机到底怎么样

对于OPPO和vivo手机,之所以会被很多人看不起,主要有两个方面,第一是很多人觉得它的性能低,低配高价格。第二就是它靠的广告和明星代言才起来的。其实并不是这样的,vivo和OPPO之所以能成为目前热...