Mag*_*ier 5 monitoring sql-server permissions sql-server-2008-r2
我需要一个解决方案来监视表权限更改:
对于 SQL Server 2008 R2(直到当前版本),您可以使用使用扩展事件的SQL Server AuditSQL Server Audit 。
审核 SQL Server 实例或 SQL Server 数据库涉及跟踪和记录系统上发生的事件。您可以使用多种 SQL Server 审核方法,如审核(数据库引擎)中所述。从 SQL Server 2008 Enterprise 开始,您还可以使用 SQL Server Audit 设置自动审核。
SQL Server Audit 是几个部分的组合:
创建和使用审核的一般流程如下:
- 创建审核并定义目标。
- 创建映射到审计的服务器审计规范或数据库审计规范。
- 启用审核规范。
- 启用审核。
- 做一些与审计相关的事情...
- 使用 Windows 事件查看器、日志文件查看器或 fn_get_audit_file 函数读取审核事件。
1. 创建审核:
USE [master]
GO
CREATE SERVER AUDIT [AuditTest]
TO FILE
( FILEPATH = N'...\...'
,MAXSIZE = 0 MB
,MAX_ROLLOVER_FILES = 2147483647
,RESERVE_DISK_SPACE = OFF
)
WITH
( QUEUE_DELAY = 1000
,ON_FAILURE = CONTINUE
);
Run Code Online (Sandbox Code Playgroud)
2. 创建审核规范:
USE [YourDB]
GO
CREATE DATABASE AUDIT SPECIFICATION [SpecTest]
FOR SERVER AUDIT [AuditTest]
ADD (SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP)
WITH (STATE = ON)
Run Code Online (Sandbox Code Playgroud)
3. 启用或更改审核规范:
ALTER DATABASE AUDIT SPECIFICATION [SpecTest] WITH (STATE=OFF);
ALTER DATABASE AUDIT SPECIFICATION [SpecTest] ADD (SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP)
ALTER DATABASE AUDIT SPECIFICATION [SpecTest] WITH (STATE=ON);
Run Code Online (Sandbox Code Playgroud)
4. 启用/禁用审核
USE [master]
GO
-- disable
ALTER SERVER AUDIT [AuditTest2] WITH (STATE=OFF)
-- enable
ALTER SERVER AUDIT [AuditTest2] WITH (STATE=ON)
Run Code Online (Sandbox Code Playgroud)
5. 更改权限
DENY SELECT on dbo.testA to testLogin
REVOKE VIEW DEFINITION ON dbo.testA to testLogin
GRANT ALTER ON dbo.testA to testLogin
Run Code Online (Sandbox Code Playgroud)
6. 读取审核日志:
SELECT * FROM sys.fn_get_audit_file (N'C:\_data\AuditTest_*.sqlaudit', DEFAULT, DEFAULT);
Run Code Online (Sandbox Code Playgroud)
输出:
event_time sequence_number action_id succeeded permission_bitmask is_column_permission session_id server_principal_id database_principal_id target_server_principal_id ...
2016-01-25 13:50:36.3210127 1 D 1 0x00000000000000000000000000000001 0 57 260 1 271 ...
2016-01-25 13:50:36.3210127 1 R 1 0x00000000000000000000000000000100 0 57 260 1 271 ...
2016-01-25 13:50:36.3210127 1 G 1 0x00000000000000000000000000000200 0 57 260 1 271 ...
Run Code Online (Sandbox Code Playgroud)
请注意,我正在使用SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP代替DATABASE_OBJECT_PERMISSION_CHANGE_GROUP. 您可以从页面中间的SQL Server 审核操作组和操作中阅读更多内容:
每当对模式对象执行授予、拒绝、撤销时都会引发此事件。相当于审核模式对象 GDR 事件类。
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |