关闭

SQL数据库安全性

343人阅读 评论(0) 收藏 举报
分类:

许多Windows系统管理员,还兼职着微软SQL Server数据库管理员(DBA)的身份。另一方面,企业将许多机密的信息存储到了SQL Server数据库中。作为一名DBA新手,则需要了解SQL Server的安全模式和如何配置其安全设置,以保证“合法”用户的访问并阻止“非法”访问。而在SQL Server中登陆、用户、角色、权限提供了对数据库访问的权限,接下来在数据库安全性上着重分析它们的关系。

 

●      安全层次和验证模式

     

      一、安全层次

        SQL Server支持三级安全层次。在我们登陆到SQL Server时,其实我们是经过了三步的验证。

      第一层次是用户提供正确的账号和密码登录到SQL Server,或者已经成功登陆了一个可以映射到SQL Serverwindows账号。但是在SQL Server登陆并不意味着能够访问数据库,而是要经过第二层次的验证。

      第二层次的权限允许用户与一个或多个数据库相连,这一层次的实现要在数据库对象的用户中绑定登陆账户。

      第三个层次的安全权限允许用户拥有对指定数据库中的对象的访问权限,例如:可以指定用户有权使用哪些表和视图、运行哪些存储过程。在第一层次中的windows账号,其实是在我们装机时给windows指定的自己登陆到windows系统的账号,而作为windows系统管理员的我们其实也兼职了SQL Server的管理权,那我们如何设置才能保证只有我们指定的用户才能访问SQL数据库呢?就是我们下面要说的验证模式。

    二、SQL登陆验证模式

                                                             

       

        SQL的登陆验证模式有两种,一种是Windows的验证模式,另一种是WindowsSQL Server混合验证模式。如果我们选择windows模式登陆并把windows账号映射到SQL Server的登陆上,那么合法的windows用户也就连接到了SQL Server中。

        Windows模式的登陆需要在SQL Server中设置。方法:

                   打开SQL Server企业管理器,找到安全性文件夹,打开后再登陆中新建一个windows身份验证模式的账户。需要注意的是在新建账户时,账户的名称一定要填我们windows账户的名字,如:我的计算机在用户中名称为张信秀,则在填名称时一定要填张信秀。

                                                                   

          SQL Server的验证模式相对windows的登陆模式在设置上没有特别的要求,只需填上我们的密码即可。

         接下来进入我们的重点——角色、权限,首先我们在图上来区分。

 

●   登陆、权限、角色

         在往下说之前我们先介绍下安全账户。返回到安全层次上来说,账户在登录到SQL Server后,如果想获得访问某个数据库的权限,是必须要在SQL中获得安全账户的,确保登陆的账号是安全的,就好比是我们出国的护照签证一样,想要去哪个国家必须获得该国家的签证和出入境章,这个安全账户就是在数据库对象的用户中绑定一个登陆账号,证明这个登陆账号是安全的。

         账户、角色、权限他们三者是没有严格的关系的,如果有的话就是角色给账户分配职能,而权限却又限制着角色和账户对数据库的操作。它们三者就好像是公司里的员工、职权、规章,公司按照职能分配不同的员工,但是每个员工却又受到公司规章的限制。

      一、数据库角色

          数据库角色控制着数据库的安全性。当最终用户成功地连接到分析服务器之后,会在那个服务器上的数据库角色中查找最终用户的用户名,来确定用户对数据库的可能操作。

              数据库角色在创建时有两种:

                       1、标准角色:不允许嵌套,在使用时只需在安全账户中添加,通过分配权限确保了用户能够进行的操作;

                       2、应用程序角色:为了让标准角色嵌套,来控制角色所能进行的操作,创建后SQL Server把它当做账户看待(因为它是应用程序级别的),它的作用是为权限提供相应的加密,用存储过程sp_setapprole激活才可进行授予权限的操作。

  二、权限

               权限有三种类型,

                         1、语句权限:限制对表updateinsert等的操作,在创建角色时或添加安全用户后设置;

                         2、对象权限:限制用户对数据库对象的创建,在数据库属性内设置;

                         3、暗示性权限:SQL Server数据库自带的那些角色或用户,如:服务器角色、数据库所有者(dbo)等拥有的权限,不需要了解他,因为它是系统自己设置的用户不能够设置。

           最后我们在代码中应用下三者:

 

  1. /*示例说明:在数据库company中创建一个拥有表product的所有权限、拥有表employees的SELECT权限的角色rtest随后创建了一个登录ltest,然后在数据库company中为登录ltest创建了用户账户utest同时将用户账户utest添加到角色rtest中,使其通过权限继承获取了与角色rtest一样的权限最后使用DENY语句拒绝了用户账户utest对表titles的SELECT权限。经过这样的处理,使用ltest登录SQL Server实例后,它只具有表product的所有权限。  
  2. */  
  3.   
  4. USE company  
  5.   
  6. --创建角色 rtest  
  7. EXEC sp_addrole 'rtest'  
  8.   
  9. --授予 rtest 对product 表的所有权限  
  10. GRANT ALL ON product TO rtest  
  11. --授予角色 rtest 对 employees 表的 SELECT 权限  
  12. GRANT SELECT ON titles TO rtest  
  13.   
  14. --添加登录 ltest,设置密码为pwd,默认数据库为pubs  
  15. EXEC sp_addlogin 'ltest','pwd','company'  
  16.   
  17. --为登录 ltest 在数据库 pubs 中添加安全账户 utest  
  18. EXEC sp_grantdbaccess 'ltest','utest'  
  19.   
  20. --添加 utest 为角色 rtest 的成员  
  21. EXEC sp_addrolemember 'rtest','utest'  
  22.   
  23. --拒绝安全账户 utest 对 employees 表的 SELECT 权限  
  24. DENY SELECT ON employees TO utest  
  25.   
  26. /*--完成上述步骤后,用 ltest 登录,可以对company表进行所有操作,但无法对employees表查询,虽然角色 rtest 有employees表的select权限,但已经在安全账户中明确拒绝了对employees的select权限,所以ltest无employees表的select权限--*/  
  27.   
  28. --从数据库 company 中删除安全账户  
  29. EXEC sp_revokedbaccess 'utest'  
  30.   
  31. --删除登录 ltest  
  32. EXEC sp_droplogin 'ltest'  
  33.   
  34. --删除角色 rtest  
  35. EXEC sp_droprole 'rtest'  


 

●       总结:

         在新建登陆时,利用服务器角色分配账户的功能,利用数据库角色管理用户对数据库进行的操作。在新建角色时为角色分配权限,来限制用户的操作。   

         懂得SQL Server安全性的机制后,我们就可以开发自己的数据库安全策略了。你下一步所需要的可能就是产生一个SQL Server脚本了。在SQL Server企业管理器中,右击一个数据库,选择“所有任务”,选择“生成SQL脚本”,这个选项能够产生一个脚本,对包括安全策略在内的数据库进行更新。一个脚本文件可以代替通过鼠标在SQL Server事件管理器中进行点击和选择的操作,大大减少DBA的工作量。

0
0
查看评论

SQL Server数据库的安全性

它可以根据用户访问权限的不同,决定用户登录到当前的数据库访问数据以及对数据库对象设置权限的操作。它有两种登录认证模式,其一,Windows认证,是以服务器平台对安全性的帐号管理机制,SQL Server不需要再进行认证。其二,SQL Server认证,登录SQL Server需要登录用户名称和密码。...
  • xiaoluningmeng
  • xiaoluningmeng
  • 2007-05-03 11:08
  • 940

SQL Server操作之数据库安全性和完整性

一道题学会SQL Server安全性和完整性控制,包括创建数据库,创建数据库用户,权限赋予及收回等 题目如下: 1、在SQL SERVER 2008上附加teaching数据库,其中三张表的含义解释如下: 学生表dbo.student有属性sno、sname、spec、birthday、e...
  • J_Anson
  • J_Anson
  • 2016-05-30 00:34
  • 1516

Sql Server 安全性实验

实验目的探究不同等级的用户对数据库的操作权限,
  • Mq_Go
  • Mq_Go
  • 2017-04-28 23:10
  • 688

sql server2008 安全性管理机制

Sqlserver 安全性管理 Sqlserver安全管理主要概念包括: 登录名、服务器角色、数据库用户、数据库角色、架构 (1)  登录名  Windows身份登录:      A.  可以为每个wind...
  • TangLinCSDN
  • TangLinCSDN
  • 2015-06-09 19:26
  • 411

SQLServer系统的安全性管理

如何提高数据库服务器的安全,服务器系统用的是windows2003数据库系统用的是sql2000服务器只作数据库使用不与外网链接,只有客户端可能会链接外网以上是我看到朋友的叙述,就他这个问题做做解释,谈谈SQLServer的安全SQL Server 数据库的安全性管理包括1`数据库登陆管理2`数据库...
  • tgv_mic
  • tgv_mic
  • 2006-02-22 11:32
  • 1147

数据库的完整性和安全性

数据的完整性 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据 防范对象:不合语义的、不正确的数据 数据的安全性 保护数据库 防止恶意的破坏和非法的存取 防范对象:非法用户和非法操作
  • qq_15037231
  • qq_15037231
  • 2017-03-10 19:31
  • 519

mysql技术内幕总结篇 (一)存储程序和视图的安全性

本文只是阅读mysql技术内部后的总结            4.5 存储程序和视图的安全性  存储程序是一个将在未来的某个时刻执行的对象 视图也是如此。意味着实际执行的这些语句的用户有可能不知道创建者,服务器执行...
  • u010282135
  • u010282135
  • 2016-11-04 12:23
  • 1077

SQL Server数据库维护系列之(一)数据库安全

一、身份验证      SQL Server2008的安全包括服务器安全和数据安全,服务器安全指什么人可以登录服务器、可以访问哪些数据库以及在数据库里可以访问什么内容。数据安全包括数据的完整性、文件的安全性。使用主键、外键、约束、唯一键、视图、存储过程等维护...
  • Mr_supreme
  • Mr_supreme
  • 2014-10-30 16:38
  • 509

SQL Server:数据库的三级模式

数据库具有一个严谨的体系结构,这样可以有效地组织、管理数据,提高数据库的逻辑独立性和物理独立性。数据库领域公认的标准结构上三级模式结构。 数据库系统的三级模式结构是指模式、外模式和内模式。 1、模式 模式也称逻辑模式或盖面模式,它是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视...
  • vjudge
  • vjudge
  • 2014-07-31 14:00
  • 1001

sql语句的应该考虑哪些安全性呢

sql语句的应该考虑哪些安全性呢? 1.防止sql注入,对特殊字符进行转义(addslashes),或者使用已经编译好的sql语句进行变量的绑定; 2.当sql运行出现错误的时候,不要把数据库返回的错误信息全部显示给客户,以防止泄漏服务器和数据库的相关信息; 3.最小权限原则,特别...
  • hhgggggg
  • hhgggggg
  • 2017-08-29 15:22
  • 283
    个人资料
    • 访问:874352次
    • 积分:11825
    • 等级:
    • 排名:第1514名
    • 原创:107篇
    • 转载:1382篇
    • 译文:0篇
    • 评论:57条
    最新评论