三权分立
默认权限机制和管理员两节的描述基于的是数据库创建之初的默认情况。从前面的介绍可以看出,默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。
在实际业务管理中,为了避免系统管理员拥有过度集中的权利带来高风险,可以设置三权分立。将系统管理员的部分权限分立给安全管理员和审计管理员,形成系统管理员、安全管理员和审计管理员三权分立。
三权分立后,系统管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力。即不再拥有创建角色和用户的权限,并不再拥有查看和维护数据库审计日志的权限。关于CREATEROLE属性和AUDITADMIN属性的更多信息请参考CREATE ROLE。
三权分立后,系统管理员只会对自己作为所有者的对象有权限。
初始用户的权限不受三权分立设置影响。因此建议仅将此初始用户作为DBA管理用途,而非业务应用。
三权分立的设置办法为:将参数enableSeparationOfDuty设置为on。
三权分立前的权限详情及三权分立后的权限变化,请分别参见表1和表2。
表 1 默认的用户权限
仅对自己的函数有所有的权限,对其他用户放在public这个公共模式下的函数有调用的权限,对其他用户放在其他模式下的函数无权限。 | |||||
只可以查看部分系统表和视图。详细请参见系统表和系统视图。 |
表 2 三权分立较非三权分立权限变化说明
须知: PG_STATISTIC系统表和PG_STATISTIC_EXT系统表存储了统计对象的一些敏感信息,如高频值MCV。进行三权分立后系统管理员仍可以通过访问这两张系统表,得到统计信息里的这些信息。