面向数据库管理员的SQL Server 2008安全性概述
2010-03-06 15:43:13 来源:WEB开发网在 SQLServer2008 中,完全合格的对象名称由4部分组成,这与旧版SQL Server 中的对象名称类似:
server.database.schema.object
与旧版类似,如果对象所在服务器与运行代码的服务器同名,则可忽略服务器名称。如果连接打开了同名数据库,则可忽略数据库名称。如果使用当前用户的默认架构或架构为 dbo 所拥有,则可忽略架构名称,因为这是 SQL Server 尝试消除对象名称歧义时最后用过的架构。
可以利用 CREATE USER 语句而非 sp_adduser 语句创建新用户。此系统存储过程仍然是为了实现向后兼容性,但已进行了少许修改,以遵循用户与架构分离的新原则。sp_adduser 创建的架构与新用户名或应用程序角色同名,并将该架构作为用户的默认架构,这与 SQL Server 2000 的行为类似,但提供了分离的架构。
注意:使用 ALTER AUTHORIZATION 语句时,可能会产生这种情况:“您”拥有“我的”架构中的表(或反之)。这个问题具有重大的隐含意义。例如,谁拥有该表的触发器,您还是我?底部的代码行可以设计得非常巧妙,以发现架构范围对象或类型的真正所有者。有两种方式可以避开此问题:
利用 OBJECTPROPERTY(id,”OwnerId”)发现对象的真正所有者。
利用 TYPEPROPERTY(type,”OwnerId”)发现类型的真正所有者。
SQL Server 2008 利用同义词帮助减少击键次数。可以利用两部分、三部分或四部分完整对象名为任何对象创建同义词。SQL Server 使用同义词访问已定义的对象。在下列代码中,“History”同义词表示在AdventureWorks 数据库中指定的 schema.table。SELECT 语句返回EmployeeDepartmentHistory 表的内容。
USE AdventureWorks
GO
CREATE SYNONYM History FOR HumanResources.EmployeeDepartmentHistory
SELECT * FROM History
注意:如果其他人准备使用同义词,则管理员或所有者必须为其授予权限。针对视图、表或表值函数,可对同义词应用GRANT SELECT。针对过程或标量函数,可对同义词应用 GRANT EXECUTE,诸如此类。
也可通过以下代码,为完整的四部分名称定义“History”同义词:
CREATE SYNONYM History
FOR MyServer.AdventureWorks.HumanResources.EmployeeDepartmentHistory
假设当前的用户拥有使用同义词的权限以及读取表的权限,则使用类似的四部分全名即可在其他数据库上下文中使用同义词:
USE pubs
SELECT * FROM AdventureWorks..History
还要注意,如果不提供架构名称作为新同义词名称的一部分,它将成为默认架构的一部分。
加密和密钥管理
服务器级安全可能是系统管理员最关心的问题,而对于数据库来说,所有操作都是在生产环境中完成的。。在大多数情况下,数据库管理员会将数据库细节的问题留给数据库开发人员处理,只要开发人员在环境的限制内工作。SQLServer2008提供了大量确保数据库安全的功能。
- ››数据库对象——存储过程
- ››数据库设计词汇对照表
- ››面向对象的JS-私有成员变量实现方式
- ››数据库大型应用解决方案总结
- ››面向对象的JavaScript (一、对象基础,使用函数来...
- ››面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS
- ››面向 Java Web 应用程序的 OpenID,第 2 部分: 为...
- ››面向 Java 开发人员的 db4o 指南: 简介和概览
- ››面向 Java 开发人员的 db4o 指南: 查询,更新和一...
- ››面向 Java 开发人员的 db4o 指南: db4o 中的数据库...
- ››面向 Java 开发人员的 db4o 指南: 超越简单对象
- ››面向 Java 开发人员的 db4o 指南: 结构化对象和集...
更多精彩
赞助商链接