Перейти к содержанию
Shell

Строим отчеты по доступу к файлам

Recommended Posts

Shell

Навеяно темой http://www.symantec.com/connect/downloads/...t-report-e-mail

Где то на форуме была политика для ведения лога по записанным и прочитанным файлам на съемных накопителях.

в этой теме покажу как получать отчеты о доступе к файлам на съемных устройствах с помощью простых манипуляций.

Будет рассмотрена связка SQL 2008 + SEPM 11.0.6005

Что нам понадобится. Во первых, настроить Database Mail согласно рекомендаций.

http://marslert.com/blog/2009/03/16/config...-database-mail/

С помощью запроса SQL Query получаем параметры которые нам будут нужны:

SELECT [profile_id]      ,[name]       ,[description]      ,[last_mod_datetime]      ,[last_mod_user]   ,'EXEC [email protected]_name = ''' + name + ''',@recipients = ''ваш_емайл@company.com'', @subject = ''Test'',@body  = ''Message'',  @body_format = ''HTML'';' AS TestSQL  FROM [msdb].[dbo].[sysmail_profile]

Получаем строку типа

EXEC msdb.dbo.sp_send_dbmail  @profile_name = 'Database Mail',  @recipients = 'ваш_емайл@company.com',   @subject = 'Test',  @body  = 'Message',    @body_format = 'HTML';

В SEPM на необходимую группу вешаем политику. Импорт из атача Log documents from-to removable drives.dat

В этой политике уже готово правило которое будет записывать в Client Management logs-->Control Log все операции с файлами с расширениями *.doc, *.docx, *.xls, *.xlsx,*.pst,*.xml,*.txt,*.xlt,*.pdf,*.csv,*.xml,*.mht,*.mhtml,*.rar,*.zip,*.7z,

*.0*

36fd53d7ebd2t.jpg

8c38f4f77194t.jpg

При это в логе на клиенте SEPM будет отображаться информация в формате ниже на скрине с указанием названия правила которое фигурирует выше в политике (важно!).

01a44d56d321t.jpg

Настраиваем в SEPM сроки хранения журнала на клиенте и его размер (в SEPM выбираем Clients-->группу-->в политиках Client log settings).

Нужные нам параметры - в control log. Обязательно ставим галку Upload to management server.

ee9f73c02dc8t.jpg

Устанавливаем в параметрах сервера SEPM настройки хранения логов.

Все логи с клиентов будут собираться в нашу базу в таблицы:

[Endpoint].[Endpoint].[AGENT_BEHAVIOR_LOG_1]

[Endpoint].[Endpoint].[AGENT_BEHAVIOR_LOG_2]

Endpoint - название БД. Что в них собирается - вы можете посмотреть сами и выбрать необходимые поля :)

По сути поля почти теже что и в логе на клиенте.

Обращение к этим двум таблицам сразу возможно через уже встроенную вьюшку [Endpoint].[Endpoint].[V_AGENT_BEHAVIOR_LOG] содержащую простейшее обращение к этим таблицам:

SELECT     *FROM         AGENT_BEHAVIOR_LOG_1UNION ALLSELECT     *FROM         AGENT_BEHAVIOR_LOG_2

Строим запрос к БД с нужными полями, преобразуем формат времени из bigint в удобоваримый.

Возьмем следующие поля:

FILE_NAME - имя файла с которым производятся операции

VAPI_NAME - операция Read\Write (к сожалению, другие операции не будут видны)

CALLER_PROCESS_NAME -- имя процесса которым читается\записывается файл

HOST_NAME,USER_NAME,DOMAIN_NAME - имя хоста (будет без домена), имя пользователя (будет без домена), имя конечного домена без сабдоменов.

EVENT_TIME - собственно время. Время в БД юниксовое, так что приводим его в удобоваримый вид.

select PARAMETER AS FILE_NAME,VAPI_NAME,CALLER_PROCESS_NAME,HOST_NAME,USER_NAME,DOMAIN_NAME, EVENT_TIME = DATEADD(SECOND, EVENT_TIME / 1000, '19700101 00:00'), RULE_NAMEfrom [Endpoint].[Endpoint].[V_AGENT_BEHAVIOR_LOG]where [rule_name] like '%Log documents from-to removable drives%'order by [EVENT_TIME];

Обращаю внимание на строку '%Log documents from-to removable drives%' - берем совпадения по названию правила. В БД оно несколько изменено на конце, поэтому построен запрос именно так.

Если правильно все сделали и журналы уже собраны в SEPM - в результате запроса увидите результат о доступе к файлам на устройстве.

Собрав данные в БД вы простым запросом за интересующий вас интервал по любым полям (пользователю\компу\домену\времени) можете сделать выборку.

Переходим к украшательствам.

Нужны автоматические письма? Делаем автоматический запуск SQL Agent (без него не работают джобы) и вешаем задание.

В задание вешаем скрипт:

DECLARE @xml NVARCHAR(MAX)DECLARE @body NVARCHAR(MAX)SET @xml = CAST(( select PARAMETER AS 'td',' ' FILE_NAME,VAPI_NAME AS 'td',' ',CALLER_PROCESS_NAME AS 'td',' ',HOST_NAME AS 'td',' ',USER_NAME AS 'td',' ',DOMAIN_NAME AS 'td',' ',DATEADD(SECOND, EVENT_TIME / 1000, '19700101 00:00') AS 'td',' 'from [Endpoint].[Endpoint].[V_AGENT_BEHAVIOR_LOG]where ([rule_name]like '%Log documents from-to removable drives%') and(DATEADD(SECOND, EVENT_TIME / 1000, '19700101 00:00') between DATEADD (HOUR, -24, getdate()) and GETDATE())order by [EVENT_TIME] FOR XML PATH ('tr'), ELEMENTS ) AS NVARCHAR(MAX))SET @body ='<html><H3><center><FONT COLOR="#7E2217">SEPM - Отчет за последние 24 часа по записи\чтению на съемные накопители USB</FONT></H3></center><body><table border = 1><tr><FONT COLOR="#736AFF"><th>Имя файла</th><th>Операция</th><th>Процесс</th><th>Имя ПК</th><th>Имя пользователя</th><th>Имя домена</th><th>Время (Мск)</th></tr>'SET @body = @body + '<style>' + 'td {font-size:8pt;} '+ '</style>'+ @xml +'</table></FONT></body></html>'EXEC msdb.dbo.sp_send_dbmail/*msdb.dbo.sp_send_dbmail*//*EXEC [msdb].[dbo].[sysmail_profile]*/@recipients=N'ваш_емйл@company.com',@body = @body,@body_format = 'HTML',@subject ='SEPM Application Control - USB Read\Write Attempts',@profile_name = 'Database Mail'

@profile_name = 'Database Mail' - здесь прописать то что получилось в результате запроса выше (EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Database Mail', @recipients = 'ваш_емайл@company.com', @subject = 'Test', @body = 'Message', @body_format = 'HTML';)

Скрипт автоматом будет получать время запуска и строить отчет за последние 24 часа за счет

(DATEADD(SECOND, EVENT_TIME / 1000, '19700101 00:00') between DATEADD (HOUR, -24, getdate()) and GETDATE())

Если нужен другой срок - думаю, вы в состоянии будете изменить параметры.

На свой указанный в скрипте емайл будете получать отчеты.

Если есть какие то добавления\желания - все можно сделать на основе этой реализации.

Удачи :)

Log_documents_from_to_removable_drives.rar

Log_documents_from_to_removable_drives.rar

  • Upvote 10

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Shell

Опять кнопки редактировать нет)

Добавлю одно замечание:

Если время желаете по МСК в отчетах - выставьте

(DATEADD(SECOND, EVENT_TIME / 1000, '19700101 04:00')

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создайте учетную запись или войдите, чтобы комментировать

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×