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

文章目录

环境

系统平台: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 小时前
KingbaseES 新版MySQL 兼容版体验:旧版迁移 + 功能实测
数据库
Aphasia3113 天前
VPN 与内网穿透
安全
倔强的石头_3 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab3 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence4 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
Mr_愚人派4 天前
当"Claude"不再是 Claude:一次第三方 API 代理引发的 AI 身份伪造排查实录
人工智能·安全
无响应de神4 天前
三、用户与权限管理
数据库·mysql
DaLi Yao5 天前
【无标题】
人工智能·安全
Alsn865 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
网络研究院5 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展