SQLServer数据库安全规划全攻略
时间:2007-12-23 来源:不详 作者:迈克DB
一、验证方法选择
本文对验证(authentication)和授权(authorization)这两个概念作不同的解释。验证是指检验用户的身份标识;授权是指答应用户做些什么。在本文的讨论中,验证过程在用户登录SQLServer的时候出现,授权过程在用户试图访问数据或执行命令的时候出现。
构造安全策略的第一个步骤是确定SQLServer用哪种方式验证用户。SQLServer的验证是把一组帐户、密码与Master数据库Sysxlogins表中的一个清单进行匹配。WindowsNT/2000的验证是请求域控制器检查用户身份的合法性。一般地,假如服务器可以访问域控制器,我们应该使用WindowsNT/2000验证。域控制器可以是Win2K服务器,也可以是NT服务器。无论在哪种情况下,SQLServer都接收到一个访问标记(AccessToken)。访问标记是在验证过程中构造出来的一个非凡列表,其中包含了用户的SID(安全标识号)以及一系列用户所在组的SID。正如本文后面所介绍的,SQLServer以这些SID为基础授予访问权限。注重,操作系统如何构造访问标记并不重要,SQLServer只使用访问标记中的SID。也就是说,不论你使用SQLServer2000、SQLServer7.0、Win2K还是NT进行验证都无关紧要,结果都一样。 织梦好,好织梦
假如使用SQLServer验证的登录,它最大的好处是很轻易通过EnterpriseManager实现,最大的缺点在于SQLServer验证的登录只对特定的服务器有效,也就是说,在一个多服务器的环境中治理比较困难。使用SQLServer进行验证的第二个重要的缺点是,对于每一个数据库,我们必须分别地为它治理权限。假如某个用户对两个数据库有相同的权限要求,我们必须手工设置两个数据库的权限,或者编写脚本设置权限。假如用户数量较少,比如25个以下,而且这些用户的权限变化不是很频繁,SQLServer验证的登录或许适用。但是,在几乎所有的其他情况下(有一些例外情况,例如直接治理安全问题的应用),这种登录方式的治理负担将超过它的优点。
二、Web环境中的验证
即使最好的安全策略也经常在一种情形前屈服,这种情形就是在Web应用中使用SQLServer的数据。在这种情形下,进行验证的典型方法是把一组SQLServer登录名称和密码嵌入到Web服务器上运行的程序,比如ASP页面或者CGI脚本;然后,由Web服务器负责验证用户,应用程序则使用它自己的登录帐户(或者是系统治理员sa帐户,或者为了方便起见,使用Sysadmin服务器角色中的登录帐户)为用户访问数据。
内容来自dedecms
这种安排有几个缺点,其中最重要的包括:它不具备对用户在服务器上的活动进行审核的能力,完全依靠于Web应用程序实现用户验证,当SQLServer需要限定用户权限时不同的用户之间不易区别。假如你使用的是IIS5.0或者IIS4.0,你可以用四种方法验证用户。第一种方法是为每一个网站和每一个虚拟目录创建一个匿名用户的NT帐户。此后,所有应用程序登录SQLServer时都使用该安全环境。我们可以通过授予NT匿名帐户合适的权限,改进审核和验证功能。
第二种方法是让所有网站使用Basic验证。此时,只有当用户在对话框中输入了合法的帐户和密码,IIS才会答应他们访问页面。IIS依靠一个NT安全数据库实现登录身份验证,NT安全数据库既可以在本地服务器上,也可以在域控制器上。当用户运行一个访问SQLServer数据库的程序或者脚本时,IIS把用户为了浏览页面而提供的身份信息发送给服务器。假如你使用这种方法,应该记住:在通常情况下,浏览器与服务器之间的密码传送一般是不加密的,对于那些使用Basic验证而安全又很重要的网站,你必须实现SSL(SecureSocketsLayer,安全套接字层)。
文章评论
共有位Admini5网友发表了评论 查看完整内容