SQL Server:安全设计从头起 | |
2005-10-23 8:12:42 来源: 动态网站制作指南 作者: 佚名 | |
【我来说两句】 【推荐】 【打印】 【关闭】 | |
开发人员和管理人员通常不断地考虑程序安全问题的策略──添加安全措施不再是一个可以完全接收的方法。程序的安全问题必须从设计的开始就得考虑,并贯穿开发的整个过程。以后如果要开发一个SQL Server的数据库,你一定要从开始就遵循这些安全设计规则。
l 混合模式:这一模式将Windows认证模式和SQL Server认证联接在一起。用户可以通过一个Windows用户帐号进行连接,这正如Windows认证一样。但是,你也可以在SQL Server中直接建立用户帐号。每一个SQL Server帐号都存储了一个用户名和密码。 我们建议在可能的情况下都使用Windows认证模式。然而,混合模式很可以使用,特别是在SQL Server 7.0(或更早版本)都可以使用。.对于早期的SQL Server版本,SQL Server认证存在一些缺点。Windows认证已经集成了操作系统的安全系统,这就提供了比SQL Server认证更多的安全特性,很容易的使用,效率更加高,安全性更加好。在设计开始的时候,你应该认真考虑选择哪一种模式最为合适。
如果安全模式已经启动,注册将成为关键。你必须使用正确的方法来启动程序,注册也是同样的,如果你不能正确地输入用户名和密码,程序将不能连接到网络,同时也不能连接到SQL Server。 作为一个管理者,一旦你已经启动了程序,你就做好安全管理的准备。可以通过定义以下的特性而实现: l 用户(帐号):一个SQL Serve安全帐号代表着一个唯一的用户。一个用户也只有一个Windows帐号或者一个SQL Server注册,这与数据库中的用户帐号相统一。 l 组(帐号):每一个用户都属于一个或多个组,这由认证模式决定。每一个组都具有特定许可。作为一个组的成员,你将获得所有组的许可。 l 对象所有权:所有权属于建立对象的用户。所有者可以将访问权限分配给用户。如果你是一个视的所有者,你还可以决定哪些用户可以通过视来查看数据。 l 许可:一个许可代表着具有执行某些操作的权利,比如打开一个视或者更改一个存储程序。SQL Server承认许可的三种状态:GRANT给你一个用户访问;REVOKE删除访问;DENY防止用户访问对象。 l 任务:这是一个SQL Server安全帐号,可以将帐号的集合作为一个简单的单元来处理。任务定义在特定数据库中用户可以做哪些和哪些不可以做。
l 敏感数据; l 可以查看敏感数据的人。 敏感数据包括所有可能的数据,包括整个数据库中的所有数据,虽然这样的安全级别很少存在。你的工作就是定义为敏感数据并进行保护。 你选择的认证模式和建立的注册将通过限制哪些用户可以进入到数据库而实施第一步安全步骤。 第二步就要列举可以访问数据库的所有用户,然后决定所有数据是否对所有的用户都适用。通常,你需要对一些数据进行保护,比如工资或者其他私人数据。这就意味着只有特定的用户可以访问和查看数据。你还可以设置哪些用户更改数据。 始终记住的一条规则是“最小权利”概念。如果有人在他的工作中不需要访问数据,那即不要给他访问的权限。应该避免所有的用户都具有sa用户的访问权限。
l 从开始就获得数据库和对象的所有权。当建立一个新的数据库时,你将会成为数据库的所有者,并能够设置数据库中所有发生一切。你可以以管理者的身份注册数据库。然而,对象的所有权属于建立对象的用户。虽然这可能造成所有权的转移,但可以确定这些的注册能够被用于建立所有的对象。 l 理解所有权链。这一安全特性防止用户建立自己的视而偷看一些敏感数据。例如,假设你建立一个从两个表中集中的数据的视,如果你是这两个表的所有者,当你允许其他用户使用视的许可时,SQL Server不会检查表的有关许可。 l 使用视和存储程序以分配给用户访问数据的权利,而不是让用户编写一些直接访问表格的特别查询语句。通过这种方式,你无需在表格中将访问权利分配给用户。视和存储程序也可以限制查看的数据。例如,如果你的雇员表格包含一些秘密的工资信息,你可以建立一个省略了工资栏的视。 l 如果用户从特定程序中进入你的程序,你可以建立程序任务。一个程序任务就是分配到特定程序的用户,并给予用户的有关许可。使用程序任务,用户不能直接地认证数据库,相反,他们先认证他们自己的程序,这就决定哪些程序任务与服务器相连接。 l 时刻注意程序补丁。不可否认的,程序补丁是一些诀窍的集合。程序的发布,更新等都会引入新的问题,使用程序补丁是防止外界干扰和保护数据的最好和最容易的方法。可以访问微软主页上的SQL Service Pack下载页,查看当前最新的程序补丁。
|