【安全为王】听说你最喜欢给所有用户授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 条评论
登录 后参与评论

相关文章

来自专栏恰同学骚年

Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析

  为了能够借助Hive进行统计分析,首先我们需要将清洗后的数据存入Hive中,那么我们需要先建立一张表。这里我们选择分区表,以日期作为分区的指标,建表语句如下...

872
来自专栏Hadoop实操

如何使用Phoenix在CDH的HBase中创建二级索引

2682
来自专栏北京马哥教育

MySQL 5.7原生JSON格式支持

在MySQL与PostgreSQL的对比中,PG的JSON格式支持优势总是不断被拿来比较。其实早先MariaDB也有对非结构化的数据进行存 储的方案,称为dyn...

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

一条看似平常的报警邮件所做的分析(r8笔记第9天)

今天留意到一封报警邮件。内容如下: ZABBIX-监控系统: ------------------------------------ 报警内容: CPU u...

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

MySQL里面的group by问题浅析

mysql> select backup_date ,count(*) piece_no from redis_backup_result;

793
来自专栏数据之美

MySQL 死锁与日志二三事

最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现。甚至有些异常还比较诡异,最后 root...

3416
来自专栏漫漫全栈路

Oracle数据库项目——MC服务器管理系统

数据库设计内容,分为:系统功能说明,数据库分析与设计,数据库实现。本数据库系统提供的功能用于项目MC-Servers-Web,详情内容参见MC-Service...

6464
来自专栏乐沙弥的世界

启用 Oracle 10046 调试事件

    Oracle 10046是一个Oracle内部事件。最常用的是在Session级别设置sql_trace(alter session set sql_t...

392
来自专栏Java技术

在一个千万级的数据库查寻中,如何提高查询效率?

A. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

943
来自专栏不想当开发的产品不是好测试

mysql5.7 创建新表时提示时间戳非法

# 背景 mysql版本5.7.8,需要创建新表,研发提供的sql文件,执行后报错如下: ERROR 1067 (42000): Invalid default...

3516

扫码关注云+社区