SQL Server 2005 加强的十大安全举措
随着数据库系统被用作网络应用程序后台存储范围的持续扩大,对安全的关注也就越来越必要。虽然从发展的角度来看,围绕在SQL Server 2005的周围的还有不少的杂音,但是微软的囊括了很多优秀的新特性的数据管理系统还是可以帮助开发人员和数据库管理员锁定数据库系统,保护对敏感数据的访问。
以下是一个高层列表,没有特定的顺序,列出了SQL Server 2005中大概10个最显著的安全加强。要按照重要性来进行排序是困难的,因为每个数据库管理员都有不同的需要。
目录表
模拟(Impersonation)
表面区域配置工具(Surface Area Configuration tool)
用户-计划分离(User-schema separation)
粒度权限集合(Granular permission sets)
密码策略(Password policies)
加密(Encryption)
受限元数据可见度(Limited metadata visibility)
安全分类视图(Security catalog views)
数据定义语言触发器(DDL triggers)
Windows用户信任映射(Mapping Windows user credentials)
模拟(Impersonation )
模拟,或者是执行环境上下文交换,指的是临时交换一个连接的安全设置的过程,为的是获得对资源的访问。这对于采用了最小权限设计的系统特别重要。假设用户只有尽可能最小的对资源的权限,并且在必要的时候使用模拟来有选择的提高权限,这样做可以帮助减少整体的暴露。
在SQL Server 2005中,EXECUTE AS 和 SETUSER 是用来控制背景环境交换的。要获得更有有关这些语句的信息,查看《A First Look at SQL Server 2005 for Developers》的摘要。
表面区域配置工具(Surface Area Configuration tool)
SQL Server 2005是一个大的产品??大到可以包括了许多新的特性,因此潜在地,它也可以处于安全的目的用作向量。为了防止这类事件,要能够容易快捷地看到每个特性的状态??还有配置??是非常重要的。如果一个特性没有用于数据库支持的应用,为了防止滥用的可能性,就应该将其失效。
表面区域配置工具是SQL Server 2005提供的,允许数据库管理员从单个地点管理多个外部资源的工具。类似CLR集成,SQL 邮件和本地XML网络服务的特性都可以用这个工具进行配置。虽然每个特性都可以使用T-SQL 进行配置,但是表面区域配置工具提供了一种方便使用的图形化用户界面。
要了解有关这个工具的更多信息,请到Developer.com 上查看《管理SQL Server 2005的表面区域》这篇文章。
用户计划分离(User-schema separation)
在SQL Server 2005中,数据库中的对象没有必要再被一个用户拥有。相反,他们可以包含在一个计划中,一个可以被赋予权限的逻辑容器。这个分离的意思是当一个对象突然崩溃的时候可以给用户分配多个对象的权限,而不是像SQL Server以前的版本中,数据库管理员每次只能分配一个。此外,从数据库中删除用户也不再意味着他们拥有的对象必须被删除或者重新分配。
要了解更多有关计划的信息,查看我的tip《SQL Server 2005中的权限》。
粒度权限集合(Granular permission sets)
在SQL Server以前的版本中,假设需要访问服务器资源的时候,数据库管理员几乎没有选择。当把整个的权限配置归结为一个严格的“固定的服务器角色”集合的时候,看起来似乎就不能完美地适合任何一个环境了。例如,不可能给开发人员权限来运行Profiler 追踪的时候,不给同一个人访问服务器上所有其他资源的权力。
幸运的是,这些固定的角色在SQL Server 2005中不再必要了,感谢新的粒度权限集合特性。现在每次给一个人实际地分配访问每个服务器资源的权限成为可能。用户可以被赋予访问任何资源的权限组合??或者仅仅是某项资源。系统像数据库管理员期望的那样灵活。
要获得有关粒度权限的更多信息,也可以阅读我的tip《SQL Server 2005中的权限》。
密码策略(Password policies)
当安装在Windows Server 2003系统上的时候,SQL Server 2005可以采用操作系统的密码策略登录SQL Server。它转换为更加安全的密码,减少了发生在数据库服务器上的暴力攻击的机会。SQL Server 2005不但支持密码复杂度规则(确保最小长度,加强字母和数字字符的组合,等),还支持密码过期策略(确保古老的密码必须被修改)。
要使用这些特性,数据库管理员们可以使用ALTER LOGIN语句来设置CHECK_POLICY 和CHECK_EXPIRATION 选项。
加密 (Encryption)
大多数的存储了敏感数据的数据库都使用了加密技术来确保数据的安全。直到现在,这样的技术还只是在应用层实现,通过类似微软的Base Cryptographic Provider的技术。
SQL Server 2005通过自带的暴露加密技术减少了基于应用进行加密的需求。现在,数据库管理员和开发人员能够建立一个证书库,创建对称或者不对称的密钥,并使用不同的算法,其中包括三层DES(数据加密标准),RC4和AES(高级加密标准)。
加密是一个很大的话题。要获得更多有关SQL Server 2005 在这个领域内的贡献的信息,查阅《Database Journal》中的文章《SQL Server 2005安全??第三部分 加密》。
受限元数据可见度(Limited metadata visibility)
在SQL Server的早期版本中,元数据没有基于访问控制机制的保护措施。用户也许不能从某个特定的表中查询数据,但是他仍然可以通过类似sysobjects的系统表或者INFORMATION_SCHEMA视图,例如INFORMATION_SCHEMA.TABLES,看到这个表的存在。
SQL Server 2005的数据库管理员们现在不需要担心以下的任何事情:数据库系统的分类视图(包括兼容性视图和INFORMATION_SCHEMA视图)现在都被保护起来,用户只能看到他们能够访问的对象。这对于担心数据安全的数据库管理员们,和那些不想看到他们不能访问的资源的用户都有好处。
要获得更多有关SQL Server 2005的分类视图的信息,请阅读我的tip《向SQL Server 2005中的系统表说再见》。
安全分类视图(Security catalog views)
在保护那些包含数据库对象(在前面项目中描述的)的信息的分类视图的安全之外,SQL Server 2005还包含了一系列的综合视图,允许数据库管理员快速获得有关访问权限的信息。
庞大的sys.database_permissions 视图包含了某个数据库中有关所有准予的权限的信息。这个视图显示数据的粒度与应用权限的粒度在同一个档次上,这样数据库管理员要决定谁可以访问什么就很容易了。有一个类似的视图,sys.server_permissions ,包含了服务器级别的权限的信息。
其他的安全视图包含了有关法则、角色和与加密相关的数据信息。查看SQL Server 2005 的在线书籍以了解更多有关这些视图的信息。
数据定义语言触发器(DDL triggers)
SQL Server 数据库管理员很早就开始意识到了使用触发器在数据操纵操作中嵌入基于事件的逻辑的威力。所谓的数据操纵语言(DML)触发器在几年前的产品就存在了。
现在,同样的能力扩展到了数据定义语言(DDL)语句中。数据库管理员可以编写服务器或者数据库级别的触发器来监控类似创建或者删除表,增加服务器登录或者修改数据库的事件。从安全和审计的角度来看,这些触发器的价值都是无法衡量的。现在,数据库管理员可以非常轻松地编写自动记录日志的触发器来捕捉发生的事件。
要了解有关SQL Server 2005 数据定义语言触发器的信息,查阅Developer.com 上的文章《使用数据定义语言触发器来管理SQL Server 2005》。
Windows用户信任映射(Mapping Windows user credentials)
在SQL Server 2005 里面,用来访问外部资源的登录再也不需绑定到SQL Server服务账户的访问权限上。数据库管理员可以使用新的语句,CREATE CREDENTIAL来创建一个可以映射到一个或者多个登录的访问点。
当使用需要访问外部资源的SQLCLR模块或者SQL Server 代理任务工作的时候,这种新的方式带来了更大的灵活性。例如,如果一个SQL Server 代理任务需要访问一个远程文件以彻夜导入数据,SQL Server 服务账户再也不需要拥有浏览远程服务器以检索文件的权限了。
总结
通过使用SQL Server 2005中的新的安全特性,数据库管理员和开发人员可以创建更加灵活和更不易于攻击的数据库应用程序。当安全在我们的信息受到困扰的社会中变得越来越重要的时候,数据库专业人员们就需要更多的工具来抵御这些威胁。SQL Server 2005用这些,以及其他的加强的安全措施迎接了这个挑战。