【安全为王】听说你最喜欢给所有用户授DBA的权限

编辑手记:最近很多朋友会问关于数据库用户授权的问题,经常问这样的问题,我能不能直接给用户DBA的角色,多方便。恩,方便是方便了,恶意操作和误操作也方便了。今天再苦口婆心告诉你,过度授权有哪些风险。

过度授权的风险

从安全角度考虑,数据库的授权应当遵循最小权限授予法,即仅授予满足用户需要的最小权限。这是因为在数据库中,如果进行了不当授权,则可能为数据库带来安全风险。

在数据库中,EXECUTE/CREATE ANY PROCEDURE都是非常重要的权限,如果被授予普通用户,则可能为数据库带来安全风险。

以下是在Oracle Database 8.1.7中的测试,首先创建了两个测试用户:

当使用测试用户连接后,EXECUTE ANY PROCEDURE的权限使用户具有了访问和执行dbms_sys_sql包的权限,这个Package可以被用户利用来获得更高的权限:

通过如下一段代码,Hacker用户就可以很多DDL语句,诸如修改其他用户的口令,对自我进行授权等:

通过DBMS_SYS_SQL.parse_as_user,hacker可以在数据库内任意为非作歹了。用户loser的口令已被更改:

在Oracle 9i中,如果用户具有EXECUTE/CREATE ANY PROCEDURE的权限,则同样用户可以做出很多跨越常规的授权:

现在CREATE ANY PROCEDURE的权限可以使用户创建任何过程:

现在EXECUTE ANY PROCEDURE的权限,可以使用户执行创建的过程,进行跨越职权的授权:

SQL> execute system.do('grant dba to eygle'); PL/SQL procedure successfully completed.

检查一下当前用户具有的权限:

重新连接会激活角色授权,可以注意到用户已经具备了DBA的职权:

SQL> connect eygle/eygle Connected. SQL> SELECT * FROM SESSION_ROLES; ROLE ------------------------------ PLUSTRACE DBA SELECT_CATALOG_ROLE HS_ADMIN_ROLE EXECUTE_CATALOG_ROLE DELETE_CATALOG_ROLE EXP_FULL_DATABASE IMP_FULL_DATABASE GATHER_SYSTEM_STATISTICS

WM_ADMIN_ROLE JAVA_ADMIN JAVA_DEPLOY 12 rows selected. SQL> SELECT * FROM SESSION_PRIVS; PRIVILEGE ---------------------------------------- ALTER SYSTEM AUDIT SYSTEM CREATE SESSION ALTER SESSION RESTRICTED SESSION CREATE TABLESPACE ALTER TABLESPACE MANAGE TABLESPACE

虽然在不同的版本中,Oracle一直在强化其安全管理,但是仍然需要我们小心谨慎的管理数据库权限,确保数据库安全。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2017-01-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

记一次奇怪的ORA-04028: cannot generate diana for object

      开发人员说新建了一个package,在编译的过程中出现了一些错误。提示为PL/SQL:ORA-00942: table or view does n...

341
来自专栏云计算爱好者

你常用的10个MySQL命令

今天给大家介绍一些简单的MySQL常用的实用命令。如果你已经熟练使用MySQL就可以跳过啦!如果还不知道的都可以在自己机器上练习一下。

1647
来自专栏张戈的专栏

DIY网站统计:WordPress排除管理员评论及精准友链数的方法

今天关注了一下网站统计,发现留言 1600+,想想肯定是把我自己的留言也算进去了,感觉太水了,不真实!另外友链数目也不对,明显是把所有链接都加进去了! ? 于是...

3243
来自专栏pangguoming

CentOS下设置MySQL的root密码

CentOS刚装的MySQL一般需要重设MySQL密码,可以用以下方法重设。  方法一、  Js代码   # /etc/init.d/mysqld stop ...

3187
来自专栏乐沙弥的世界

Linux/Unix shell 自动发送AWR report(二)

       观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告。不...

713
来自专栏乐沙弥的世界

MySQL 用户与权限管理

    MySQL权限系统的主要功能是证实连接到一台给定主机的用户,并且赋予该用户在数据库上的相关DML,DQL权限。MySQL存取控制包含2个阶段,一是服务器...

371
来自专栏杨建荣的学习笔记

一个oracle蠕虫病毒 (r4笔记第60天)

关于计算机病毒,说起来内容就很丰富了,但是第一次听到关于oracle中的病毒时,却感觉很新鲜。这是一个蠕虫病毒,距离现在已经有10年了,但是现在看起来还是能够借...

2363
来自专栏Laoqi's Linux运维专列

Mysql创建用户并授权

一、Mysql创建用户并授权 mysql 默认的账户也是root,同linux一样也是超级管理员,权利特别大,所以我们不可以随便就把mysql密码告诉其他人。 ...

45212
来自专栏GreenLeaves

Oracle 通过子查询批量添加、修改表数据

1、通过查询快速创建表 create table test1(id,job,mgr,sal) as (select * from (select rownum...

1648
来自专栏杨建荣的学习笔记

迁移式升级的测试(三)(r10笔记第36天)

还是继续昨天的任务。 前面的内容可以参见:迁移式升级的一点思考 (r10笔记第27天)、迁移式升级的新方案测试 (r10笔记第30天)、迁移式升级的测试(二)(...

3345

扫描关注云+社区