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 服务器没有保持跨环境(即开发、测试、阶段和生产)的在线状态至少以下:
- 补丁管理
- 内存管理
- 权限管理
研究:我检查了 MSDB 中的 Sysssispackages table,但这似乎没有帮助,SSISDB 中的 tables 似乎都是基于整数的。我的背景是数据库开发,而不是数据库管理。感谢任何帮助。
我不认为 SSISDB 或 MSDB 包含有关权限更改审计的信息。如果认为这应该在 SQL 服务器数据库引擎上完成。您应该有一个审核过程来监视 SQL 服务器实例上的所有更改。
您可以参考以下链接,详细了解如何跟踪或审核权限更改:
- Tracking SQL Server Database Permission Changes
- SQL Server Audit
- Audit SQL Server permission changes to improve overall security
要查看存储在 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
问题: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 服务器没有保持跨环境(即开发、测试、阶段和生产)的在线状态至少以下:
- 补丁管理
- 内存管理
- 权限管理
研究:我检查了 MSDB 中的 Sysssispackages table,但这似乎没有帮助,SSISDB 中的 tables 似乎都是基于整数的。我的背景是数据库开发,而不是数据库管理。感谢任何帮助。
我不认为 SSISDB 或 MSDB 包含有关权限更改审计的信息。如果认为这应该在 SQL 服务器数据库引擎上完成。您应该有一个审核过程来监视 SQL 服务器实例上的所有更改。
您可以参考以下链接,详细了解如何跟踪或审核权限更改:
- Tracking SQL Server Database Permission Changes
- SQL Server Audit
- Audit SQL Server permission changes to improve overall security
要查看存储在 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