Мониторинг комплекса средств защиты данных
СУБД ЛИНТЕР позволяет хранить одновременно информацию, принадлежащую различным пользователям, поддерживать сложную иерархическую структуру доступа к данным. Для контроля над доступом пользователей к данным и для ликвидации ошибок или противоречий в структуре защиты БД служит подсистема регистрации событий (аудит).
Данная подсистема является неотъемлемой частью КСЗ СУБД ЛИНТЕР.
СУБД ЛИНТЕР позволяет регистрировать следующие события:
-
включение механизмов идентификации и аутентификации;
-
запросы на доступ к ресурсам БД;
-
создание, модификацию и уничтожение объектов БД;
-
действия по изменению правил разграничения доступа (ПРД);
-
все попытки доступа к БД;
-
действия администратора БД.
Таблица регистрации событий $$$AUDIT
имеет 8 столбцов, представленных в таблице 3. Более подробно их содержание рассматривается ниже.
Примечание
Средства протоколирования СУБД ЛИНТЕР предоставляют администратору всего лишь возможность сбора информации об интересующих его событиях; для ее обработки и анализа должны разрабатываться специальные приложения.
Имя столбца | Тип данных | Содержание |
---|---|---|
EVENTTYPE | smallint | Источник события (пользователь, ядро СУБД, КСЗ ядра СУБД) |
EVENTID | smallint | Тип события (запрос на доступ, изменение ПРД и т.п.) |
USERNAME | char(66) | Имя пользователя, инициирующего событие |
SOURCEADR | char(24) | Сетевой адрес источника события |
OBJECTNAME | char(134) | Полное имя объекта, обращение к которому вызвало событие |
OBJECTTYPE | smallint | Тип объекта, к которому относится событие |
BODY | byte(58) | Дополнительная информация о событии |
USERTEXT | char(240) | Пользовательское сообщение |
Таблица $$$AUDIT
имеет следующие особенности:
-
она не создается автоматически при создании БД. Для ее создания администратору БД необходимо выполнить файл
security.sql
; -
запуск мониторинга КСЗ (аудита) осуществляется командой
AUDIT START
, при этом в нулевой записи системной таблицы$$$SYSRL
устанавливается флаг активности подсистемы аудита; -
останов аудита происходит по команде
AUDIT STOP
, при этом в нулевую запись системной таблицы$$$SYSRL
заносится информация об остановке протоколирования. При возобновлении протоколирования все события, установленные до остановки протоколирования, будут активированы; -
отметка в таблице регистрации может быть произведена пользователем с помощью команды
AUDIT MESSAGE <текст сообщения>.
Это бывает необходимо в случае, если пользователь хочет оставить администратору безопасности некое сообщение; -
специальной характеристикой таблицы
$$$AUDIT
является параметрRECORDS_LIMIT
– число записей в данной таблице, при превышении которого ядро СУБД ЛИНТЕР будет размещать новые записи на месте самых старых записей; -
для исключения потери накопленной информации должно быть разработано специальное приложение, контролирующее степень заполнения таблицы
$$$AUDIT
и автоматически выгружающее данные из нее при угрозе переполнения; -
изменять значение параметра
RECORDS_LIMIT
может только администратор БД; -
для доступа к таблице
$$$AUDIT
необходимо иметь соответствующие права доступа и категорию пользователя DBA; -
СУБД ЛИНТЕР не позволяет архивировать таблицу
$$$AUDIT
отдельно от всей БД (т.е. ее можно сохранить только в архивном файле всей БД); -
при работе с таблицей
$$$AUDIT
СУБД ЛИНТЕР использует только один режим работы транзакций –AutoCommit
.
Описание столбцов таблицы $$$AUDIT
:
-
EVENTTYPE – источник события, подлежащего регистрации (таблица 6). Источником регистрируемых событий могут быть ядро СУБД ЛИНТЕР (например, при создании нового объекта) и КСЗ (например, при регистрации обращения к недоступному объекту);
-
EVENTID – идентификатор типа события (таблицы 8, 9, 10, 11 и 12);
-
OBJECTTYPE – идентификатор объекта БД (таблица 7, породившее протоколируемое событие);
-
SOURCEADR – сетевой адрес станции клиента. Это значение несет реальную информацию только при не нулевом значении типа источника (при сетевой работе);
-
USERNAME – имя схемы (пользователя). Это наименование схемы (пользователя), от имени которого инициировано событие (например, имя пользователя, который обратился к недоступному ему объекту БД);
-
OBJECTNAME – полное имя объекта БД. Это имя объекта, при обращении к которому возникло регистрируемое событие;
-
BODY – дополнительная информация о событии (таблица 4);
-
USERTEXT – пользовательское сообщение о протоколируемом событии.
Поле структуры |
Тип данных SQL |
Комментарий |
---|---|---|
EventTime |
date |
Дата и время события |
Reserved |
byte[16] |
Зарезервировано |
SourceType |
smallint |
Тип события |
SourcePid |
int |
Идентификатор процесса-сервера |
SourceRPid |
int |
Идентификатор процесса-клиента |
SourceSocket |
int |
Сетевой порт (сокет) процесса-клиента |
EventStatus |
int |
Состояние выполнения СУБД ЛИНТЕР |
SourceStatus |
int |
Зарезервировано |
SourceSystemStatus |
int |
Состояние операционной системы |
Для удобства анализа информации о протоколируемых событиях при выполнении файла security.sql
создается представление AUDIT_EVENTS
(таблица 5).
Столбец |
Тип данных SQL |
Комментарий |
---|---|---|
Event_time |
date |
Дата и время события |
Username |
char(66) |
Имя пользователя |
Event_type |
char(19) |
Тип события |
Eventid |
char(19) |
Имя события |
Networkaddress |
char(24) |
Сетевой адрес клиента |
Objectname |
char(134) |
Имя объекта БД |
Sourcepid |
int |
Идентификатор процесса-сервера |
Sourcerealpid |
int |
Идентификатор процесса-клиента |
Socket |
int |
Сетевой порт (сокет) процесса-клиента |
Status |
int |
Состояние выполнения СУБД ЛИНТЕР |
Osstatus |
int |
Состояние выполнения ОС |
Usertext |
char(240) |
Пользовательское сообщение |
Идентификатор источника |
Источник события |
Комментарий |
---|---|---|
1 |
SYSTEM EVENT |
Системные события |
2 |
RESOURCE EVENT |
События, связанные с изменением структуры БД |
3 |
AUTHORIZATION EVENT |
События, связанные с подсистемой авторизации |
4 |
TABLE EVENT |
События, связанные с конкретными таблицами |
5 |
CHANNEL EVENT |
Канальные события |
Код |
Мнемоника |
Комментарий |
---|---|---|
0 |
LOBJ_NONE |
Неопределенный объект |
1 |
LOBJ_USER |
Пользователь или схема БД |
2 |
LOBJ_ROLE |
Роль |
3 |
LOBJ_LEVEL |
Уровень доступа |
4 |
LOBJ_GROUP |
Группа пользователей БД |
5 |
LOBJ_STATION |
Рабочая станция |
6 |
LOBJ_NODE |
Узел локальной сети |
7 |
LOBJ_DEVICE |
Устройство хранения файлов БД |
8 |
LOBJ_TABLE |
Таблица БД |
9 |
LOBJ_VIEW |
Представление БД |
10 |
LOBJ_SYNONYM |
Синоним объекта |
11 |
LOBJ_EVENT |
Событие БД |
12 |
LOBJ_PROCEDURE |
Хранимая процедура БД |
13 |
LOBJ_TRIGER |
Триггер БД |
14 |
LOBJ_CURSOR |
Курсор (выборка записей) |
15 |
LOBJ_TABLE_ID |
Идентификатор таблицы, к которой у пользователя нет доступа |
16 |
LOBJ_SEQ |
Последовательность |
17 |
LOBJ_CSET |
Кодовая страница |
18 |
LOBJ_TRANSL |
Правило трансляции кодовых страниц |
19 |
LOBJ_CSAL |
Алиас |
20 |
LOBJ_PROC_ID |
Идентификатор хранимой процедуры, при обработке которой возникла внутренняя ошибка ядра СУБД ЛИНТЕР |
21 |
LOBJ_TRIG_STRUCT |
Идентификатор сработавшего триггера (при любом окончании) |
22 |
LOBJ_COLUMN |
Столбец таблицы |
23 |
LOBJ_PARAMETER |
Параметр параметрического запроса |
24 |
LOBJ_GLVAR |
Глобальная переменная процедурного языка |