Oracle数据库安全防范:典型问题和解决思路

2017-03-24

数据安全是个很广的话题,它包括了网络安全、操作系统安全、应用层安全和数据库安全等。数据安全的目标是敏感数据"看不见",核心数据"拿不走",运维操作"能审计"。

常见的安全风险主要有外部攻击和内部威胁两大类:

1、外部的攻击:可能使用的软件漏洞,绕过登录信息,破解密码等方式登录系统;拒绝服务:通过请求有限的资源,如端口分配给未授权用户;未经授权的数据和服务的访问:当一个外部的人通过了认证,就认为是一个内部的人;

2、内部威胁(大部分的错误都是有内部原因造成的):滥用特权;偷窃数据或者服务;数据破坏,恶意修改数据;

Oracle数据库本身包含了多种的手段来保证数据的安全,比如强身份认证、审计、数据加密和编辑、细粒度审计、安全标签和数据屏蔽等等;除此之外,还有很多外部措施和技术可以用来进行安全防范。

在上个星期举办的“Oracle数据库安全防范技术应用交流”中,集中讨论了Oracle数据库安全相关的问题,同时也拓展到了其它方面,比如高可用、备份恢复和性能调优,很多这方面的高手参与,在此特邀活动嘉宾、同时也是活动中技术文档的分享者 royalwzy(海通证券 数据库架构师)对问答进行整理和归类,方便大家直接参考。

(本文亦有以下社区会员的贡献:willow、mczmiao、yhd_my、zyclove2008 等等)

一、数据库安全类

问:对于数据库审计的安全问题,可否提供一点较为详细的文档或者产品?

答:

可以参考社区的两篇文章

1.Oracle审计技术介绍:http://www.aixchina.net/Question/228291

2.Oracle细粒度审计:http://www.aixchina.net/Question/228297

---

问:请教专家,在ORACLE 11G环境下,如何从数据库本身加强安全认证?在oracle数据库应用中,其安全要求涉及很多方面,从数据库本身如何加强安全认证?请专家给出几个具体的提高安全保障要求的详细配置案例的做法。

答:

以下几个方面仅供参考:

1.最小权限原则:

1)在机器上,只安装需要的软件;

2)只激活机器上必须的服务;

3)只给必要的人访问数据库和操作系统的权限;

4)显示使用root和admin权限访问操作系统;

5)限制sysdba和sysoper用户访问数据库;

6)限制用户只能访问工作中必须的的数据库对象;

2.定义安全策略;

3.加强服务器保护:

1)只保留必要的服务,不但可以减少服务器的负载,也降低了安全的风险;比如内网数据库服务器禁用掉除1521之外的非必须的端口;负面的例子,有人在服务器上安装360;

2)限制特权用户的个数,比如操作系统的权限,数据库的权限和应用程序的权限等等;

3)使用服务的安全特性,比如添加审计功能,比如vsftpd服务的chroot功能;

4)应用安全补丁和解决办法,及时查看软件供应商发布的安全补丁;

5)保护备份,备份数据和源数据同等重要;

6)对内部开发的系统进行安全测试,包括一些边际测试,功能测试,压力测试等;

7)需要强密码,要满足一定的密码复杂度,比如说至少8位,必须包含大写/小写/数字/特殊字符中的三个;

8)控制物理访问,还是前面提到的,要保证物理机器的安全;

9)审计,用来探测可以的活动;比如用户登录,非法操作;

10)使用入侵检测工具,比如使用tripwire工具来检测等等;

4.维护数据的完整性:

1)标准审计:可以记录访问的时间,谁访问的哪一个数据对象,和使用的权限;

2)细粒度审计:可以查看到调用的SQL语句,结合闪回功能可以查看到之前访问的数据;

3)特权用户审计:可以记录sysdba用户的相关操作;

4)网络加密:防止数据在传输过程中被篡改;

5.访问控制;

---

问:Oracle数据库一般部署在核心区域,怎么在网络上隔离各类攻击行为?

答:

几个方面吧:1.限制只有应用或者中间件的服务器可以访问数据库服务器;2.前面使用多道防火墙;3.划分好DMZ区

在网络acl上严格控制对数据库监听端口的访问(通过网络防火墙实现)、同时,在数据库本机的防火墙策略中也添加访问策略。在网络上,还可利用入侵检测设备等进行防范。

---

问:有关数据存储加密的技术趋势。这一两年内有些外资银行提出包含客户数据的存储加密--data encryption at rest,主要是防范操作系统管理员的越权获取客户数据得目的。16年该概念在Oracle和IBM有一些尝试但是尚未有大规模的行业部署,不知大家对数据存储加密的技术趋势有无看法?

答:

这方面前段时间在做论文的时候涉猎一些,难点主要集中在加密密钥管理和元数据的管理上吧。

---

问:请教如何防止SQL注入?

答:

通过数据库审计系统实现SQL语句的行为审计,区分合法SQL和恶意注入,联动防火墙或IPS进行拦截。

从根源上进行防范的效果最佳,严格审查web应用程序和其他可进行sql语句输入的字段、隐藏字段等。

---

问:Oracle数据库安全基线综合评分体系探讨。在按照安全基线对Oracle数据库的安全配置项进行修改后,如何对配置修改的效果进行评估呢? 是否可以按照配置项的重要程度,采用加权累计方式进行评估,或者大家是否有一套完善的评估体系? 针对每一个安全配置评估项目,按重要程度,形成一套量化的评分标准呢?

答:

比如从如下检查项(包括但不限于)的重要程度:如口令策略、帐号锁定策略、日志文件保护策略、限制SYSDBA帐号远程登录、public权限、日志审计策略、数据字典保护等。

---

问:数据库应用用户权限过大的处理。很多情况下,应用自称需要某某权限,然后带着该权限上线了,之后发现并不需要此权限,此时如何处理比较好?如果直接简单粗暴地revoke回来有可能导致正常业务无法执行,风险难以控制,后果难以预计呀!

答:

这个从流程和技术两个方面考虑吧。

流程方面:如果应用想要申请足够高的权限,可以通过团队协作留痕,保证有据可查。

技术方面:之后发现权限太大,担心风险发生,继而可以通过审计的技术手段对用户的权限使用进行记录。发生问题时有责可追。

---

问:应用用户具有DBA权限,密码明文,这种应用随处可见,从数据库管理角度,如何保证这种用户的数据安全,数据不被篡改。

答:

可以考虑使用审计功能;

二、其它问题

问:关于金融行业oracle的数据安全。在金融行业,双活是一个重要课题,可以保证应用的高可用性。那么在数据库层面目前有无数据库双活的架构设计,在双机房进行时数据同步时,ADG和OGG是如何区分应用场景进行使用的,二者有何本质区分?另外oracle12C的新版本具有多租户的概念,这种系统架构目前有无实际应用案例,它与传统部署方式在数据权限控制方面有无一定的风险?

答:

1.同城双活的话可以考虑使用 Oracle Extended Distance Clusters

2.OGG类似于DG的逻辑备机,是基于日志挖掘的方式做同步的,优点就是可以在备机做操作。

3.12cR2已经发布了,准备要升级的公司还是蛮多的,PDB特别适合很多小库的场景,可以把不同的业务隔离开。数据权限根之前基本一样,多了一个COMMON用户的概念。

---

问:大型系统中有大量用到oracle数据库,通常在购买license上考虑到节约,请问这样会有安全问题产生吗?比如:100台oracle服务器,只买了2个license。

答:

首先说明一下,这样做对安全本身是没有影响的。只是商务的问题。能使用的功能和安全的特性取决于你安装的版本。

---

问:Oracle不等规模的数据库备份措施有哪些?数据库备份是很重要的一环,那么在企业当中我们遇到的数据库规模和量级也是不一样的。那么在针对不同规模的数据库备份的时候,具体的备份措施有哪些?

目前我们可以先安装数据量大小来分:1. 小于1TB 场景;2. 大于5T<10T场景;3. 大于10T的场景。

答:

目前大部分公司都采用灾备的方式来代替真正的备份工作,就算小于1T的场景,真正出了故障,恢复也要很久。所以采用DG,ADG,OGG等方式才是高效的备份方案。有了这个,你再加上套备份就更好了,通常采用Oracle自带的Rman技术,大库可以采用NBU或TSM备份到带库。

---

问:备份软件备份数据库时如何规划对数据库性能影响小?比如有的看客户需要做增量备份,将增量备份的的时间周期设置每1分在备份一次,此时频繁调用数据库的rman脚步执行任务,性能是否影响很大。

答:

这是一个很实用的问题,可以从以下几个方面考虑:

1.首先要明确,备份的目的是什么?一方面备份的目的是当数据库损坏时进行还原,而还原时的速度很大程度上也取决于备份的方式;另一方面备份还可以用于做测试环境,搭建备机等等。

2.在Oracle中1级增量备份分为累计增量备份和差异增量备份;作用是备份上次备份后所有发生变化的数据块;优点是提高备份速度;原理是每次比对数据文件的SCN号码,备份差异的块,通过开启数据库的块改变跟踪功能,来记录发生改变的快,大大提高差异备份的效率:

3.一分钟一次的增量备份是太频繁了,保护好归档日志本身也可以算是增量备份的一种方式;

4.如果想要减少性能影响甚至没有影响,可以考虑在DataGuard的物理备机进行备份。

---

问:Oracle RAC部署与双活是一回事吗?如不是,二者有什么区别?

答:

严格来讲,Oracle RAC只能算是数据库实例级别的双活,这种技术只保护实例,不保证数据。双活的标准看要求的哪一个级别了,当然还有应用双活,更大一点的双活数据中心等等。

ORACLE 的同城双活可以用 Oracle Extended Distance Clusters,也可以用 OGG 来实现,但OGG 有延时,可能对并发量很大的系统,会存在问题。

---

问:Oracle数据库是如何解决超大表问题的(10G以上)?原理是什么?需要更改应用程序吗?

答:

Oracle处理大表常用的手段主要有三种:分区表和分区索引;并行;物化视图。另外在数据仓库中还会用到星星模型和雪花模型。这些技术的使用都不用修改应用程序。

至于原理的话,可以针对每个技术深入了解。例如物化视图,可以查一下它的两个特性:快速刷新和查询重写。

下面是Oracle超大数据库的一些指导,可以阅读以下。

Database VLDB and Partitioning Guide:http://docs.oracle.com/cd/E11882_01/server.112/e25523/toc.htm

---

数据库安全可以安全基线为基础,涉及主题有:身份鉴别、基本访问控制和审计等,需要专业服务支持。

但实施安全基线比较麻烦,需要评估等一系列影响。还可以考虑专业硬软件,这部分就多了,有原厂的,有第三方的。