logo
Книга по БД(Вальке А

7.4.2. Конфигурирование списков протоколируемых событий

Что такое “маска”

Маска определяет список действий, информация о которых будет фиксироваться. Существуют глобальные маски, применимые ко всем пользователям, и индивидуальные маски, применимые к конкретному пользователю. Каждая маска имеет имя. Имеются следующие три глобальные маски:

Для каждого конкретного пользователя может быть создана индивидуальная маска. В этом случае, имя индивидуальной маски для пользователя совпадает с системным именем пользователя. Например, для пользователя andy индивидуальная маска тоже будет называться “andy”. Естественно, названия индивидуальных масок не должны совпадать с именами глобальных масок (_default, _require, _exclude).

Алгоритм применения масок следующий. Как только некоторый пользователь исполняет какое-либо действие, встроенный в сервер баз данных механизм аудитинга проверяет надо ли протоколировать это действие. Если у пользователя есть индивидуальная маска, то она просматривается. Если индивидуальной маски нет, то просматривается маска _default. Затем просматривается глобальная обязательная маска _require. Если ни одна из этих масок не содержит описание выполняемого действия, то данное действие не протоколируется. Если же выполняемое действие в одной из этих масок указано, то оно будет запротоколировано, но только если данное действие не указано в маске _exclude.

Другими словами, для пользователя никогда не будут протоколироваться действия, указанные в глобальной маске _exclude. Если же действие не указано в маске _exclude, но указано в ндивидуальной маске (или в маске _default, если индивидуальной маски нет) или в глобальной маске _require, то оно будет запротоколировано.

Итак, маска - это набор действий. Следовательно, нужно уметь различать, идентифицировать возможные действия. Каждое событие, каждое действие в системе аудитинга имеет свой 4-х символьный код. Полный список кодов приведен в системной документации. Здесь, в качестве примера, дадим список некоторых действий, наиболее интересных с точки зрение отслеживания действий пользователей по доступу к информации:

ACTB - доступ к таблице;

LSDB - получение списка баз данных;

OPDB - открытие базы данных;

RDRW - чтение одной записи.

Просмотр, создание, модификация и удаление масок

Только пользователи из группы DBSSO могут просматривать, создавать, удалять и модифицировать маски. Для выполнения данных действий служит утилита onaudit. Для того, чтобы вывести на экран информацию о всех существующих масках, необходимо выполнить команду

onaudit -o

Если выполнить эту команду сразу после инсталляции сервера Informix Dynamic Server, то вы не увидите ни одной существующей маски (в том числе и глобальные маски). Далее, требуемые маски надо создать. Предположим, мы хотим для всех пользователей в обязательном порядке протоколировать открытие базы данных. Для этого надо в глобальную маску _require добавить событие OPDB (“открытие базы данных”)

onaudit -a -u _require -e OPDB

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

onaudit -a -u <имя маски> -e <код события>, <код события>, ……

С помощью утилиты onaudit можно проводить и модификацию существующей маски - добавлять или удалять события маски. Для этого используется опция “-m”. Добавляемые в маску события надо указать после опции “-e”, а удаляемые из маски события указываются после опции “-e” и знака минус:

onaudit -m -u <имя маски> -e - <код удаляемого события>, ……

onaudit -m -u <имя маски> -e <код добавляемого события>, ……

Опция “-d” утилиты onaudit задает команду удаления маски:

onaudit -d -u <имя маски>

Например, следующий набор команд создает индивидуальную маску для пользователя micky, содержащую фиксацию всех операций чтения данных, из глобальной маски _default удаляет фиксацию события RDRW (чтение какого-либо ряда из таблицы), и целиком удаляет индивидуальную маску для пользователя andy:

onaudit -a -u micky -e OPDB, ACTB, LSDB, RDRW onaudit -m -u _default -e - RDRW onaudit -d -u andy

Задание дополнительных условий на событие

Система аудитинга, реализованная в Informix Dynamic Server, позволяет дополнительно специфицировать протоколируемые действия. А именно, можно указать, что надо не всегда протоколировать некоторое действие, а только в том случае, если данное действие было успешно выполнено. Или наоборот, мы можем задать протоколирование только неудачной попытки выполнить некоторое действие. Для этого в командах создание (onaudit -a) или модификации (onaudit -m) списка событий для маски перед кодом действия надо указать символ “F” (для протоколирования неуспешных попыток) или символ “S” (для протоколирования успешных событий). Например:

onaudit -m -u micky -e FOPDB, SACTB