问题在SQL Server 7.0中,角色是一个新概念。使用数据库角色有什么意义呢?
我们新增了7个固定的服务器角色和9个固定的数据库角色。服务器角色是分散系统管理员工作的一个办法。在SQL
Server 6.5和更早的版本中,有一个叫做“sa”的帐号,这个帐号可以在数据库服务器上做任何事情。在那时,你可以有10个Windows
NT用户被映射成“sa”,这意味着这10个用户都可以在任何时间做任何事情,然而服务器审计工具只会记录成“sa”的操作。你没有任何办法来确认到底是谁做了什么操作。
SQL Server 7.0改进了这一点。不是像以前那样使“sa”具有所有的特权,权限是通过角色成员来获得的。我们还把系统管理员的特权划分成了多个角色。例如,为了在SQL
Server 7.0中让某人获得系统管理员权限,你只需要把他加入到“sysadmin”这个固定服务器角色中即可。
还有其它角色,例如“dbcreator”是用来创建和更改数据库的;“securityadmin”是用来增加新的登录或者重置缺省数据库的。“sa”登录仍然存在,是为了保持向后兼容性。但该权限是通过成为“sysadmin”角色中的成员来获得的。服务器的审计追踪功能将根据你的Windows
NT或者SQL Server登录名来跟踪所做的改变,而不管分配给该帐号的安全特权。
在单个数据库这一级别上情况也非常相似。在以前版本中,人们会把自己化名为“dbo”来获得对数据库的所有权限。现在用户可以被分配成“db_owner”角色,同样可以拥有对单个数据库的完全控制权限。而且,还有更具体的角色,比如“db_acessadmin”用来控制对数据库的访问,“db_securityadmin”用来给予其他用户访问权限,“db_backupoperator”用于备份数据。我们还增加了用户自定义的和应用程序角色,而且允许用户可以同时成为多个数据库角色的成员。
与Windows NT集成是使SQL Server 7.0安全性更易于实施还是使它更为强健呢?
两者都是。你应该使用7.0版的集成安全的原因之一就是,6.5及更早版本的标准安全模式没有提供一些最基本的功能。
关于安全方面的一个基本原则就是口令应该在一定的时间后过期。SQL
Server标准安全模式没有这个功能。另外,它也不禁止为空的口令,不要求口令必须长于一定数目的字符,也不提供任何其它高级口令管理功能。我们希望能够利用Windows
NT,它已经包括所有这些功能。现在,当你锁定使用Windows NT的口令政策时,你通过集成安全同时也锁定了SQL
Server。从这个角度来说,它确实增强了安全性。
从使用的角度来说,增加整个域的用户到SQL Server中去要比以前容易的多,而且该过程是动态的。在SQL
Server 6.5中,如果你使用SQL Server的安全管理器来增加一组用户,它将列举在那个组中的所有用户。假如该NT组中有人被新增或者被删除,你必须重新执行以上的操作。而现在呢,举个例子:假如你把“domain
user”组加入作为一个SQL Server登录,而“domain user”这个NT组中有用户被删除,你不需要在SQL
Server中做任何改动来防止该用户获得对SQL Server的访问权限。
SQL问题汇编(3)
80酷酷网 80kuku.com