Изменены разрешения для папки каталога служб Integration Services - PullRequest
0 голосов
/ 21 января 2019

Вопрос. Содержит ли какая-либо из системных таблиц SQL Server в SSISDB или MSDB информацию, которая позволила бы мне узнать, какие пользователи вносят изменения в разрешения для папок в каталоге служб Integration Services?

Справочная информация: я виделчто задание агента SQL не было выполнено со следующим описанием ошибки:

Невозможно получить доступ к пакету или пакет не существует.Убедитесь, что пакет существует и у пользователя есть разрешения на него.

После изучения проблемы я обнаружил, что разрешения учетной записи службы для папки, содержащей соответствующие пакеты, были удалены.Я хотел бы выполнить диагностику, чтобы узнать, кто и когда удалил разрешения.

Кроме того, управление конфигурацией нашей группой ИТ-операций было сложной задачей, поскольку серверы SQL не поддерживали связь между средами (т. Е., разработка, тестирование, этап и производство) в отношении по меньшей мере следующего:

  1. Управление исправлениями
  2. Управление памятью
  3. Управление разрешениями

Исследование: я проверил таблицу Sysssispackages в MSDB, но она не выглядит полезной, и все таблицы в SSISDB представляются целочисленными.Мой опыт в разработке баз данных и в меньшей степени в управлении базами данных.Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Изменения в разрешениях не проверяются для SSISDB.

Когда вы используете пользовательский интерфейс для предоставления / отклонения разрешений для папки / проекта, это переводится на вызов catalog.grant_permission / catalog.deny_permissions Те проверяют, являетесь ли вы администратором (сервер или база данных) и если так, то вызовите internal.update_permission со значением 0/1 для предоставления против отказа.

Я проверил это по сравнению с 2014 годом, но я был бы удивлен, если что-нибудь изменится в 2016/2017/2019

SQL Server сам отслеживает изменения разрешений через системную трассировку. Предполагая, что изменение было недавним, вы можете попробовать запрос, подобный этому

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';

Прорыв класса событий в https://www.databasejournal.com/features/mssql/a-few-cool-things-you-can-identify-using-the-default-trace.html

0 голосов
/ 22 января 2019

Я не думаю, что SSISDB или MSDB содержат информацию об аудите изменений разрешений. Если подумать, это должно быть сделано на базе данных SQL Server. У вас должен быть процесс аудита, который отслеживает все изменения в экземпляре SQL Server.

Вы можете обратиться к следующим ссылкам, чтобы узнать больше о том, как можно отслеживать или проверять изменения разрешений:

Чтобы проверить, какие таблицы и информация хранятся в MSDB и SSISDB, перейдите по следующим ссылкам:

...