OpenEdge Auditing – забытая история
Влияние на производительность
Механизм OpenEdge Auditing выполняет чрезвычайно ресурсоемкий процесс, так как новая запись будет создаваться в таблице _aud-data каждый раз, когда будет происходить какое-либо событие. К тому же, в таблицу _aud-data-value всегда пишутся новые записи, когда происходит изменение контролируемых полей таблиц.
Для снижения I/O нагрузки на файловую систему, или хотя бы для снижения влияния такой нагрузки на базу данных, необходимо поместить области хранения данных аудита на отдельном диске.
Помимо этого, нужно более серьезно и внимательно подходить к разработке полисов аудита, чтобы не получилось так, что система будет выполнять запись данных, которые вам никогда не понадобятся, и которые просто не будут представлять интерес.
Для того чтобы снизить влияние на производительность создания записей данных аудита, вы можете деактивировать все индексы в таблицах аудита, за исключением первичных индексов. Это позволит значительно сэкономить время, затрачиваемое на создание записи. Индексы вы можете активировать на архивной базе данных, на которой вы будет формировать свои отчеты. Отсюда, всегда формируйте отчетность по данным аудита только на архивной базе данных.
Так же, вы можете настроить полисы аудита так, чтобы они сохраняли только новые значения, только старые значения, и старые и новые значения, или чтобы не сохраняли вообще ни каких значений. Подобная настройка позволит не только выиграть в производительности, но и сэкономить место на дисках.
Влияние на утилиты OpenEdge
Для того чтобы гарантировать целостность данных аудита, необходимо, чтобы доступ к ним и к полисам имели только авторизованные пользователи. В связи с этим, при включении механизма OpenEdge Auditing ограничивается свободный доступ к определенным утилитам OpenEdge. Это дополнение обеспечивает три первичных аспекта безопасности: аутентификация, авторизация и аудит. Такой уровень безопасности требуется утилитам, которые в силу своих особенностей могут изменить что-либо в базе данных. Доступ к таким утилитам будет разрешен только тем пользователям, которые имеют привилегии Audit Administrator или Audit Data Archiver. Существует два способа идентификации таких пользователей, это по таблице _user и по логину операционной системы (User ID).В зависимости от способа идентификации, методы идентификации пользователя отличаются.
Идентификация пользователя по таблице _user
Если в базе данных в таблице _user имеется хотя бы одна запись, то для аутентификации привилегий пользователя необходимо в утилитах использовать параметр –userid. При этом, пользователю обязательно должна быть выдана соответствующая привилегия аудита. Для указания пароля пользователя используется дополнительный параметр –password, если же он не будет указан, то утилита автоматический запросит его у вас. Пароль пользователя может указываться как в чистом, так и в зашифрованном виде.
Мы уже сталкивались с таким ограничением доступа, когда выполняли деактивацию OpenEdge Auditing. Тогда мы выполняли эту команду следующим образом:
proutil db-name -C disableauditing -userid audadm -password 123
Пользователь audadm у нас имеет привилегию Audit Administrator, поэтому утилита позволила ему выключить OpenEdge Auditing. Здесь его пароль мы указывали в открытом виде. Если бы мы не указали параметр –password, то утилита запросила бы его у нас, как показано ниже:
proutil sports -C disableauditing -userid audadm OpenEdge Release 10.2A01 as of Fri Mar 6 21:03:26 EST 2009 password:
Для того чтобы воспользоваться зашифрованным паролем, нам нужно его предварительно зашифровать командой, как показано ниже:
genpassword -password 123 OpenEdge Release 10.2B07 as of Fri Sep 7 02:14:50 EDT 2012 61607c
Зашифрованный пароль здесь выделен жирным шрифтом. Чтобы в дальнейшем им воспользоваться следующим образом:
proutil sports -C disableauditing -userid audadm -password oech1::61607c
Формат строки пароля используется следующий: oech1::password. Он состоит из пяти символьных префиксов, которые отделены от зашифрованного пароля разделителем. Описание каждого элемента этого формата приведено в следующей таблице:
Компонент пароля | Описание |
oec | Сокращение, идентифицирующее алгоритм шифрования OpenEdge |
h1 | Шестнадцатерично-двоичное закодированное значение, идентифицирующее размер ключа алгоритма кодирования как 1 |
:: | Разделитель |
Password | Зашифрованный пароль. Кодирование выполняется с алгоритмом, указанным в префиксе |
Идентификация пользователя по логину операционной системы
Если таблицы _user в базе данных не заполнена, то пользователь будет идентифицироваться утилитами по логину операционной системы. При этом, в самой базе данных, такой пользователь должен иметь, по крайней мере, привилегию Audit Administrator. При такой схеме, пользователю не нужно будет указывать параметры –userid и –password, если он работает в своей собственной сессии. Если же пользователь хотел бы выполнить операцию, находясь в сессии другого пользователя, то он должен указать в параметре –userid свой логин, а в параметре –password, указать MAC ключ базы данных, который может так же быть, как зашифрован, так и в чистом виде.
Приведем пример. Допустим, пользователь valeriy имеет в базе данных привилегию Audit Administrator. Таблица _user в базе данных пуста, поэтому идентификация пользователя будет осуществляться по логину операционной системы. Пользователь входит в операционную систему под своим логином, и выполняет следующую команду:
[valeriy] proutil sports -C disableauditing
Поскольку у пользователя есть все необходимые привилегии в базе данных, то эта операция будет выполнена. Теперь откроем сессию под пользователем root, и попробуем выполнить эту же команду:
[root]#proutil sports -C disableauditing OpenEdge Release 10.2B07 as of Fri Sep 7 02:14:50 EDT 2012 The user is not authorized to perform disableauditing operations
Операция была отвергнута. Если же к команде добавить параметры –userid, указав логин valeriy и MAC ключ базы данных в качестве запрошенного пароля, то деактивация OpenEdge Auditing будет выполнена успешно:
[root]# proutil sports -C disableauditing -userid valeriy OpenEdge Release 10.2B07 as of Fri Sep 7 02:14:50 EDT 2012 password: Auditing was not fully disabled because auditing data tables are not empty. (13647) Auditing has been deactivated, no additional auditing records will be recorded. (13649)
Если необходимо, то шифрование MAC ключа выполняется так же, как было описано в предыдущем разделе, с помощью команды genpassword.
Дополнительная защита OpenEdge Auditing
Механизм OpenEdge Auditing обеспечивает дополнительную защиту своих данных от действий некоторых классификаторов утилиты PROUTIL, на уровне таблиц аудита и областей, в которых эти таблицы хранятся. Существует два типа таблиц аудита, это таблицы данных аудита, и таблицы полисов аудита, ко всем им доступ ограничен. Защищенными областями считаются, области с таблицами и индексами аудита. Список защищенных таблиц аудита приведен ниже:
Имя таблицы | Тип таблицы |
_aud-audit-data | Данные |
_aud-audit-data-value | Данные |
_client-session | Данные |
_aud-event | Полисы |
_aud-event-policy | Полисы |
_aud-audit-policy | Полисы |
_aud-file-policy | Полисы |
_aud-field-policy | Полисы |
Как уже говорилось ранее, у утилиты PROUTIL в связи с включением OpenEdge Auditing появляются дополнительные два параметра, это –userid и –password. Классификаторы утилиты PROUTIL, на поведение которых влияет OpenEdge Auditing, приведены в следующей таблице, в которой так же описывается, как именно это влияние выражается:
Операция | КлассификаторPROUTIL | Закрепленныйзащищенныйобъект | Необходимые привилегии | Ограничения |
Bulk load | Bulkload | Таблицы | – | Доступ запрещен всем пользователям |
Binary load | load | Таблицы | – | Доступ запрещен всем пользователям |
Binary dump | dump dumpspecified | Таблицы | – | Доступ запрещен всем пользователям |
Index fix(delete record) | idxfix | Таблицы | Audit Archiver | Доступ запрещен всем, кроме имеющих привилегию |
Truncate area | truncate area | Области | Audit Archiver | Доступ запрещен всем, кроме имеющих привилегию |
Archive audit data | auditarchive | Таблицы | Audit Archiver | Доступ запрещен всем, кроме имеющих привилегию |
Load audit data | auditload | Таблицы | Audit Archiver | Доступ запрещен всем, кроме имеющих привилегию |
Disable auditing | disableauditing | – | Audit Administrator | Доступ запрещен всем, кроме имеющих привилегию |
Я рад что у вас хватило терпения дочитать всё это до конца. В следующей части, надеюсь, что уже скоро, механизм OpenEdge Auditing будет описан с точки зрения разработчика (программиста), а именно как создаются специфические политики аудита для слежения за конкретными объектами базы, и как программировать собственные отчеты по аудиту. Оставайтесь с нами и следите за новостями…
Валерий Башкатов
Метка:OpenEdge