use*_*163 6 sql-server audit permissions sql-server-2012
我想看看授予特定表的权限是否有任何更改。
例如,我不想让登录名“John”拥有SELECT对表 Invoices的权限。
如果这个许可是GRANTed给约翰的,我想知道。我想知道是谁授予了他的许可,什么时候授予的。
我正在使用 SQL Server 2012 企业版。
由于您使用的是 SQL 2012,您可以利用SQL Server 审计,它是随 SQL 2008 引入的。SQL Server 审计可用于跟踪 SQL Server 中的大量操作,包括数据库对象权限GRANT/REVOKE/DENY操作。您将能够看到执行该语句的安全主体、该语句的运行时间以及该语句的确切内容。要创建审核,您需要执行以下操作:
创建审计
审计定义了所有审计的总体日志记录。要创建审计,您可以使用对象资源管理器在实例下浏览到安全->审计。右键单击审计并选择“新建审计”。填写下一个对话框(这里重要的是您存储审计文件的位置,其余的您可以使用默认值)。创建后,您需要在对象浏览器中右键单击审核并启用它。
创建审计规范
规范定义了您要跟踪的操作,使用操作/组的任意组合来定义规范。可以跟踪服务器和数据库级别的许多不同操作。要为数据库权限更改创建规范,请在要跟踪的数据库下浏览到安全性-> 数据库审计规范。右键单击并填写对话框。选择您在上面创建的审计以写入。在审核操作类型下,SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP从下拉列表中选择。此操作允许您跟踪架构对象的权限更改。完成后,单击“确定”以创建规范。然后,在对象浏览器中启用它。
查看审计
一旦这一切完成,审计就会运行,并将捕获GRANT/REVOKE/DENY该数据库中的操作。要查看审计日志,请在 Security->Audits 中浏览到实例下的审计。右键单击审计并选择“查看审计日志”,您将能够看到自开始审计以来在数据库中发生的所有审计操作。
作为替代方案,可以使用 T-SQL 和以下命令启用您的审计:
--Create Audit
USE [master];
CREATE SERVER AUDIT [PermissionTracking]
TO FILE
( FILEPATH = N'C:\DBData'
,MAXSIZE = 0 MB
,MAX_ROLLOVER_FILES = 2147483647
,RESERVE_DISK_SPACE = OFF
)
WITH
( QUEUE_DELAY = 1000
,ON_FAILURE = CONTINUE
);
--Enable Audit
ALTER SERVER AUDIT [PermissionTracking] WITH (STATE=ON);
--Create Database Audit Specification
USE [foo];
CREATE DATABASE AUDIT SPECIFICATION [FooDBPermissions]
FOR SERVER AUDIT [PermissionTracking]
ADD (SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP)
WITH (STATE=ON);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4538 次 |
| 最近记录: |