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

文章目录

环境

系统平台: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()查询安全管理参数,关闭前和开启后没有区别。

相关推荐
程序员清风8 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
天衍四九-8 小时前
MySQL中如何定位慢查询?如果SQL语句执行很慢,如何分析和优化?
数据库·sql·mysql
隐擎fox9 小时前
深入理解网络传输层安全:TLS 指纹识别(JA3/JA4)原理与 Python 协议层检测实战
爬虫·python·网络协议·安全·网络安全·https
尚久龙9 小时前
mysql-5.7.26-winx64的安装步骤
数据库·mysql
医疗信息化王工9 小时前
DataForge:基于 Python 的数据库批量导出 Excel 工具——从架构到部署的全流程实战
数据库·python·excel
实心儿儿9 小时前
MySQL 的安装
数据库·mysql·adb
程序员阿鹏11 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
小蒋观天下11 小时前
社区AI智能摄像头完整选型指南
大数据·人工智能·安全·计算机视觉·语音识别·ai大模型
瀚高PG实验室12 小时前
使用pg_stat_statements抓取数据库TOP SQL
数据库·sql·postgresql·瀚高数据库
yanwumuxi13 小时前
【数据库系列】opensearch数据备份和恢复
数据库