巧妙运用SQL Server保护数据


想要学习如何通过制定各种等级的数据库存取权限来保护自己的数据不受系统故障的影响吗?

  在绝大部分的程序安装里,SQL Server都是作为一个标准的应用程序栈(包括用户界面、中间层和数据库)中的最底层。很少用户会知道自己正在使用的是什么类型的数据库,更不用说要对数据库进行存取或者直接使用了。因此,数据库安全配置往往非常是最低程度的。有时候在数据库和中间层之间只有很容易就被“破解”的用户名和密码。

  缺乏安全性保障看起来似乎不是什么大问题。如果你设置了防火墙,而你的用户和程序开发员也都很可靠,你可能就会自信满满地认为没有人会恶毒地删除你的数据。但是,只要你有一个满腹牢骚的员工,他只需悄悄一点一点地修改你的商业数据,就足以使你的系统崩溃。除了这种恶意的删改之外,你还需要担心一些不小心的意外出现的删改。所幸的是,你只需要采取一些简单的安全措施就能够防止这些数据破坏,不管是意外的还是恶意的破坏。

  一个应用程序数据库应该至少制定三种访问权限等级:

  用户权限,只能够执行应用程序中指定的一部份已知查询。
  程序开发员权限,由于需要对系统提供支持,可以对非敏感数据进行只读访问。
  管理员权限,可以访问所有数据库对象和数据。
  制定这些权限等级的第一步就是建立自己的安全负责人(例如,需要利用数据库资源的实体)。SQL Server有许多数据库访问权限机制,根据你的应用程序数据环境可选择适当的机制:

  综合型用户:窗口登录,只准许个人访问。
  综合型群组:窗口登录,可允许当前群组成员访问。
  SQL用户,个人:每一个访问你数据库的用户都要进行登录,并获取适当的访问权限。
  SQL用户,单个:SQL Server只允许但个人登录访问。
  当你建立好自己的安全负责人,你必须对其给于赋予访问权限等级。最简单的权限等级就是建立管理员等级。只要把负责人加入到db_owner的身份就可以,使用以下命令:

-->USE <database_name>
EXEC sp_addrolemember 'db_owner', '<principal_name>'
  只要你的数据库里没有敏感数据,程序开发员的权限等级也很容易建立:只需要把负责人加入到db_datareader的身份。而敏感数据,如银行帐号等,则必须按照具体情况进行评估和设定。你可以利用下面这个技术来保障数据的安全:

  l表格级别的安全措施,使用DENY语句来防止SELECT访问某一个特定的表格。
  l列等级安全措施,与表格级别的安全措施相似,使用DENY语句来限制SELECT访问某一列。
  加密:可以在应用程序中对数据进行加密,或者利用SQL Server 2005中的内置式加密功能对数据进行加密。
  实施已建立的用户访问权限等级的方法稍有不同:使用存储程序。在存储程序里,用户需要EXECUTE特权来执行应用程序运行的每一个程序。但是,如果你的应用程序已经建有内嵌的SQL,除了授予全部的访问权限之外,你只有一个选择,你必须根据程序运行的查询授予SELECT、INSERT、UPDATE和DELETE表格和列的特权。


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3