WEB开发网
开发学院数据库MSSQL Server 面向数据库管理员的SQL Server 2008安全性概述 阅读

面向数据库管理员的SQL Server 2008安全性概述

 2010-03-06 15:43:13 来源:WEB开发网   
核心提示:DDL触发器DDL 触发器是在 SQL Server 2005 中引入的,与表中数据发生变化时执行 Transact-SQL 代码的DML 触发器不同,面向数据库管理员的SQL Server 2008安全性概述(15),DDL 触发器在表结构 发生变化时激活,这是跟踪和审核数据库架构的结构性变化的极佳方式,在数据库级别

DDL触发器

DDL 触发器是在 SQL Server 2005 中引入的。与表中数据发生变化时执行 Transact-SQL 代码的DML 触发器不同,DDL 触发器在表结构 发生变化时激活。这是跟踪和审核数据库架构的结构性变化的极佳方式。

这些触发器的语法与 DML 触发器的类似。DDL 触发器是 AFTER 触发器,为了响应 DDL 语言事件而激活;它们不会为了响应执行类似 DDL 操作的系统存储过程而激活。它们是完全事务性的,因此您可以 ROLLBACK 一个 DDL 变更。您可以在 DDL 触发器中运行 Transact-SQL 或者 CLR代码。 DDL 触发器还支持类似其他模块的 EXECUTE AS 子句。

SQL Server 将关于触发器事件的信息作为非类型化的 XML 提供。可以通过称为 EVENTDATA()的能够发出 XML 数据的新内置功能获得这些信息。可以使用 XQuery 表达式解析 EVENTDATA() XML 以发现事件属性,如架构名称、目标对象名称、用户名,以及导致触发器最先激活的整个Transact-SQL DDL语句。例如,请参见 SQLServer Books Online 中的 EVENTDATA (Transact-SQL)。数据库级 DDL 触发器由数据库或更低级别的 DDL 语言事件激活。例如,CREATE_TABLE、 ALTER_USER等等。服务器级 DDL 触发器由服务器级的 DDL 语言事件激活,例如 CREATE_DATABASE、ALTER_LOGIN 等等。为了管理方便,您可以使用事件组,比如 DDL_TABLE_EVENTS,来简称所有 CREATE_TABLE、ALTER_TABLE 和 DROP_TABLE 事件。各种 DDL 事件组和事件类型及其相关 XML EVENTDATA()在SQLServer Books Online 上均有记述。

与 DML 触发器名称不同(它是架构范围的),DDL 触发器是数据库范围或服务器范围的。

使用此目录视图发现 DML 触发器和数据库级 DDL 触发器的触发器元数据:

SELECT * FROM sys.triggers ;

GO

如果 parent_class_desc 列中存在 'DATABASE' 的值,那么它就是 DDL 触发器,并通过数据库本身确定名称范围。Transact-SQL 触发器的代码体可以在 sys.sql_modules 目录视图中找到,并且可以将它连接到 sys.triggers 的object_id 列中。 关于 CLR 触发器的元数据可以在 sys.assembly_modules 目录视图中找到,同样可以连接到 sys.triggers 的 object_id 列中。

使用此目录视图发现服务器范围的 DDL 触发器的元数据:

SELECT * FROM sys.server_triggers ;

GO

Transact-SQL 服务器级别的触发器的代码体可以在 sys.server_sql_modules 目录视图中找到,可以将它连接到 sys.server_triggers 的 object_id 列上。关于一个 CLR 服务器级别的触发器的元数据可以在 sys.server_assembly_modules 目录视图中找到,同样可以将它连接到 sys.server_triggers 的 object_id 列上。

可以使用 DDL 触发器来捕捉和审核数据库中的 DDL 活动。创建一个带有非类型化的 XML 列的审核表。为 DDL 事件或您感兴趣的事件组创建一个 EXECUTE AS SELF DDL 触发器。这个DDL 触发器的代码体可以简单地将 EVENTDATA() XML 插入到审核表中。

DDL 触发器的另一个有趣的使用是由 CREATE_USER 事件激活然后添加代码到自动权限管理。例如,假设您想让所有的数据库用户获得一个对存储过程 P1、P2 和 P3 的 GRANT EXECUTE 权限。DDL 触发器可以从 EVENTDATA() XML 中提取用户名称,动态地生成一个语句,像 ‘GRANT EXECUTE ON P1 TO someuser’,然后对它执行EXEC()。

结束语

SQL Server 2008 提供了丰富的安全特性,用于保护数据和网络资源。它的安装更轻松、更安全,除了最基本的特性之外,其他特性都不是默认安装的,即便安装了也处于未启用的状态。SQL Server提供了丰富的服务器配置工具,特别值得关注的就是 SQL Server Surface Area Configuration Tool,它的身份验证特性得到了增强, SQL Server 更加紧密地与Windows身份验证相集成,并保护弱口令或陈旧的口令。有了细粒度授权、SQL Server Agent 代理和执行上下文,在经过验证之后,授权和控制用户可以采取的操作将更加灵活。元数据也更加安全,因为系统元数据视图仅返回关于用户有权以某种形式使用的对象的信息。在数据库级别,加密提供了最后一道安全防线,而用户与架构的分离使得用户的管理更加轻松。

上一页  10 11 12 13 14 15 

Tags:面向 数据库 管理员

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接