现在只有明确地被授予在存储过程上的EXECUTE权限的用户可以访问这个表的数据。
6. SQL Server 2008中的审查
任何安全解决方案的一个重要部分是具有审查责任和调整遵从性原因的活动的能力。SQL Server 2008具有一些使它可以审查活动的特性。
6.1 所有活动审查
SQL Server 2008具有通过审查对象对审查的支持,这使得管理员可以捕捉数据库服务器中的活动并将它存储在日志中。有了SQL Server 2008,你可以将审查信息存储在以下目的地中:
· 文件
· Windows应用程序日志
· Windows安全日志
为了写到Windows安全日志中去,SQL Server 安全必须被配置为作为本地系统、本地服务、网络服务或一个具有SeAuditPrivilege权限但不是交互的用户的域帐户来运行。
为了创建一个审查对象,你必须使用CREATE SERVER AUDIT语句。这个语句定义了一个审查对象,并将它与一个目的地相关联。这个特定的选项习惯于配置一个依赖于审查目的地的审查对象。例如,下面的 Transact-SQL代码创建了两个审查对象;一个记录活动到一个文件中,另一个记录活动到Windows应用程序日志中:
CREATE SERVER AUDIT HIPAA_File_Audit
TO FILE ( FILEPATH=’\\SQLPROD_1\Audit\’ );
CREATE SERVER AUDIT HIPAA_AppLog_Audit
TO APPLICATION_LOG
WITH ( QUEUE_DELAY = 500, ON_FAILURE = SHUTDOWN);
注意在记录到一个文件目的地中时,文件名称没有在CREATE SERVER AUDIT语句中指定。审查文件名称采用AuditName_AuditGUID_nn_TS.sqlaudit 的形式,其中AuditName 是审查对象的名称,AuditGUID是与审查对象关联的唯一标识符,nn是用于分割文件组的分区编码,而TS是一个timestamp类型的值。例如,通过之前的代码示例创建了HIPAA_FILE_Audit审查对象,它可以产生一个日志文件,其名称与下面的类似:
HIPAA_File_Audit_{95A481F8-DEF3-40ad-B3C6-126B68257223}_00_29384.sqlaudit
你可以使用QUEUE_DELAY 审查选项为性能原因执行异步的审查,而ON_FAILURE选项决定当审查信息不能写到目的地时所要采取的行动。在之前的 HIPAA_AppLog_Audit示例中所显示的,ON_FAILURE选项配置为当日志不能写的时候关闭SQL Server示例;在这种情况下,执行CREATE SERVER AUDIT语句的用户必须具有SHUTDOWN权限。
在你创建了一个审查对象时,你可以使用CREATE SERVER AUDIT SPECIFICATION和CREATE DATABASE AUDIT SPECIFICATION语句为它添加事件。CREATE SERVER AUDIT SPECIFICATION 添加服务器级别的行动组(在服务器级别会发生的相关行动的预定义集合)到一个审查中去。例如,下面的代码添加了FAILED_LOGIN_GROUP 行动组(它记录了失败的登陆尝试)到HIPAA_File_Audit审查中去。
CREATE SERVER AUDIT SPECIFICATION Failed_Login_Spec
FOR SERVER AUDIT HIPAA_File_Audit
ADD (FAILED_LOGIN_GROUP);
CREATE DATABASE AUDIT SPECIFICATION语句添加数据库级别的行动组和将单个的数据库事件添加到一个审查中去。添加单独的行动使得你可以过滤基于这个活动涉及的对象和用户来记录的行动。例如,下面的代码示例添加了DATABASE_OBJECT_CHANGE_GROUP行动组(它记录数据库中的任何CREATE、 ALTER或DROP操作)和将用户SalesUser或 SalesAdmin在Sales schema中对对象执行的任何INSERT, UPDATE, or DELETE语句添加到HIPAA_AppLog_Audit审查中去。
CREATE DATABASE AUDIT SPECIFICATION Sales_Audit_Spec
FOR SERVER AUDIT HIPAA_AppLog_Audit
ADD (DATABASE_OBJECT_CHANGE_GROUP),
ADD (INSERT, UPDATE, DELETE
ON Schema::Sales
BY SalesUser, SalesAdmin);