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

文章目录

环境

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

相关推荐
无忧智库2 分钟前
智慧化工园区技术方案:构建“平急结合”的一体化安全防线(PPT)
安全
量子罐头5 分钟前
银行网络安全升级实战:四光口物理隔离架构,破解信创难题
安全·web安全·架构
2201_7568473315 分钟前
Golang如何处理JSON空值null_Golang JSON空值处理教程【精通】
jvm·数据库·python
我登哥MVP15 分钟前
【Spring6笔记】 - 11 - JDBCTemplate
java·数据库·spring boot·mysql·spring
hef28824 分钟前
怎么诊断MongoDB Config Server响应极慢的问题_高频Auto-split导致的元库写入压力
jvm·数据库·python
qq_3806191629 分钟前
html怎么用deno运行_Deno如何作为本地服务器运行HTML文件
jvm·数据库·python
打码人的日常分享31 分钟前
新型智能建造解决方案
运维·人工智能·安全·系统安全·制造
ruan11451431 分钟前
Redis--个人学习记录
数据库·redis·学习
小红的布丁36 分钟前
BIO、NIO、AIO 与 IO 多路复用:select、poll、epoll 详解
java·数据库·nio
袋鼠云数栈37 分钟前
AI 时代,企业为何必须重新思考数据底座?
数据库·数据治理·数据中台·数栈·袋鼠云