Аналіз журналу аудиту Caché c допомогою Caché (DeepSee)

поставку СКБД Caché, крім самого сервера бази даних, входить технологія для «real-time» бізнес-аналітики DeepSee. Її використання – це найбільш швидкий спосіб додати OLAP функціональність до вашого додатком на Caché.

Іншим елементом установки є підсистема аудиту з web-інтерфейсом, можливістю розширення власними типами подій і API для використання в прикладному програмному коді.

Під катом – невеликий приклад спільного використання цих підсистем, що дозволяє відповісти на питання — хто, що, коли робив в інформаційній системі?

Підсистема аудиту
Призначена для реєстрації відбуваються в системі подій. У системному порталі управління Caché є готовий web-інтерфейс — пошук, фільтрація, експорт, очищення і т. д. Використовувати аудит в прикладному коді можна за допомогою API — класи Security.Events — для реєстрації типів подій, %SYS.Audit — самих подій, %SYSTEM.Security:Audit() – зручний метод для реєстрації події. За замовчуванням підсистема аудиту неактивна, запускається через: Портал управління — Адміністрування системи — Безпека — Аудит.

Нижче, приклад сторінки з декількома кнопками, натискання на яких реєструються у базі аудиту.
Приклад використання аудиту в прикладному коді/// Приклад використання підсистеми аудиту в прикладному коді
Class habra.audit Extends %CSP.Page {

/// Реєстрація прикладних ( користувача ) типів подій 
ClassMethod EventTypesRegister() As %Status {
#; Типи подій реєструються через клас з системної %SYS
set ns = $namespace, $namespace = "%SYS".

#; set status = ##class(Security.Events).Create( Source, Type, Name, Description )
set statusC = ##class(Security.Events).Create( «habra», «audit», «create», «Create event example» ) 
set statusR = ##class(Security.Events).Create( «habra», «audit», «read», «Read event example» )
set statusU = ##class(Security.Events).Create( «habra», «audit», «update», «Update event example» )
set statusD = ##class(Security.Events).Create( «habra», «audit», delete, «Delete event example» )

set $namespace = ns
set status = ( statusC && statusR && statusU && statusD )

Quit status
}

/// Проста сторінка з декількома кнопками
ClassMethod OnPage() As %Status {
 
 &html<<!DOCTYPE html><html><head></head><body>

<h3>Hello, #($username)#!</h3><hr>

<form method='post'>
<button name='create'>Create</button>
<button name='read'  >Read </button>
<button name='update'>Update</button>
<button name='delete'>Delete</button>
</form>

</body></html>>

 Quit 1
}

/// Розбираємо параметри форми
ClassMethod OnPreHTTP() As %Boolean [ ServerOnly = 1 ] {

#; форма відправить на сервер єдиний параметр — ім'я кнопки
#; http://[server]/[app]/[class]?name=
set name = $order( %request.Data("".) ) ; дізнаємося яка кнопка викликала відправку

#; зберігаємо в журнал аудиту ( Source, Type, Name, EventData, Description )
set status = ##class(%SYSTEM.Security).Audit( «habra», «audit», name, «натиснув кнопку», «1984» )

Quit 1
}

}



Технологія бізнес-аналітики DeepSee
DeepSee включає в себе різноманітні засоби для побудови сховищ даних, аналізу та візуалізації даних, інтерфейс портал, звіти, друк, експорт і т. д. Використовує підсистеми безпеки та аудиту Caché. Є різні способи організувати інтеграцію DeepSee практично з будь-яким додатком – від терміналу до web.

Однією з особливостей DeepSee є можливість аналізу оперативних даних. Досягається за рахунок фонової синхронізації куба з даними вашого додатка. Для цього в класі даних визначають параметри DSTIME і DSINTERVAL. При компіляції класу Caché генерує додатковий код реєстрації змін. При запуску синхронізації оновлюється лише незначна частина даних куба, при цьому синхронізація може виконуватися безпосередньо відразу після змін в OLTP класах, що дозволяє говорити про «real-time» бізнес-аналізі.

Для використання фонового оновлення куба в нашому прикладі, необхідно додати параметри DSTIME і DSINTERVAL в системний клас %SYS.Audit і скомпілювати його.
Зміни у %SYS.Audit

Всі разом
Після попередньої настройки області ( необхідно включити відображення глобал ^CacheAuditD ) і відповідної настройки веб-додатки для роботи з DeepSee, приступаємо до визначення куба.

Зазначимо вихідний клас з даними. Властивості класу стануть основою для визначення вимірів куба. У класі %SYS.Audit властивості Username, Event, UTCTimeStamp зберігають інформацію для відповіді на поставлені на початку статті питання. На підставі властивості Username визначимо вимірювання Хто, властивості Event – вимір Що, властивості UTCTimeStamp – вимірювання Коли. В якості заходів за замовчуванням використовується кількість записів.

Після компіляції і початкового заповнення куба, в DeepSee Analyzer налаштовують різні зрізи даних (зведені таблиці). Вони, в свою чергу, стають джерелом даних для візуальних компонентів — віджетів. Віджети об'єднують в індикаторні панелі (dashboard) та надають до них доступ для користувачів. Користувальницький портал дозволяє програмування організувати роботу користувачів з індикаторними панелями.


На підставі аналізу журналу аудиту можна легко побачити, що один користувач більш схильний до видалення даних в системі, ніж інший. На реальній системі, з великою кількістю подій і користувачів, цю інформацію важко було б виявити простим переглядом журналу аудиту. Включивши в куб додаткові дані, можна отримати багато іншої «цікавою» інформації про роботу користувачів в системі. Головне вміти ставити правильні питання.


Корисні посилання:
ще про DeepSee
исходники приклад
відображення порталу DeepSee на мобільних пристроях

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.