SQL语言在数据库安全方面的应用

点赞:6093 浏览:21394 近期更新时间:2024-02-12 作者:网友分享原创网站原创

【摘 要】数据库是存储企业关键信息与数据的载体,因此保障数据的完整性、可靠性、一致性、可用性极其重要,通过外部的信息安全策略,如防火墙、数据防泄密产品、数据备份产品解决了数据安全的部分问题.本文通过讨论SQL语言在数据库安全方面的应用,介绍利用数据库本身的语言来实现安全控制,有效提高其安全系数.

【关 键 词】SQL语言;数据库;数据安全

1前言

作为信息系统建设过程中的核心部分,数据库不仅是怎么写作于业务系统的正常运转,而且由于数据库是储存数据与信息的载体,所以对于各行各业的业务发展也起到了至关重要的失去作用.因此无论是小到企业、单位,大到政府、国家,数据库的安全性保障与控制都势在必行.一方面,由于数据库需要对外提供数据与信息,因此在数据进行访问与存取时需要保障安全性;另一方面,数据在存储与传输的过程中,可能被篡改或丢失,这一方面也需要保障安全性.因此在数据库的系统的实施过程中,相应的安全措施也成为衡量其优良重要的性能指标.

2SQL语言在数据库安全方面的应用

如图1所示,数据库的安全控制一般包括几项内容.

身份认证:验证用户是否具有连接到SQLServer数据库的资格.

操作权控制&文件操作:验证用户是否具备相应的操作对象与操作类型的权限.

数据库的加密存储与冗余:即对数据库库进行加密处理,以及数据的备份策略.

1)身份认证:对于非法用户的控制.

对于非法进行数据连接和访问的用户,一般采取的策略即系统保护机制,通过设置系统和进行主动保护,另一方面,可通过强认证方式,例如通过数字证书,通过用户的签名、指纹、声音、虹膜等用户特有的特征来进行用户的验证.

2)操作权限控制、文件操作:SQL语言对于数据库存取的控制.

SQL标准语言能够支持数据库的自动存取控制,一般是通过授权语句Grant和收权语句Revoke来实现的.

a)用户权限的设置

在进行用户权限设置时,涉及到两大内容:可操作的数据本身及可进行哪些操作,即操作的对象和类型.在对用户进行制受权时,就是定义所授权的用户可以对哪些数据进行何种操作.如表1所示即为用户权限设置的方法.

从表1可见,对于数据库中的表、视图和列,赋予的可进行的操作有查询(Select)、插入(Insert)、更新(Update)、删除(Delete)以及其总和AllPrivilege.授予TABLE本身的操作权限有修改和索引.授予数据库的操作权限是创建表,而且对这个表空间有使用(存储)的权限,并能够在系统中创建新的数据库.

b)SQL语言中授权与收权语句的具体使用方法

授权语句(Grant),其主要功能是将某个数据对象的操作权限分配给某个用户.

语法如下:

GRANT权限1[,权限2,等][on对象类型对象名称]TO用户1[,用户2,等]

[WITHGRANTOPTION]

在授权语句的最后[WithGrantOption]选项的功能是设置允许进行权限的转移,即被指定的用户可以将此权限转交给其它的用户.

对于数据对象的访问权限控制,能够很好的对数据库的使用人员进行控制,分级分组进行管理,有利于保障.以下为授权请问的使用举例.

例1:将学生基本表(Students)中的“name”的修改、查询功能分配给用户u1.则语句的使用方法为:

GRANTUPDATE(name),SELECTONTABLEstudentsTOu1.

例2:将表student,score的插入、删除、修改操作权限分配给用户u1和u2.则语句使用方法为:

GRANTALLPRIVILIGESONTABLEstudent,scoreTOu1,u2.

例3:将表score的查询功能分配给数据库中的全部用户.

GRANTSELECTONTABLEscoreTOPUBLIC;

例4:将在Mydatabase数据库中建立表的功能分配给u2.


GRANTCREATETABONDATABASEmydatabaseTOu2.

例5:将Students的查询功能分配给u3,并允许用户u3能够进行权限的转移.

GRANTSELECTONTABLEstudentsTOu3WITHGRANTOPTION.

例6:用户u3将查询students表的权限转移给用户u4.

GRANTSELECTONTABLEstudentsTOu4;

收权语句(Revoke),其主要功能是把已经授权的信息全部撤销.

语法如下:

REVOKE权限1[,权限2,等][ON对象类型对象名]FROM用户1[,用户2,等].

例7:将用户u1修改student表中列name的权限取消.

REVOKEUPDATE(name)ONTABLEstudentsFROMu1.

例8:将用户u3查询students表的权限取消.

REVOKESELECTONTABLEstudentsFROMu3.

3)数据加密.

数据加密的目的是为了保障数据在存储、传送过程中的完整性、机密性、可用性.对于如银行、保险、政府、军工等行业的数据库中存储的数据,保密级别要求较高,除了严格的身份认证与授权认证方式外,数据加密技术也必不可少.数据加密的一般方法即将源数据加密为无法直接进行访问或识别的数据,即所谓的明文加密为密文,在不知道加密算法的前提下,用户是无法获取到真实的数据的.主流加密的方法有几种.

替换法:将源数据中的每一个字符逐一转换成为密文.

转换法:对于源数据中的字符进行顺序调换.

由于这两种方法单独使用时都存在一定的局限性,因此一般会结合这两种方式,来提高数据的安全性.

3结束语

多年来,数据库的安全一直是一个没有完全解决的问题.一方面是由于数据库系统的日益复杂,在确保其查询、修改、添加、统计等功能能够便捷使用的前提下,无法兼顾其安全;另一方面由于数据库能够给管理员最大的权限,因此对于人为的数据泄漏没有很好的解决方法,对于其安全性也带来了极大的挑战.本文通过对于SQL语言在数据库安全方面的应用,细化其权限分配,以期能够尽量地避免某一个用户占用数据库的大部分权限,减少数据库的安全风险.同时通过强身份认证与相应的加密手段,加强数据的保护.