Integration Services Catalog 文件夹权限已更改

Integration Services Catalog folder permissions changed

问题:SSISDB 或 MSDB 中的任何 SQL 服务器系统 table 是否包含允许我发现哪些用户正在更改 Integration Services Catalog 中的文件夹权限的信息?

背景:我看到 SQL 代理作业失败,错误描述如下:

Cannot access the package or the package does not exist. Verify that the package exists and that the user has permissions to it.

经过研究,我发现服务帐户对包含相关包的文件夹的权限已被删除。我想执行诊断以查看谁在何时删除了权限。

此外,我们的 IT 运营团队的配置管理一直是一个挑战,因为 SQL 服务器没有保持跨环境(即开发、测试、阶段和生产)的在线状态至少以下:

  1. 补丁管理
  2. 内存管理
  3. 权限管理

研究:我检查了 MSDB 中的 Sysssispackages table,但这似乎没有帮助,SSISDB 中的 tables 似乎都是基于整数的。我的背景是数据库开发,而不是数据库管理。感谢任何帮助。

我不认为 SSISDB 或 MSDB 包含有关权限更改审计的信息。如果认为这应该在 SQL 服务器数据库引擎上完成。您应该有一个审核过程来监视 SQL 服务器实例上的所有更改。

您可以参考以下链接,详细了解如何跟踪或审核权限更改:

要查看存储在 MSDB 和 SSISDB 中的表和信息是什么,请查看以下链接:

未针对 SSISDB 审核权限更改。

当您使用 folder/project 的 UI 到 grant/deny 权限时,将转换为对 catalog.grant_permission/catalog.deny_permissions 的调用检查您是否处于管理员角色(服务器或数据库),如果是,则使用值为 0/1 的 internal.update_permission 调用授予与拒绝。

我测试了这个与 2014 年相比,但如果它在 2016/2017/2019 中有任何不同,我会感到惊讶

SQL 服务器本身通过系统跟踪跟踪权限更改。假设更改是最近发生的,您可以尝试这样的查询

SELECT
    f.ObjectName
,   f.NTUserName
,   f.StartTime AS ChangeStartTime
,   f.EventClass
,   t.start_time AS TraceStartTime
,   t.last_event_time AS TraceLastEventTime
,   t.event_count
,   f.DatabaseID
,   f.TransactionID
--,   f.NTDomainName
,   f.HostName
,   f.ClientProcessID
--,   f.ApplicationName
,   f.LoginName
,   f.SPID
,   f.EventSubClass
,   f.ObjectID
,   f.ObjectType
,   f.DatabaseName
FROM
    sys.traces t
    CROSS APPLY sys.fn_trace_gettable(REVERSE(SUBSTRING(REVERSE(t.path), CHARINDEX('\', REVERSE(t.path)), 260)) + N'log.trc', DEFAULT) f
WHERE
    t.is_default = 1
    AND f.EventClass IN
    (102, 103, 104, 105, 106, 108, 109, 110, 111)
    AND f.DatabaseName = 'SSISDB';

事件class突破发生在 https://www.databasejournal.com/features/mssql/a-few-cool-things-you-can-identify-using-the-default-trace.html