论文部分内容阅读
摘要:针对目前面临的数据库安全问题,文章从数据库系统的安全模型入手,对SqlSever数据库的安全配置进行描述,分析讨论了SQL SERVER数据库使用中的安全问题,针对不同的用户分析了可能存在的安全问题,并提出了一些具体的解决方法和建议,从而提高用户对数据库安全防范意识。
关键词:SQL Server;数据库;数据库安全;访问控制
中图分类号:TP393文献标识码:A文章编号:1009-2374(2009)02-0037-02
SQL Server是微软公司开发和推广的数据库管理系统(DBMS),在Windows NT或Windows2000下运行,是一个客户朋艮务器关系式数据库系统。由于SQL Server实现和管理数据库应用程序最为容易,是设计中、小型数据库的首选工具,在各个方面得到了广泛的应用。
一、SQL SERVER中的安全性问题
(一)模型中的数据库人口
数据库的使用者可以分成三类:一般的用户,管理员(包括数据库库管理员和系统管理员)程序员。不同的数据库使用者进人数据库的人口也是不同的。
一般的用户(数据库应用程序的使用者)是从模型中的最外围一用户来访问、存取、控制数据库的。用户标识和鉴别是模型提供的最外层的安全包保护措施。从技术角度讲,这个人口是最安全的。数据库的安全性由程序保证。这就要求程序代码的健壮性和安全性。由于程序代码的问题导致的数据库安全性早已引起重视。很多文献列出的注入SQL攻击就是程序代码引起的,这些问题,程序员在编写代码的过程要注意。从管理角度讲,用户名和口令要保密。只要用户的权限不是很高,即使泄漏了,也只是当前用户对应得外模式数据,对整个数据库来讲,这种威胁并不是致命的。
管理员(数据库及数据库应用系统的管理员。包括数据库库管理员和系统管理员)的安全性是至关重要的,他可以从模型的任意一层进入数据库,从第1层用户进入的话,安全问题和一般用户一样。从第2层数据库管理进入的话,要特别注意,这个时候管理员的权限很大,安全问题很突出。一般管理员(区别于超级管理员)不能直接在数据库服务器上通过DBMS进人数据库。
程序员(数据库应用程序的开发者)因为其特殊性,在应用系统开发的过程中,和数据库管理员一样,可以从OS,DBMS和用户进入数据库。甚至有时候是以超级管理员的身份进入数据库的,这就使得数据库的安全问题尤为突出,另外,程序员在数据库应用程序正常使用以后,其身份又只相当于一般的用户,甚至没有操作的权限,那么从管理员、甚至是超级管理员身份变成一般用户的过程中,用户和密码的泄露、传播,数据库操作权限的过大都给数据库的正确、安全运行带来影响,甚至是致命的问题。
(二)存取控制
数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据,这就是数据库系统的存取控制机制。从数据库安全的技术角度来看,MS SQL SERVER2000用用户权限定义和合法权限检查机制保证了系统的安全性,但是在数据库管理层面上,往往是用户权限分配和使用过程中的扩大化和滥用,导致存取控制形同虚设.造成安全隐患。下面是实际使用MS SQL SERVER2000中的问题:
1.MS SQL SERVER2000有一个SA的默认,很多数据库使用者直接用的就是这个用户,这样,也就是说不管当前的数据库使用者真正访问和操作数据库的权限有多大,一律赋予超级用户权限,可以访问和操作数据库的所有数据,存取控制形同虚设,数据库从一定程度上就完全不安全。
2.某些情况下,为方便管理,超级用户会新建用户,但赋予新建用户的权限过大,有些甚至具有超级用户的权限,这样存取控制同样形同虚设。
3.对重要的数据库管理员没有密码或弱密码,MS SQLSERVER2000默认安装,SA的密码为空,一些用户会取像“1234”这样一些密码,这就是弱密码,同样其他超级用户也存在没有密码或弱密码的情况,这样很容易遭受攻击,等于把SA交给所有能连接计算机的人员。
4.对于上述的三种情况,因为存取控制的形同虚设不仅带来数据库的安全问题,还能带来整个计算机系统的安全性问题。MSSQL SERVER中,sa或者其他超级用户,或者是MASTER的存储过程执行权限者,可以通过执行MASTER 中的存储过程cmd shell execute,增加任意级别的操作系统用户,从而控制整个计算机系统,进行任意的破坏。具体操作步骤:
STEPh以SA用户登陆数据库服务器;STEP2:执行存储过程MASTER。CMD—SHELL—EXECUTE“NET ADD USERNAME PASSWORD/USERE”:STEP3: 执行存储过程MASTER.CMD_SHELL—EXECUTE“NET ADD USERNAME ADMINISTRATOR/GROUP”:STE P4:用新增加超级用户进入服务器操作系统。
二、SQL Sewer数据库访问控制策略
访问控制(access contro1)是对用户访问数据库各种资源的权力的控制。SQL Server对用户的访问控制分为两个阶段:一是安全帐户认证。二是访问许可认证。在安全帐户认证阶段。Windows操作系统或SQL Server对用户登录进行认证。如果认证成功,用户则可连接到SQL Server,否则数据库服务器将拒绝用户的连接请求访问许可确认指的是用户成功连接到SQL Server后。系统根据数据库中保存的与服务器登录标识相对应的用户帐户来判断他们是否拥有对数据库的访问许可。
(一)SQL Server的安全帐户认证模式
SQL Server服务器安全认证有以下两种模式:Windows认证模式和Windows与SQL Server混合认证模式。Windows认证更为安全。因为Windows操作系统具有较高的安全性(C2级安全标准)。SQL Server认证管理较为简单,当SQL Server在Windows NT或Windows2000上运行时,系统管理员必须制定系统使用的认证模式。当采用混合认证模式时,SQL Server既允许使用Windows认证模式又允许使用SQL Server认证模式。
在完成SQL Server安装以后,SQL Server就建立了一个特殊帐户sa。sa是系统管理员(System Administrator)的简称,sa帐户拥有最高的管理权限,可以执行服务器范围内的所有操作,既不能更改sa用户名称,也不能删除sa,但可以更改其密码。在刚刚完成SQL Server的安装时候,sa帐户没有任何密码,所以要尽快为其设置密码。
(二)访问许可确认
用户在实现安全登录之后,检验用户的下一个安全等级是数据库访问权限。数据库的访问权限是通过映射数据库的用户和登录帐户之间的关系来实现。安全帐户认证决定用户能否向SQL Server发送命令,而访问权限确认则决定用户能否在数据库中执行T—SQL语句。
三、合理分配权限
实施安全策略的最后一个步骤是创建用户定义的数据库角色,然后分配权限。完成这个步骤最简单的方法是创建一些名字与全局组名字配套的角色。例如对于前面例子中的会计系统,我们可以创建Accounting Data Entry Opera.tOrs、Accounting Data Entry Managers之类的角色。由于会计数据库中的角色与帐务处理任务有关,你可能想要缩短这些角色的名字。然而,如果角色名字与全局组的名字配套,你可以减少混乱,能够更方便地判断出哪些组属于特定的角色。创建好角色之后就可以分配权限。在这个过程中,我们只需用到标准的GRANT、REVOKE和DENY命令。但应该注意DENY权限,这个权限优先于所有其他权限。如果用户是任意具有DENY权限的角色或者组的成员,SQLServer将拒绝用户访问对象。接下来就可以加入所有SQL Server验证的登录。用户定义的数据库角色可以包含SQL Server登录以及NT全局组、本地组、个人帐户,这是它最宝贵的特点之一。用户定义的数据库角色可以作为各种登录的通用容器,我们使用用户定义角色而不是直接把权限分配给全局组的主要原因就在于此。
由于内建的角色一般适用于整个数据库而不是单独的对象,因此这里建议你只使用两个内建的数据库角色,即db— securityadmin和db—owner。其他内建数据库角色,例如db—datareader,它授予对数据库里面所有对象的sE.LECT权限。虽然你可以用db—datareader角色授予sE.LECT权限,然后有选择地对个别用户或组拒绝SELECT权限,但使用这种方法时,你可能忘记为某些用户或者对象设置权限。一种更简单、更直接而且不容易出现错误的方法是为这些特殊的用户创建一个用户定义的角色,然后只把那些用户访问对象所需要的权限授予这个用户定义的角色。
本文介绍了SQL Server数据库的安全机制,在实际应用中的有关安全性设置,包括Windows2000操作系统安全设置、网络安全设置、MS SQL Server2000的安全设置知识等安全方法,并提出了一些安全措施,对于提高SQL Server数据库的安全性有比较好的效果,对中、小型数据库的设计有一定的借鉴意义。
参考文献
[1]刘启原,刘怡.数据库与信息系统的安全[M].科学出版社,2000.
[2]李海泉.李健.计算机网络安全与加密技术[M].科学出版社.2001.
[3]曹效阳.浅谈SQL Server中的安全策略[J].现代计算机,2006,(l).
作者简介:朱敏(1976-),男,供职于温州市公安局鹿城区分局。
关键词:SQL Server;数据库;数据库安全;访问控制
中图分类号:TP393文献标识码:A文章编号:1009-2374(2009)02-0037-02
SQL Server是微软公司开发和推广的数据库管理系统(DBMS),在Windows NT或Windows2000下运行,是一个客户朋艮务器关系式数据库系统。由于SQL Server实现和管理数据库应用程序最为容易,是设计中、小型数据库的首选工具,在各个方面得到了广泛的应用。
一、SQL SERVER中的安全性问题
(一)模型中的数据库人口
数据库的使用者可以分成三类:一般的用户,管理员(包括数据库库管理员和系统管理员)程序员。不同的数据库使用者进人数据库的人口也是不同的。
一般的用户(数据库应用程序的使用者)是从模型中的最外围一用户来访问、存取、控制数据库的。用户标识和鉴别是模型提供的最外层的安全包保护措施。从技术角度讲,这个人口是最安全的。数据库的安全性由程序保证。这就要求程序代码的健壮性和安全性。由于程序代码的问题导致的数据库安全性早已引起重视。很多文献列出的注入SQL攻击就是程序代码引起的,这些问题,程序员在编写代码的过程要注意。从管理角度讲,用户名和口令要保密。只要用户的权限不是很高,即使泄漏了,也只是当前用户对应得外模式数据,对整个数据库来讲,这种威胁并不是致命的。
管理员(数据库及数据库应用系统的管理员。包括数据库库管理员和系统管理员)的安全性是至关重要的,他可以从模型的任意一层进入数据库,从第1层用户进入的话,安全问题和一般用户一样。从第2层数据库管理进入的话,要特别注意,这个时候管理员的权限很大,安全问题很突出。一般管理员(区别于超级管理员)不能直接在数据库服务器上通过DBMS进人数据库。
程序员(数据库应用程序的开发者)因为其特殊性,在应用系统开发的过程中,和数据库管理员一样,可以从OS,DBMS和用户进入数据库。甚至有时候是以超级管理员的身份进入数据库的,这就使得数据库的安全问题尤为突出,另外,程序员在数据库应用程序正常使用以后,其身份又只相当于一般的用户,甚至没有操作的权限,那么从管理员、甚至是超级管理员身份变成一般用户的过程中,用户和密码的泄露、传播,数据库操作权限的过大都给数据库的正确、安全运行带来影响,甚至是致命的问题。
(二)存取控制
数据库安全最重要的一点就是确保只授权给有资格的用户访问数据库的权限,同时令所有未被授权的人员无法接近数据,这就是数据库系统的存取控制机制。从数据库安全的技术角度来看,MS SQL SERVER2000用用户权限定义和合法权限检查机制保证了系统的安全性,但是在数据库管理层面上,往往是用户权限分配和使用过程中的扩大化和滥用,导致存取控制形同虚设.造成安全隐患。下面是实际使用MS SQL SERVER2000中的问题:
1.MS SQL SERVER2000有一个SA的默认,很多数据库使用者直接用的就是这个用户,这样,也就是说不管当前的数据库使用者真正访问和操作数据库的权限有多大,一律赋予超级用户权限,可以访问和操作数据库的所有数据,存取控制形同虚设,数据库从一定程度上就完全不安全。
2.某些情况下,为方便管理,超级用户会新建用户,但赋予新建用户的权限过大,有些甚至具有超级用户的权限,这样存取控制同样形同虚设。
3.对重要的数据库管理员没有密码或弱密码,MS SQLSERVER2000默认安装,SA的密码为空,一些用户会取像“1234”这样一些密码,这就是弱密码,同样其他超级用户也存在没有密码或弱密码的情况,这样很容易遭受攻击,等于把SA交给所有能连接计算机的人员。
4.对于上述的三种情况,因为存取控制的形同虚设不仅带来数据库的安全问题,还能带来整个计算机系统的安全性问题。MSSQL SERVER中,sa或者其他超级用户,或者是MASTER的存储过程执行权限者,可以通过执行MASTER 中的存储过程cmd shell execute,增加任意级别的操作系统用户,从而控制整个计算机系统,进行任意的破坏。具体操作步骤:
STEPh以SA用户登陆数据库服务器;STEP2:执行存储过程MASTER。CMD—SHELL—EXECUTE“NET ADD USERNAME PASSWORD/USERE”:STEP3: 执行存储过程MASTER.CMD_SHELL—EXECUTE“NET ADD USERNAME ADMINISTRATOR/GROUP”:STE P4:用新增加超级用户进入服务器操作系统。
二、SQL Sewer数据库访问控制策略
访问控制(access contro1)是对用户访问数据库各种资源的权力的控制。SQL Server对用户的访问控制分为两个阶段:一是安全帐户认证。二是访问许可认证。在安全帐户认证阶段。Windows操作系统或SQL Server对用户登录进行认证。如果认证成功,用户则可连接到SQL Server,否则数据库服务器将拒绝用户的连接请求访问许可确认指的是用户成功连接到SQL Server后。系统根据数据库中保存的与服务器登录标识相对应的用户帐户来判断他们是否拥有对数据库的访问许可。
(一)SQL Server的安全帐户认证模式
SQL Server服务器安全认证有以下两种模式:Windows认证模式和Windows与SQL Server混合认证模式。Windows认证更为安全。因为Windows操作系统具有较高的安全性(C2级安全标准)。SQL Server认证管理较为简单,当SQL Server在Windows NT或Windows2000上运行时,系统管理员必须制定系统使用的认证模式。当采用混合认证模式时,SQL Server既允许使用Windows认证模式又允许使用SQL Server认证模式。
在完成SQL Server安装以后,SQL Server就建立了一个特殊帐户sa。sa是系统管理员(System Administrator)的简称,sa帐户拥有最高的管理权限,可以执行服务器范围内的所有操作,既不能更改sa用户名称,也不能删除sa,但可以更改其密码。在刚刚完成SQL Server的安装时候,sa帐户没有任何密码,所以要尽快为其设置密码。
(二)访问许可确认
用户在实现安全登录之后,检验用户的下一个安全等级是数据库访问权限。数据库的访问权限是通过映射数据库的用户和登录帐户之间的关系来实现。安全帐户认证决定用户能否向SQL Server发送命令,而访问权限确认则决定用户能否在数据库中执行T—SQL语句。
三、合理分配权限
实施安全策略的最后一个步骤是创建用户定义的数据库角色,然后分配权限。完成这个步骤最简单的方法是创建一些名字与全局组名字配套的角色。例如对于前面例子中的会计系统,我们可以创建Accounting Data Entry Opera.tOrs、Accounting Data Entry Managers之类的角色。由于会计数据库中的角色与帐务处理任务有关,你可能想要缩短这些角色的名字。然而,如果角色名字与全局组的名字配套,你可以减少混乱,能够更方便地判断出哪些组属于特定的角色。创建好角色之后就可以分配权限。在这个过程中,我们只需用到标准的GRANT、REVOKE和DENY命令。但应该注意DENY权限,这个权限优先于所有其他权限。如果用户是任意具有DENY权限的角色或者组的成员,SQLServer将拒绝用户访问对象。接下来就可以加入所有SQL Server验证的登录。用户定义的数据库角色可以包含SQL Server登录以及NT全局组、本地组、个人帐户,这是它最宝贵的特点之一。用户定义的数据库角色可以作为各种登录的通用容器,我们使用用户定义角色而不是直接把权限分配给全局组的主要原因就在于此。
由于内建的角色一般适用于整个数据库而不是单独的对象,因此这里建议你只使用两个内建的数据库角色,即db— securityadmin和db—owner。其他内建数据库角色,例如db—datareader,它授予对数据库里面所有对象的sE.LECT权限。虽然你可以用db—datareader角色授予sE.LECT权限,然后有选择地对个别用户或组拒绝SELECT权限,但使用这种方法时,你可能忘记为某些用户或者对象设置权限。一种更简单、更直接而且不容易出现错误的方法是为这些特殊的用户创建一个用户定义的角色,然后只把那些用户访问对象所需要的权限授予这个用户定义的角色。
本文介绍了SQL Server数据库的安全机制,在实际应用中的有关安全性设置,包括Windows2000操作系统安全设置、网络安全设置、MS SQL Server2000的安全设置知识等安全方法,并提出了一些安全措施,对于提高SQL Server数据库的安全性有比较好的效果,对中、小型数据库的设计有一定的借鉴意义。
参考文献
[1]刘启原,刘怡.数据库与信息系统的安全[M].科学出版社,2000.
[2]李海泉.李健.计算机网络安全与加密技术[M].科学出版社.2001.
[3]曹效阳.浅谈SQL Server中的安全策略[J].现代计算机,2006,(l).
作者简介:朱敏(1976-),男,供职于温州市公安局鹿城区分局。