安全版普通用户获取系统对象的访问权限
文章目录
- 环境
- 文档用途
- 详细信息
环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 7
版本:4.3.4.7
文档用途
三权分立下,普通用户无权访问系统对象(表、视图、方法等),并且无法单独的进行赋权操作,本文档介绍通过暂时关闭secure_level后按需赋权,再打开secure_level的方式解决该问题。 但是由于需要暂时关闭强制访问和三权分立,届时所有普通用户可以访问系统对象,存在一定的安全风险,需谨慎操作。
详细信息
问题
三权分立下,普通用户无权访问系统对象(表、视图、方法等),并且无法单独的进行赋权操作。
Login User: testu highgo=> select * from user_tab_columns;ERROR: permission denied for relation user_tab_columnsLogin User: sysdba STATEMENT: grant select on user_tab_columns to testu;ERROR: Can't grant it to other role.Login User: syssso STATEMENT: grant select on user_tab_columns to testu;ERROR: Can't grant it to other role.
分析
oracle_catalog模式下user_table_column视图,是记录表字段信息的系统视图,三权分立和强制访问控制开启下,sysdba之外的所有用户无权访问该模式下的对象并且无法进行授权操作,对于普通用户来说,此时的权限就是自己所拥有的对象的访问和控制权限。
瀚高安全数据库的安全策略,是由安全管理员配置的。安全策略中包含多个安全相关配置项,如下所示:
highgo=> select show_secure_param();show_secure_param -----------------------------/Secure level = table, + -- 可选级别table\row\off。hg_SepOfPowers = on, + --三权分立开关。hg_MAControl = on, + --强制访问控制开关。hg_RowSecure = off, + -- 行安全开关。hg_PwdValidUntil = 7, + -- 密码有效期设置参数。hg_PwdErrorLock = 5, + --密码错误次数设置参数。hg_ShowLoginInfo = on, + -- 用户登陆信息开关。hg_ClientNoInput = 30 min, + --超时断开设置参数。hg_PwdRule = on, + --密码复杂度开关。(1 row)
三权分立开关、强制访问控制开关、行安全开关不能单独开启或者关闭,由Secure level统一管理,三个可选的参数,其中table代表行安全开关关闭,其余两个开启,row代表三个都开启,off代表三个都关闭。
处理
syssso登陆,关闭secure_level。
highgo=> select set_secure_level('off');set_secure_level -------------------------------------------Set security level to 'off' successfully.(1 row)
sysdba登陆,按需赋权。
highgo=> \c highgo sysdbahighgo=# grant select on user_tab_columns to testu;GRANT
注:如果使用grant select on user_tab_columns to PUBLIC;可以对所有已存在的用户赋权,并对后来创建的所有用户仍然有效。
syssso登陆,开启secure_level。
highgo=> \c highgo syssso --可能需要reload或重启You are now connected to database "highgo" as user "syssso".highgo=> select set_secure_level('table');set_secure_level ---------------------------------------------Set security level to 'table' successfully.(1 row)
测试。
Login User: testu Login time: 2020-03-31 22:38:19.631527-07 Login Address: [local] Last Login Status: SUCCESS Login Failures: 0 Valied Until: 2020-04-07 18:53:42-07 -------------------------------------------/psql (4.3.4.7)Type "help" for help.highgo=> select * from user_tab_columns;table_name |column_name | data_type | data_length | data_precision | data_scale | nullable | column_id | data_upgraded | table_schema ---------------------------------------+-------------------------------------+------pg_proc | proname | name | | | | NO | 1 | YES | pg_catalogpg_proc | pronamespace | oid | | | | NO | 2 | YES | pg_catalog
select show_secure_param()查询安全管理参数,关闭前和开启后没有区别。
