尝试确定一个服务器输出的审计文件是否可以在该服务器上没有 CONTROL SERVER 访问权限的情况下被读取。MSDN文档表明这是可能的:即使数据库引擎正在写入文件,只要有权限,其他Windows用户就可以读取审计文件。数据库引擎不会采取排他锁来阻止读操作。同时,建议从一个单独的SQL Server实例(例如SQL Server Express的实例)生成审计报告,只有审计管理员或审计读者才能访问。通过使用单独的数据库引擎实例进行报告生成,可以帮助防止未经授权的用户获取访问审计记录的权限。简而言之,我可以这样做吗?
【回答澄清后的问题】 就您的答案而言,此查询是否可以由原始DB上的非DBA在不相关的SQL Mgmt Studio/DB中运行?
- 配置生产数据库上的审计以输出到文件共享
- 给审计读者读取文件共享的权限
- 从另一个数据库中使用sys.fn_get_audit_file('fileshare*')来生成审计报告。
【回答澄清后的问题】 就您的答案而言,此查询是否可以由原始DB上的非DBA在不相关的SQL Mgmt Studio/DB中运行?
SELECT
event_time, action_id, session_id, object_id, class_type,
database_principal_name, database_name, object_name, statement
FROM
sys.fn_get_audit_file('\\Temp\Audit\*',NULL,NULL);