安全版普通用户获取系统对象的访问权限

文章目录

环境

系统平台:Linux x86-64 Red Hat Enterprise Linux 7

版本:4.3.4.7

文档用途

三权分立下,普通用户无权访问系统对象(表、视图、方法等),并且无法单独的进行赋权操作,本文档介绍通过暂时关闭secure_level后按需赋权,再打开secure_level的方式解决该问题。 但是由于需要暂时关闭强制访问和三权分立,届时所有普通用户可以访问系统对象,存在一定的安全风险,需谨慎操作。

详细信息

问题

复制代码
三权分立下,普通用户无权访问系统对象(表、视图、方法等),并且无法单独的进行赋权操作。
sql 复制代码
   Login User: testu 

    highgo=> select * from user_tab_columns;

    ERROR:  permission denied for relation user_tab_columns

    

    Login 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之外的所有用户无权访问该模式下的对象并且无法进行授权操作,对于普通用户来说,此时的权限就是自己所拥有的对象的访问和控制权限。

瀚高安全数据库的安全策略,是由安全管理员配置的。安全策略中包含多个安全相关配置项,如下所示:

sql 复制代码
  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。

sql 复制代码
 highgo=> select set_secure_level('off');

          set_secure_level              

        -------------------------------------------

         Set security level to 'off' successfully.

        (1 row)

sysdba登陆,按需赋权。

sql 复制代码
  highgo=> \c highgo sysdba

        highgo=# grant select on user_tab_columns to testu;

        GRANT

注:如果使用grant select on user_tab_columns to PUBLIC;可以对所有已存在的用户赋权,并对后来创建的所有用户仍然有效。

syssso登陆,开启secure_level。

sql 复制代码
  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)

测试。

sql 复制代码
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_catalog

 pg_proc     | pronamespace     | oid   |       |    |     | NO   |   2 | YES    | pg_catalog

select show_secure_param()查询安全管理参数,关闭前和开启后没有区别。

相关推荐
yy7634966681 小时前
Teigha删除操作完全指南 | 安全彻底清理DWG文件,避免数据灾难!
数据库·安全
RPA机器人就选八爪鱼2 小时前
RPA财务机器人:重塑财务效率,数字化转型的核心利器
大数据·数据库·人工智能·机器人·rpa
小猪绝不放弃.2 小时前
数据库视图的作用分析
数据库
k***12172 小时前
从 SQL 语句到数据库操作
数据库·sql·oracle
a***11352 小时前
使用Django Rest Framework构建API
数据库·django·sqlite
KaiwuDB2 小时前
KWDB 3.0.0 正式发布!年度重磅升级,重塑 AIoT 产业智能数据基座
数据库
凯子坚持 c2 小时前
openGauss向量数据库技术演进与AI应用生态全景
数据库·人工智能
z***56563 小时前
【玩转全栈】----Django模板语法、请求与响应
数据库·python·django
韩立学长3 小时前
【开题答辩实录分享】以《智慧农业信息化服务平台小程序》为例进行答辩实录分享
数据库·spring boot·小程序