许多Windows 2000和Windows NT的系统管理员都兼职着其他的工作...
权限的授予
无论你是希望向用户或角色授予数据库权限,你都可以首先从用户(请记住一个SQL Server用户可能对应着一个NT组)或角色着手完成这一任务,也可以从表、视图、存储过程着手,把对某一对象的访问权限授予适当的用户或自定义的数据库角色。
通过用户指派权限。展开SQL Server Enterprise Manager,在指定的数据库下选择“Users”条目,在右边的窗口中双击指定的用户名打开“Database User Properties”对话框,点击“Permissions”按钮显示该用户拥有的对这个数据库中对象的访问权限,如图5所示。
需要注意的是这个对话框显示的仅仅是明确地授予这个用户的权限,该用户因是一个或多个角色、NT组的成员而拥有的权限则不会显示在这里,实际上,要在SQL Server中得到用户所有权限的清单是相当困难的。
可以通过SELECT对话框授予用户读一个表或视图的访问权限。如果需要对数据库中的数据进行更新,一般情况下会使用INSERT、UPDATE和DELETE命令。然而,你希望数据录入人员能够插入记录但不能对它们进行修改或删除,删除数据记录可能是拥有更大权限、更多经验的雇员的任务。要删除一个用户删除记录的权限,可以双击DELETE命令,出现一个红色的“X”符号,如图5所示。你可能有兴趣与开发人员讨论用户权限问题,但如果他们把有关的安全措施放入更新数据库记录的应用程序内部,你就无需操这份心了。然而,在数据库中实现安全措施更加安全,因为任何用户不可能通过修改应用程序的方法访问数据库中的数据。“Permissions”表显示用户Caesar可以对Customers表中的客户资料进行添加、更新等操作,但他无权删除一个客户,该表还同时显示Caesar无权对Employee Territories进行更新,但你需要记住的是他可能是拥有这一权限的组的成员。
Permissions表中的EXEC字段控制着执行存储过程的能力。存储过程是用T-SQL写成的基于SQL Server的子程序,可以使SQL Server完成与数据库相关的操作。开发人员使用它们的原因是它们效率更高并且提供了新的安全手段,如果编程人员编写了存储过程,另外的用户则必须有这个存储过程的“Execute”权限才能运行它们。
除非开发人员特别地提醒,我们可以忽视Declarative Referential Integrity(DRI)字段。有时用户在一个表中输入数据时,SQL Server必须在另一个表中查找数据。例如,如果一个用户在一个合同表中输入物品的编号时,SQL Server可能会通过另一个产品表验证输入的编号是否是一个可用的编号,这了能够完成这些验证,用户需要拥有对产品数据库的“Select”权限和合同数据库的“Insert”权限。有时,用户可能会需要通过其他的表来检验其输入的数据,但又不能直接地读取这个表,在这种情况下,用户就需要DRI权限而不是Select权限。
通过对SQL Server安全性的介绍,我们已经可以开发自己的数据库安全策略了,你下一步所需要的可能就是产生一个SQL Server脚本了。在SQL Server Enterprise Manager中,右击一个数据库,选择“All Tasks”,选择“Generate SQL Scripts”,这个选项能够产生一个脚本,对包括安全策略在内的数据库进行更新。然后就该学习如何在Query Analyzer窗口中运行脚本了,如果要运行控制安全设置的一部分脚本你就需要这样做。一个脚本文件可以代替通过鼠标在SQL Server事件管理器中进行点击和选择的操作,大大减少DBA的工作量。
查看本文来源