SQL Server安全性:通过数据库角色控制访问(上)

2009-5-12   
   | |

导读:在本文中,作者将阐述如何设置数据库角色并解释它们是如何帮助我们巩固企业安全性。

关键词:SQL Server安全性 数据库角色 控制访问

正在加载数据... 【TechTarget中国原创】安全性在当今世界中是非常重要的,但是如果不了解现有的控制选项,我们是很难保证SQL数据安全。在本文中,我将阐述如何设置数据库角色并解释它们是如何帮助我们巩固企业安全性。

【TechTarget中国原创】安全性在当今世界中是非常重要的,但是如果不了解现有的控制选项,我们是很难保证SQL数据安全。在本文中,我将阐述如何设置数据库角色并解释它们是如何帮助我们巩固企业安全性。

  数据库角色

  数据库角色允许我们定义一个特定的权限集。然后,服务器登录(不管是在AD组、AD用户或者SQL Server登录)都将添加到服务器上和数据库角色中。

  数据库角色

  第一步:右键点击“Database Roles”,选择“New Database Role”。

  通过数据库角色控制访问

  第二步:点击“Securables”,选择指派到该角色的其它数据库角色、对象等。然后点击“OK”。现在数据库角色就出现在“Database Roles”下的数据库/安全/角色清单中。

  通过数据库角色控制访问(图二)

  第三步:指派权限到数据库角色上。只指派确定需要的权限到数据库角色上。我强烈提倡所有数据库访问都通过存储过程,因为这样能让公司获得如下的好处:

  1、编译存储过程可以减少破坏操作的SQL Server入侵攻击。

  2、编译存储过程允许缓存和重用执行计划,从而减少IO/CPU/RAM使用率,因为一次执行计划将以参数化语句存储而不是分别为每次执行存储一个计划。

  3、更简单的访问控制。不要对某一个进程可能被访问的表(很可能是10+表格)授予select/delete/insert/update访问权限,我们只需要对合适的存储过程授予执行权限,然后存储过程会给需要的对象授予正确的权限。

  下面是这个例子的一些权限授予示例:

  • grant execute on [dbo].[Proc_test1] to [TestdbRole]
  • grant view definition on [dbo].[Proc_test1] to [TestdbRole]

  第一个语句授予"TestdbRole"数据库角色成员执行Proc_test1存储过程的权限。第二个语句授予TestdbRole对存储过程的查看定义权利。基本上,这就意味着该角色成员现在可以执行程序Proc同时查看它的内容。然而,它们没有其它的权利,因为Proc_test1查询表Table_1时就已经隐含地授予表查询访问权限了。但是,TestdbRole成员则不能在Table_1进行查询、查看定义或者执行任何活动。

  如果选择授予直接对象访问权限,那么只需简单地执行“grant select on [object] to [TestdbRole]”。然而,正如前面所声明的,我并不推荐这样的方法。

 
查看全文
 
 
 
 
 

SQL Server安全

 
不同于服务器审核规范,数据库审计规范是具体到一个数据库。然而,像一个服务器审核规范,您可以添加审计活动组,但它们是特定于数据库。
 
SQL Server 2008引入了新的审计功能,这对数据库管理员来说是非常有价值的,该功能可以通过跟踪数据库的使用情况从而生成详尽的审计记录。
 
本文主要介绍了编写安全SQL数据库的技巧:确定需保护的数据、威胁建模、SQL参数、编写验证程序、人员培训、静态分析和动态分析。
 
在你创建好审计以后,你还需要创建一个审计规范。它用来告诉SQL Server审计到底捕获那些信息,你可以根据需要捕获尽可能多或少的信息。
 
SQL Server 2008引入了审计的概念,前面的版本只允许我们对基本的登录成功和失败记录错误日志,该新版本的功能远远超出了之前版本。
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录