Мониторинг комплекса средств защиты данных

СУБД ЛИНТЕР позволяет хранить одновременно информацию, принадлежащую различным пользователям, поддерживать сложную иерархическую структуру доступа к данным. Для контроля над доступом пользователей к данным и для ликвидации ошибок или противоречий в структуре защиты БД служит подсистема регистрации событий (аудит).

Данная подсистема является неотъемлемой частью КСЗ СУБД ЛИНТЕР.

СУБД ЛИНТЕР позволяет регистрировать следующие события:

  • включение механизмов идентификации и аутентификации;

  • запросы на доступ к ресурсам БД;

  • создание, модификацию и уничтожение объектов БД;

  • действия по изменению правил разграничения доступа (ПРД);

  • все попытки доступа к БД;

  • действия администратора БД.

Таблица регистрации событий $$$AUDIT имеет 8 столбцов, представленных в таблице 3. Более подробно их содержание рассматривается ниже.

Примечание

Средства протоколирования СУБД ЛИНТЕР предоставляют администратору всего лишь возможность сбора информации об интересующих его событиях; для ее обработки и анализа должны разрабатываться специальные приложения.

Таблица 3. Структура таблицы регистрации $$$AUDIT

Имя столбца

Тип данных

Содержание

EVENTTYPE

smallint

Источник события (пользователь, ядро СУБД, КСЗ ядра СУБД)

EVENTID

smallint

Тип события (запрос на доступ, изменение ПРД и т.п.)

USERNAME

char(66)

Имя пользователя, инициирующего событие

SOURCEADR

char(24)

Сетевой адрес источника события

OBJECTNAME

char(134)

Полное имя объекта, обращение к которому вызвало событие

OBJECTTYPE

smallint

Тип объекта, к которому относится событие

BODY

byte(58)

Дополнительная информация о событии

USERTEXT

char(240)

Пользовательское сообщение


Таблица $$$AUDIT имеет следующие особенности:

  1. она не создается автоматически при создании БД. Для ее создания администратору БД необходимо выполнить файл security.sql;

  2. запуск мониторинга КСЗ (аудита) осуществляется командой AUDIT START, при этом в нулевой записи системной таблицы $$$SYSRL устанавливается флаг активности подсистемы аудита;

  3. останов аудита происходит по команде AUDIT STOP, при этом в нулевую запись системной таблицы $$$SYSRL заносится информация об остановке протоколирования. При возобновлении протоколирования все события, установленные до остановки протоколирования, будут активированы;

  4. отметка в таблице регистрации может быть произведена пользователем с помощью команды AUDIT MESSAGE <текст сообщения>. Это бывает необходимо в случае, если пользователь хочет оставить администратору безопасности некое сообщение;

  5. специальной характеристикой таблицы $$$AUDIT является параметр RECORDS_LIMIT – число записей в данной таблице, при превышении которого ядро СУБД ЛИНТЕР будет размещать новые записи на месте самых старых записей;

  6. для исключения потери накопленной информации должно быть разработано специальное приложение, контролирующее степень заполнения таблицы $$$AUDIT и автоматически выгружающее данные из нее при угрозе переполнения;

  7. изменять значение параметра RECORDS_LIMIT может только администратор БД;

  8. для доступа к таблице $$$AUDIT необходимо иметь соответствующие права доступа и категорию пользователя DBA;

  9. СУБД ЛИНТЕР не позволяет архивировать таблицу $$$AUDIT отдельно от всей БД (т.е. ее можно сохранить только в архивном файле всей БД);

  10. при работе с таблицей $$$AUDIT СУБД ЛИНТЕР использует только один режим работы транзакций – AutoCommit.

Описание столбцов таблицы $$$AUDIT:

  1. EVENTTYPE – источник события, подлежащего регистрации (таблица 6). Источником регистрируемых событий могут быть ядро СУБД ЛИНТЕР (например, при создании нового объекта) и КСЗ (например, при регистрации обращения к недоступному объекту);

  2. EVENTID – идентификатор типа события (таблицы 8, 9, 10, 11 и 12);

  3. OBJECTTYPE – идентификатор объекта БД (таблица 7, породившее протоколируемое событие);

  4. SOURCEADR – сетевой адрес станции клиента. Это значение несет реальную информацию только при не нулевом значении типа источника (при сетевой работе);

  5. USERNAME – имя схемы (пользователя). Это наименование схемы (пользователя), от имени которого инициировано событие (например, имя пользователя, который обратился к недоступному ему объекту БД);

  6. OBJECTNAME – полное имя объекта БД. Это имя объекта, при обращении к которому возникло регистрируемое событие;

  7. BODY – дополнительная информация о событии (таблица 4);

  8. USERTEXT – пользовательское сообщение о протоколируемом событии.

Таблица 4. Структура поля BODY таблицы $$$AUDIT

Поле структуры

Тип данных 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).

Таблица 5. Структура представления AUDIT_EVENTS

Столбец

Тип данных 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)

Пользовательское сообщение


Таблица 6. Идентификаторы источников событий

Идентификатор источника

   Источник события   

Комментарий

1

SYSTEM EVENT

Системные события

2

RESOURCE EVENT

События, связанные с изменением структуры БД

3

AUTHORIZATION EVENT

События, связанные с подсистемой авторизации

4

TABLE EVENT

События, связанные с конкретными таблицами

5

CHANNEL EVENT

Канальные события


Таблица 7. Коды объектов БД

Код

Мнемоника

Комментарий

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

Глобальная переменная процедурного языка