论文部分内容阅读
摘要:数据库安全性问题一直是数据库管理员重点考虑的问题。数据库中数据的丢失以及数据库被非法用户侵入给数据库管理员造成的损失很大。文章围绕数据库的安全性问题提出了一些安全性策略,包括数据库加密、数据库的访问应注意的事项,希望对数据库管理员有所帮助。
关键词:数据库安全性;认证模式;SQL Server身份验证;权限范围
中图分类号:TP393
文献标识码:A
文章编号:1009-2374(2009)18-0110-02
对任何企业组织来说,数据的泄露或篡改将导致利益的损失。因此数据的安全性最为重要。安全性主要是指允许那些具有相应的数据访问权限的用户能够登录到SQL Server 并访问数据以及对数据库对象实施各种权限范围内的操作,但是要拒绝所有的非授权用户的非法操作。因此,安全性管理与用户管理是密不可分的。伴随着微软“可信赖计算”计划的实施,SQL Server 2005 中加入了丰富的安全特性,提供了极为严密的全新安全性设计为数据库应用更好地保驾护航。
一、SQL Server 2005 的安全性管理
SQL Server 2005 的安全性管理是建立在认证(authentication)和访问许可(permission)两者机制上的。认证是指来确定登录SQL Server 的登录账号和密码是否正确,以此来验证其是否具有连接SQL Server 的权限。但是,通过认证阶段并不代表能够访问SQL Server 中的数据,用户只有在获取访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作(主要是针对数据库对象,如表、视图、存储过程等),这种用户访问数据库权限的设置是通过用户账号来实现的。同时在SQL Server 中,角色作为用户组的代替物大大地简化了安全性管理。
(一)数据库加密
由于数据库在操作系统中以文件形式管理,所以入侵者可以直接利用操作系统的漏洞窃取数据库文件,或者篡改数据库文件内容。另一方面,数据库管理员(DBA)可以任意访问所有数据,往往超出了其职责范围,同样造成安全隐患。因此,数据库的保密问题不仅包括在传输过程中采用加密保护和控制非法访问,还包括对存储的敏感数据进行加密保护,使得即使数据不幸泄露或者丢失,也难以造成泄密。
数据库中存储密文数据后,如何进行高效查询成为一个重要的问题。查询语句一般不可以直接运用到密文数据库的查询过程中,一般的方法是首先解密加密数据,然后查询解密数据。但由于要对整个数据库或数据表进行解密操作,因此开销巨大。在实际操作中需要通过有效的查询策略来直接执行密文查询或较小粒度的快速解密。
一般来说,一个好的数据库加密系统应该满足的要求:足够的加密强度,保证长时间且大量数据不被破译;加密后的数据库存储量没有明显的增加;加解密速度足够快,影响数据操作响应时间尽量短;加解密对数据库的合法用户操作(如数据的增、删、改等)是透明的;灵活的密钥管理机制,加解密密钥存储安全,使用方便可靠。
1.数据库加密的实现机制。数据库加密的实现机制主要研究执行加密部件在数据库系统中所处的层次和位置,通过对比各种体系结构的运行效率、可扩展性和安全性,以求得最佳的系统结构。按照加密部件与数据库系统的不同关系,数据库加密机制可以从大的方面分为库内加密和库外加密。
2.数据库加密的粒度。一般来说,数据库加密的粒度可以有4种,即表、属性、记录和数据元素。不同加密粒度的特点不同,总的来说,加密粒度越小,则灵活性越好且安全性越高,但实现技术也更为复杂,对系统的运行效率影响也越大。
(1)表加密。表级加密的对象是整个表,这种加密方法类似于操作系统中文件加密的方法。即每个表与不同的表密钥运算,形成密文后存储。这种方式最为简单,但因为对表中任何记录或数据项的访问都需要将其所在表的所有数据快速解密,因而执行效率很低,浪费了大量的系统资源。在目前的实际应用中,这种方法基本已被放弃。
(2)属性加密。属性加密又称为“域加密”或“字段加密”,即以表中的列为单位进行加密。一般而言,属性的个数少于记录的条数,需要的密钥数相对较少。如果只有少数属性需要加密,属性加密是可选的方法。
(3)数据元素加密。数据元素加密是以记录中每个字段的值为单位进行加密,数据元素是数据库中最小的加密粒度。采用这种加密粒度,系统的安全性与灵活性最高,同时实现技术也最为复杂。不同的数据项使用不同的密钥,相同的明文形成不同的密文,抗攻击能力得到提高。
在目前条件下,为了得到较高的安全性和灵活性,采用最多的加密粒度是数据元素。为了使数据库中的数据能够充分而灵活地共享,加密后还应当允许用户以不同的粒度进行访问。
3.数据库加密的局限性。数据库加密技术在保证安全性的同时,也给数据库系统的可用性带来一些影响。
(1)系统运行效率受到影响。数据库加密技术带来的主要问题之一是影响效率。为了减少这种影响,一般对加密的范围做一些约束,如不加密索引字段和关系运算的比较字段等。
(2)对数据的SQL语言及SQL函数受到制约。SQL语言中的Group by、Order by及Having子句分别完成分组和排序等操作,如果这些子句的操作对象是加密数据,那么解密后的明文数据将失去原语句的分组和排序作用。另外,DBMS扩展的SQL内部函数一般也不能直接作用于密文数据。
(3)密文数据容易成为攻击目标。数据库加密作为一种对敏感数据进行安全保护的有效手段,将得到越来越多的重视。总体来说,目前数据库加密技术还面临许多挑战,其中解决保密性与可用性之间的矛盾是关键。
(二) 数据库的访问
确保当数据库系统DownTime时,数据库数据存储媒体被破坏时以及当数据库用户误操作时,数据库数据信息不至于丢失。 具体表现在以下两主面:
1. 给用户授予其所需要的最小权限 。不要给数据库用户提供比其需要的还要多的权限。换句话说,只给用户真正需要的、为高效和简洁地完成工作所需要的权限。这个道理很容易理解。这就好像防止职业贪污一样。你若只给某个员工其完成工作所必需的费用,一分都不多给,那其从哪里贪污呢?如从数据库服务器的角度来考虑这个问题,这就要求数据库管理员在设置用户访问权限的时候,注意如下几个方面的问题:(1)要限制数据库管理员用户的数量。在任何一个服务器中,管理员具有最高的权限。为了让数据库维持正常的运转,必须给数据库配置管理员账户。否则的话,当数据库出现故障的时候,就没有合适的用户对其进行维护了。但是,这个管理员账户的数量要严格进行限制。不能为了贪图方便,把各个用户都设置成为管理员。(2)选择合适的账户连接到数据库。一般数据库的访问权限可以通过两种方式进行控制:一是通过前台应用程序。也就是说,其连接到数据库是一个统一的账户,如管理员账户;这种方式虽然可以减少前台程序开发的工作量,但是,对于数据库服务器的安全是不利的。二是在前台程序中,就直接利用员工账户的账号登陆到数据库系统。这种做法虽然可以提高数据库的安全性,但是,其前台配置的工作量会比较繁琐。而笔者往往采用折中的方法。总之,我们的目的就是要限制以数据库管理员身份连接到数据库的用户数量。在其他应用服务器中,也有管理员账户与普通账户之分。在权限分配的时候,最好只给用户授予其需要的最小权限,以保障服务器的安全。
2.取消默认账户不需要的权限。在建立账户的时候,服务器往往给其一些默认的权限。如在数据库中,Public是授予每个用户的默认角色。任何用户,只要没有指定具体的角色,则其都可以授予Public组的权限。这其中,还包括执行各种SQL语句的权限。如此,用户就有可能利用这个管理漏洞,去访问那些不允许他们直接访问的包。因为这个默认权限,对于那些需要他们并且需要合适配置和使用他们的应用来说,是非常有用的,所以,系统默认情况下,并没有禁止。但是,这些包可能不适合于其他应用。因此,除非绝对的需要,否则就应该从默认缺陷中删除。建议的做法是,会把应用系统的默认用户权限设置为最小,有些甚至把默认用户权限全部取消掉。这就迫使服务器管理员在建立账户的时候,给账户指定管理员预先设定的角色。这就可以有效的防止管理员“偷懒”。在建立账户的时候,不指定角色。
二、结语
数据库中存放着大量的数据,保护数据不受内部和外部的侵害是一项重要的任务。SQL Server 2005广泛地应用于企业的各个部门,做为数据库系统管理员,需要深入地理解SQL Server的安全控制策略,以实现安全管理的目标。
参考文献
[1]徐守祥. 数据库应用技术[M].人民邮电出版社,2005.
[2]杨学全. SQL Server 2000实例教程[M]. 电子工业出版社,2005.
[3]迪尤逊. 图灵程序设计丛书[M]. 人民邮电出版社,2006.
[4]张建伟. 数据库技术与应用-SQL Server 2005[M]. 人民邮电出版社,2008.
[5]周奇.SQL Server 2005 数据库基础及应用技术教程与实训[M]. 北京大学出版社,2008.
作者简介:魏慧(1981-),女,山东济宁人,济宁职业技术学院助教,研究方向:计算机软件开发;李艳鹏(1980-),女,山东济宁人,济宁职业技术学院助教,研究方向:计算机应用。
关键词:数据库安全性;认证模式;SQL Server身份验证;权限范围
中图分类号:TP393
文献标识码:A
文章编号:1009-2374(2009)18-0110-02
对任何企业组织来说,数据的泄露或篡改将导致利益的损失。因此数据的安全性最为重要。安全性主要是指允许那些具有相应的数据访问权限的用户能够登录到SQL Server 并访问数据以及对数据库对象实施各种权限范围内的操作,但是要拒绝所有的非授权用户的非法操作。因此,安全性管理与用户管理是密不可分的。伴随着微软“可信赖计算”计划的实施,SQL Server 2005 中加入了丰富的安全特性,提供了极为严密的全新安全性设计为数据库应用更好地保驾护航。
一、SQL Server 2005 的安全性管理
SQL Server 2005 的安全性管理是建立在认证(authentication)和访问许可(permission)两者机制上的。认证是指来确定登录SQL Server 的登录账号和密码是否正确,以此来验证其是否具有连接SQL Server 的权限。但是,通过认证阶段并不代表能够访问SQL Server 中的数据,用户只有在获取访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作(主要是针对数据库对象,如表、视图、存储过程等),这种用户访问数据库权限的设置是通过用户账号来实现的。同时在SQL Server 中,角色作为用户组的代替物大大地简化了安全性管理。
(一)数据库加密
由于数据库在操作系统中以文件形式管理,所以入侵者可以直接利用操作系统的漏洞窃取数据库文件,或者篡改数据库文件内容。另一方面,数据库管理员(DBA)可以任意访问所有数据,往往超出了其职责范围,同样造成安全隐患。因此,数据库的保密问题不仅包括在传输过程中采用加密保护和控制非法访问,还包括对存储的敏感数据进行加密保护,使得即使数据不幸泄露或者丢失,也难以造成泄密。
数据库中存储密文数据后,如何进行高效查询成为一个重要的问题。查询语句一般不可以直接运用到密文数据库的查询过程中,一般的方法是首先解密加密数据,然后查询解密数据。但由于要对整个数据库或数据表进行解密操作,因此开销巨大。在实际操作中需要通过有效的查询策略来直接执行密文查询或较小粒度的快速解密。
一般来说,一个好的数据库加密系统应该满足的要求:足够的加密强度,保证长时间且大量数据不被破译;加密后的数据库存储量没有明显的增加;加解密速度足够快,影响数据操作响应时间尽量短;加解密对数据库的合法用户操作(如数据的增、删、改等)是透明的;灵活的密钥管理机制,加解密密钥存储安全,使用方便可靠。
1.数据库加密的实现机制。数据库加密的实现机制主要研究执行加密部件在数据库系统中所处的层次和位置,通过对比各种体系结构的运行效率、可扩展性和安全性,以求得最佳的系统结构。按照加密部件与数据库系统的不同关系,数据库加密机制可以从大的方面分为库内加密和库外加密。
2.数据库加密的粒度。一般来说,数据库加密的粒度可以有4种,即表、属性、记录和数据元素。不同加密粒度的特点不同,总的来说,加密粒度越小,则灵活性越好且安全性越高,但实现技术也更为复杂,对系统的运行效率影响也越大。
(1)表加密。表级加密的对象是整个表,这种加密方法类似于操作系统中文件加密的方法。即每个表与不同的表密钥运算,形成密文后存储。这种方式最为简单,但因为对表中任何记录或数据项的访问都需要将其所在表的所有数据快速解密,因而执行效率很低,浪费了大量的系统资源。在目前的实际应用中,这种方法基本已被放弃。
(2)属性加密。属性加密又称为“域加密”或“字段加密”,即以表中的列为单位进行加密。一般而言,属性的个数少于记录的条数,需要的密钥数相对较少。如果只有少数属性需要加密,属性加密是可选的方法。
(3)数据元素加密。数据元素加密是以记录中每个字段的值为单位进行加密,数据元素是数据库中最小的加密粒度。采用这种加密粒度,系统的安全性与灵活性最高,同时实现技术也最为复杂。不同的数据项使用不同的密钥,相同的明文形成不同的密文,抗攻击能力得到提高。
在目前条件下,为了得到较高的安全性和灵活性,采用最多的加密粒度是数据元素。为了使数据库中的数据能够充分而灵活地共享,加密后还应当允许用户以不同的粒度进行访问。
3.数据库加密的局限性。数据库加密技术在保证安全性的同时,也给数据库系统的可用性带来一些影响。
(1)系统运行效率受到影响。数据库加密技术带来的主要问题之一是影响效率。为了减少这种影响,一般对加密的范围做一些约束,如不加密索引字段和关系运算的比较字段等。
(2)对数据的SQL语言及SQL函数受到制约。SQL语言中的Group by、Order by及Having子句分别完成分组和排序等操作,如果这些子句的操作对象是加密数据,那么解密后的明文数据将失去原语句的分组和排序作用。另外,DBMS扩展的SQL内部函数一般也不能直接作用于密文数据。
(3)密文数据容易成为攻击目标。数据库加密作为一种对敏感数据进行安全保护的有效手段,将得到越来越多的重视。总体来说,目前数据库加密技术还面临许多挑战,其中解决保密性与可用性之间的矛盾是关键。
(二) 数据库的访问
确保当数据库系统DownTime时,数据库数据存储媒体被破坏时以及当数据库用户误操作时,数据库数据信息不至于丢失。 具体表现在以下两主面:
1. 给用户授予其所需要的最小权限 。不要给数据库用户提供比其需要的还要多的权限。换句话说,只给用户真正需要的、为高效和简洁地完成工作所需要的权限。这个道理很容易理解。这就好像防止职业贪污一样。你若只给某个员工其完成工作所必需的费用,一分都不多给,那其从哪里贪污呢?如从数据库服务器的角度来考虑这个问题,这就要求数据库管理员在设置用户访问权限的时候,注意如下几个方面的问题:(1)要限制数据库管理员用户的数量。在任何一个服务器中,管理员具有最高的权限。为了让数据库维持正常的运转,必须给数据库配置管理员账户。否则的话,当数据库出现故障的时候,就没有合适的用户对其进行维护了。但是,这个管理员账户的数量要严格进行限制。不能为了贪图方便,把各个用户都设置成为管理员。(2)选择合适的账户连接到数据库。一般数据库的访问权限可以通过两种方式进行控制:一是通过前台应用程序。也就是说,其连接到数据库是一个统一的账户,如管理员账户;这种方式虽然可以减少前台程序开发的工作量,但是,对于数据库服务器的安全是不利的。二是在前台程序中,就直接利用员工账户的账号登陆到数据库系统。这种做法虽然可以提高数据库的安全性,但是,其前台配置的工作量会比较繁琐。而笔者往往采用折中的方法。总之,我们的目的就是要限制以数据库管理员身份连接到数据库的用户数量。在其他应用服务器中,也有管理员账户与普通账户之分。在权限分配的时候,最好只给用户授予其需要的最小权限,以保障服务器的安全。
2.取消默认账户不需要的权限。在建立账户的时候,服务器往往给其一些默认的权限。如在数据库中,Public是授予每个用户的默认角色。任何用户,只要没有指定具体的角色,则其都可以授予Public组的权限。这其中,还包括执行各种SQL语句的权限。如此,用户就有可能利用这个管理漏洞,去访问那些不允许他们直接访问的包。因为这个默认权限,对于那些需要他们并且需要合适配置和使用他们的应用来说,是非常有用的,所以,系统默认情况下,并没有禁止。但是,这些包可能不适合于其他应用。因此,除非绝对的需要,否则就应该从默认缺陷中删除。建议的做法是,会把应用系统的默认用户权限设置为最小,有些甚至把默认用户权限全部取消掉。这就迫使服务器管理员在建立账户的时候,给账户指定管理员预先设定的角色。这就可以有效的防止管理员“偷懒”。在建立账户的时候,不指定角色。
二、结语
数据库中存放着大量的数据,保护数据不受内部和外部的侵害是一项重要的任务。SQL Server 2005广泛地应用于企业的各个部门,做为数据库系统管理员,需要深入地理解SQL Server的安全控制策略,以实现安全管理的目标。
参考文献
[1]徐守祥. 数据库应用技术[M].人民邮电出版社,2005.
[2]杨学全. SQL Server 2000实例教程[M]. 电子工业出版社,2005.
[3]迪尤逊. 图灵程序设计丛书[M]. 人民邮电出版社,2006.
[4]张建伟. 数据库技术与应用-SQL Server 2005[M]. 人民邮电出版社,2008.
[5]周奇.SQL Server 2005 数据库基础及应用技术教程与实训[M]. 北京大学出版社,2008.
作者简介:魏慧(1981-),女,山东济宁人,济宁职业技术学院助教,研究方向:计算机软件开发;李艳鹏(1980-),女,山东济宁人,济宁职业技术学院助教,研究方向:计算机应用。