数据库安全性控制方案,权限回收语句的一般格式
1. 数据库安全技术
数据库数据库安全性控制方案的完整性数据库安全性控制方案,数据库的完整性包括数据库安全性控制方案:
①实体完整性,指表和它模仿的实体一致。
②域完整性,某一数据项的值是合理的。
③参照完整性,在一个数据库的多个表中保持一致性。
④用户定义完整性,由用户自定义。
⑤分布式完整性。
数据库的完整性可通过数据库完整性约束机制来实现。这种约束是一系列预先定义好的数据完整性规划和业务规则,这些数据规则存放于数据库中,防止用户输入错误的数据,以保证所有数据库中的数据是合法的、完整的。
数据库完整性约束包括非空约束、默认值约束、唯一性约束、主键约束、外部键约束和规则约束。
这种约束是加在数据库表的定义上的,它与应用程序中维护数据库完整性不同,它不用额外地编写程序,代价小而且性能高。
在多网络用户的客户/服务器体系下,需要对夺标进行插入、删除、更新等操作时,使用存储过程可以有效防止多客户同时操作数据库时带来的死锁和破坏数据完整一致性问题。
此外,通过封锁机制可以避免多个事务并发执行存取同一数据时出现的数据不一致问题。
1)存取控制机制
访问控制是数据库系统的基本安全需求之一,为了使用访问控制来保证数据库的安全,必须使用相应的安全策略和安全机制保证其实施。数据库常用的存取控制机制是基于角色的存取控制模型。
基于角色的存取控制模型的特征是根据安全策略划分出不同的角色,对每个角色分配不同的操作许可,同时为用户指派不同的角色,用户2)通过角色间接地对数据进行存取。
角色由数据库管理员管理分配,用户和客体无直接关系,他只有通过角色才可以拥有角色锁拥有的权限,从而存取客体。
用户不能自主地将存取权限授予其他用户。基于角色的存取控制机制可以为用户提供强大而灵活的安全机制,可以让管理员在接近部门组织的自然形式来进行用户权限划分。
3)视图机制
通过限制可由用户使用的数据,可以将视图作为安全机制。用户可以访问某些数据,进行查询和修改,但是表或数据库的其余部分是不可见的,也不能进行访问。
无论在基础表(1个或多个)上的权限 *** 有多大,都必须授予、拒绝或废除访问视图中数据子集的权限。
例如,某个表的salary列中含有保密职员信息,但其余列中含有的信息可以由所有用户使用。
可以定义一个视图,它包含表中除敏感的salary列外所有的列。
只要表和视图的所有者相同,授予视图上的SELECT权限就使用户得以查看视图中非保密列而无需对表本身具有任何权限。
通过定义不同的视图及有选择地授予视图上的权限可以将用户、组或角色限制在不同的数据子集内。
4)数据库加密
一般而言,数据库系统提供的基本安全技术能够满足普通的数据库应用,但对于一些重要部门或敏感领域的应用,仅靠上述这些措施难以保证数据的安全性,某些用户仍可能非法获取用户名和口令越权使用数据库,甚至直接打开数据库文件窃取或篡改信息。
因此,有必要对数据中存储的重要数据进行加密处理,以实现数据存储的安全保护。
较之传统的数据加密技术,数据库加密系统有其自身的要求和E点。数据库数据的使用 *** 决定了它不可能以整个数据库文件为单位进行加密。
当符合检索条件的记录被检索出来后,就必须对该记录迅速解密,然而该记录是数据库文件中堆积的一段,无法从中间开始解密。
因此,必须解决随机地从数据库文件中某一段数据开始解密的问题,故数据库加密只能对数据库中的数据进行部分加密。
2. 数据库攻击技术
(1)弱口令攻击
获取目标数据库服务器的管理员口令有多种 *** 和工具,例如针对SQL服务器的SQLScan字典口令攻击、SQLdict字典口令攻击、SQLServerSniffer嗅探口令攻击等工具。
获取了SQL数据库服务器的口令后,即可利用SQL语言远程连接并进入SQL数据库内获得敏感信息。
(2)SQL注入攻击
SQL注入攻击具体过程
首先是由攻击者通过向Web服务器提交特殊参数,向后台数据库注入精心构造的SQL语句,达到获取数据库里的表的内容或者挂网页木马,进一步利用网页木马再挂上木马。
攻击者通过提交特殊参数和精心构造的SQL语句后,根据返回的页面判断执行结果、获取敏感信息。
因为SQL注入是从正常的WWW端口访问,而且表面看起来与一般的WEB页面访问没有区别,所以目前通用的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间也不被察觉。
SQL注入的手法相当灵活,在注入式会遇到意外情况。在实际攻击过程中,攻击者根据具体情况进行分析,构造巧妙的SQL 语句,从而达到渗透的目的,而渗透的成都和网站的WEB应用程序的安全性和安全配置有很大关系。
(3)利用数据库漏洞进行攻击
利用数据库本身的漏洞实施攻击,获取对数据库的控制权和对数据的访问权,或者利用漏洞实施权限的提升。不同版本数据库的漏洞不一样。
例如:Oracle 9.2.0.1.0存在认证过程的缓冲区溢出漏洞,攻击者通过提供一个非常长的用户名,会使认证出现溢出,允许攻击者获得数据库的控制,这使得没有正确的用户名和密码也可获得对数据库的控制。
Oracle的left outer joins漏洞可以实现权限的提升。当攻击者利用left outer joins 实现查询功能时,数据库不做权限检查,使攻击者获得他们一般不能访问的表的权限。
3. 数据库的安全防范
(1)编写安全的Web页面
编写安全的Web页面SQL注入漏洞是因为Web程序员所编写的Web应用程序没有严格地过滤从客户端提交至服务器的参数而引起的。所以,要防范SQL注入攻击,首先要从编写安全的Web应用程序开始做起。
对于客户端提交过来的参数,都要进行严格的过滤,检查当中是否存在着特殊字符,要注意的特殊字符有:单引号,双引号,当前使用的数据库服务器所支持的注释符号,例如,SQL Server所使用的注释号是 “--”,MySQL所使用的注释号是“/*”等。
除此之外,还有SQL语句中所使用的关键字,这些关键字包括:select,insert,update,and,where等。除了严格检验参数,还要注意不向客户端返回程序发生异常的错误信息,这是因为SQL注入很大程度上是依赖程序的异常信息获取服务器的信息的,所以不能为攻击者留下任何线索。
(2)设置安全的数据库服务器
①SQL Server
SQL Server的安全性设置要通过安装、设置和维护三个阶段进行综合考虑。在安装阶段,将数据库默认自动或者手动安装使用Windows认证,这将把暴力攻击SQL Server本地认证机制的攻击者拒之门外。为数据库分配一个强壮的SA账户密码,也是安装过程中需要考虑的一个重要事情。
在设置阶段,使用服务器网络程序(server network utility)可禁用所有的netlib,这将使对数据库的远程访问无效,同时也将使SQL Server不再响应SQLPing等对数据库的扫描和探测行为。
激活数据库的日志功能可以在攻击者进行暴力破解时能够有效鉴别。此外,禁止SQL Server Enterprise Manager自动为服务账号分配权限,禁用Ad Hoc查询,设置操作系统访问控制列表,清除危险的扩展存储过程等措施将阻止一些攻击者对数据库的非法操作。
在维护阶段,及时更新服务包和漏洞补丁,分析异常的网络通信 数据包,创建SQL Server警报等 *** ,可以为管理员提供针对数据库更加有效的防范。
②Oracle
Oracle Oracle数据库的安全性防范措施也需要综合考虑多方面的因素,包括可设置监听器密码,运行监听器控制程序连接相关的监听器时,可通过密码保护监听器的安全数据库安全性控制方案;
删除PL/SQL外部存储功能,堵住攻击者对其的非法使用数据库安全性控制方案;
确保所有数据库用户的默认密码已经更改为安全的新密码;
为保证数据库实例的安全,及时更新最新补丁也是非常重要的一项安全措施。
当然,如果Oracle数据库的前端是一个Web服务器,则Web前端将是外部攻击者的第一站,Oracle的安全也离不开Web前端的安全。
③MySQL
MySQL数据库的安全性防范措施主要包括消除授权表的通配符、使用安全密码、检查配置文件的许可、对客户端服务器传输进行加密、禁用远程访问功能和积极监控MySQL的访问日志。
MySQL访问控制系统是通过一系列授权表进行,授权表在数据库、表和列定义每一位用户的访问级别,同时定义某用户普适许可或使用通配符的权限,确保用户获得的访问权限恰好足够他们完成任务即可。
MySQL根帐户设置密码,并且每一个用户帐户都设置密码,确保没有使用具有启发式信息的容易被识破的密码,例如生日、用户姓名 字母等。用户帐号密码以纯文本形式存储在MySQL的per-user文件中,很容易就会被读取;
因此把这些文件存储在非公共区域,或者,存储在用户帐户的私人主目录下权限设置为0600(只能被根用户读写)。
客户端服务器事务是以明文信息方式传输,黑客容易发现这些数据包并从中获取敏感信息;因此,需要激活MySQL设置中的SSL或OpenSSH的安全外壳实用程序,为传输数据创造一个安全加密通道,未经授权用户就很难读取传输数据。
如果用户不需要远程访问服务器,强制所有MySQL连接都socket文件通信,大大降低受到网络攻击的风险;设置服务器--skip-networking选项启动,屏蔽MySQL的TCP/IP网络连接,确保没有用户能够远程连接到系统。
MySQL日志文件记录客户端连接、查询和服务器错误,通用查询日志(general query log)以时间戳记录了每一个客户端连接和断开连接,以及客户端执行每一次查询的情况;监控MySQL日志,发现网络入侵攻击的源头。
我是木子雨辰,一位信息安全领域从业者,@木子雨辰将一直带给大家信息安全知识,每天两篇安全知识、由浅至深、采用体系化结构逐步分享,大家有什么建议和问题,可以及留言,多谢大家点击关注、转发、评论,谢谢大家。
大家如果有需要了解安全知识内容需求的可以留言,沟通,愿与大家携手前行。