数据库安全

一、数据库安全简介
数据库安全包含两层含义:第一层是指系统运行安全(操作系统、网络等),系统运行安全通常受到的威胁如下,一些网络不法分子通过网络、局域网等途径通过入侵电脑使系统无法正常启动,或超负荷让机子运行大量算法,并关闭cpu风扇,使cpu过热烧坏等破坏性活动; 第二层是指系统信息安全,系统安全通常受到的威胁如下,黑客对数据库入侵,并盗取想要的资料。
据Verizon2012年的数据泄露调查分析报告和对发生的信息安全事件技术分析,总结出信息泄露呈现两个趋势:
(1)黑客通过B/S应用,以Web服务器为跳板,窃取数据库中数据;传统解决方案对应用访问和数据库访问协议没有任何控制能力,比如:SQL注入就是一个典型的数据库黑客攻击手段。
(2)数据泄露常常发生在内部,大量的运维人员直接接触敏感数据,传统以防外为主的网络安全解决方案失去了用武之地。
二、数据库安全特征
1)数据独立性: 包括物理独立性和逻辑独立性两个方面。物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的;逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。
2)数据安全性: 操作系统中的对象一般情况下是文件,而数据库支持的应用要求更为精细。通常比较完整的数据库对数据安全性采取以下措施:
(1)将数据库中需要保护的部分与其他部分相隔。
(2)采用授权规则,如账户、口令和权限控制等访问控制方法。
(3)对数据进行加密后存储于数据库。
3)数据完整性 :包括数据的正确性、有效性和一致性。正确性是指数据的输入值与数据表对应域的类型一样;有效性是指数据库中的理论数值满足现实应用中对该数值段的约束;一致性是指不同用户使用的同一数据应该是一样的。保证数据的完整性,需要防止合法用户使用数据库时向数据库中加入不合语义的数据。
4)并发控制: 如果数据库应用要实现多用户共享数据,就可能在同一时刻多个用户要存取数据,这种事件叫做并发事件。当一个用户取出数据进行修改,在修改存入数据库之前如有其它用户再取此数据,那么读出的数据就是不正确的。这时就需要对这种并发操作施行控制,排除和避免这种错误的发生,保证数据的正确性。
5)故障恢复: 由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。
三、数据库安全策略
1)用户的表示与鉴别: 用户标识与鉴别是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的身份或名字。每次用户要求进入系统时,需要输入口令再由系统进行核对,通过鉴定后才能提供机器使用权。
2)存取控制: 数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的用户无法接近数据,这主要通过数据库的存取控制机制实现。存取控制机制主要包含两部分:1、定义用户权限,并将用户权限登记到数据字典中;2、合法权限检查。包括自主存取控制(DAC)和强制存取控制(MAC),这两类方法的简单定义是:
  • 在自主存取控制方法中,用户对不同的数据库对象有着不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可以将其拥有的存取控制权限转给其他用户。因此自主存取控制非常灵活。
  • 在强制存取控制方法中,每一个数据库对象都被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任一个用户,只有具有合法许可证的用户才能可以存取,因此强制存取方法比较严格。
(1)自主存取控制(DAC)方法
用户权限主要有两个要素组成:数据库对象和操作类型。在数据库系统中,定义存取权限称为授权。
1、授权与回收
grant<权限>[,<权限>]
on <对象类型><对象名>
to user <用户>
[with grant option]; // 表示可以将权限授予给其他人
例:把查询Student表的权限授予给用户U1,且U1可将此权限授予给其他用户。
grant select
on table Student
to U1;
with grant option

revoke<权限>[,<权限>]
on <对象类型><对象名>
from <用户> [cascade|restrict];
例:把用户U1修改学生学号的权限收回。
revoke update(Sno)
on table Student
from U1;
(2)强制存取控制(MAC)方法
在MAC中,DBMS所管理的全部实体都被分为主体和客体两大类。主体是系统中的活动实体,既包括DBMS所管理的实际用户,也包括代表用户的各进程。客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。对于主体和客体,DBMS为他们每个实体指派一个敏感度标记(Label)。当某一用户以标记Label注册入系统时,系统要求他对任何客体的存取必须遵循以下规则:
  • 仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;
  • 仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。
3)审计(Audit): 审计功能是DBMS达到C2安全级别以上必不可少的重要指标。审计一般分为用户级审计和系统级审计。
  • 用户级审计是对任何用户设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功或不成功的访问要求以及各种类型的SQL操作。
  • 系统级审计只能由DBA设置,用于监测成功或失败的登录要求、监测grant和revoke操作以下其他数据库级权限下的操作。
audit语句用来设置审计功能,noaudit语句取消审计功能。

例:对修改SC表结构或修改SC表数据的操作进行审计。
audit alter,update
on SC;

例:取消对SC表的一切审计。
noaudit alter,update
on SC;
审计设置以及审计内容一般都存放在数据字典中。
4)协议加密: SQL Server 2000使用的Tabular Data Stream协议来进行网络数据交换,如果不加密的话,所有的网络传输都是明文的,包括密码、数据库内容等,这是一个很大的安全威胁。能被人在网络中截获到他们需要的东西,包括数据库账号和密码。所以,在条件容许情况下,最好使用SSL来加密协议,当然,您需要一个证书来支持。
5)TCP/IP端口: 默认情况下,SQL Server使用1433端口监听,很多人都说SQL Server配置的时候要把这个端口改变,这样别人就不会轻易地知道使用的什么端口了。可惜,通过微软未公开的1434端口的UDP探测可以很容易知道SQL Server使用的什么TCP/IP端口。不过微软还是考虑到了这个问题,毕竟公开而且开放的端口会引起不必要的麻烦。在实例属性中选择TCP/IP协议的属性。选择隐藏 SQL Server实例。如果隐藏了SQL Server实例,则将禁止对试图枚举网络上现有的 SQL Server实例的客户端所发出的广播作出响应。这样,别人就不能用1434来探测您的TCP/IP端口了(除非用Port Scan)。
修改TCP/IP使用的端口:请在上一步配置的基础上,更改原默认的1433端口。在实例属性中选择网络配置中的TCP/IP协议的属性,将TCP/IP使用的默认端口变为其他端口。
拒绝来自1434端口的探测:由于1434端口探测没有限制,能够被别人探测到一些数据库信息,而且还可能遭到DoS攻击让数据库服务器的CPU负荷增大,所以对Windows 2000操作系统来说,在IPSec过滤拒绝掉1434端口的UDP通信,可以尽可能地隐藏您的SQL Server。
对网络连接进行IP限制:SQL Server 2000数据库系统本身没有提供网络连接的安全解决办法,但是Windows 2000提供了这样的安全机制。使用操作系统自己的IPSec可以实现IP数据包的安全性。请对IP连接进行限制,只保证自己的IP能够访问,也拒绝其他IP进行的端口连接,对来自网络上的安全威胁进行有效的控制。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值