Лабораторный практикум по НСД 2013
.pdf351
BEGIN
NULL
END;
/
CREATE OR REPLACE TRIGGER tr2 BEFORE insert OR update ON item FOR EACH ROW
BEGIN
NULL;
END;
/
Alter system set nls_language=’RUSSIAN’; Alter system set nls_language= RUSSIAN;
Connect sys/sys@orcl as sysdba
SELECT userid,name name_for_audit,obj$name FROM aud$,audit_actions WHERE aud$.action#=audit_actions.action
ORDER BY userid;
USERID |
NAME_FOR_AUDIT |
OBJ$NAME |
------------------------------ |
---------------------------- |
-------- |
CH_CERT |
CREATE ROLE |
R1 |
CH_CERT |
ALTER SYSTEM |
|
CH_CERT |
ALTER SYSTEM |
|
CH_CERT |
CREATE PROCEDURE |
PR1 |
CH_CERT |
CREATE TRIGGER |
TR2 |
CH_CERT |
CREATE TRIGGER |
TR1 |
CH_CERT |
CREATE USER |
USER1 |
CH_CERT |
CREATE TRIGGER |
TR2 |
SCOTT |
CREATE USER |
USER2 |
SCOTT |
CREATE ROLE |
R2 |
SCOTT |
ALTER SYSTEM |
|
SCOTT |
CREATE TRIGGER |
TR2 |
SCOTT |
CREATE TRIGGER |
TR2 |
SCOTT |
CREATE TRIGGER |
TR1 |
SCOTT |
ALTER SYSTEM |
|
SCOTT |
CREATE PROCEDURE |
PR1 |
Выше мы установили параметр «audit_sys_operations» в значение «TRUE». После этого мы не раз делали пользователем «SYS» запросы к словарю. Полезно при выполнении лабораторных работ использовать консоль «Oracle Enterprise Manager Console» пользоватетем «sys», так как в этой консоли удобно просматривать содержимое таблиц и представлений аудита без того, чтобы набирать соответствующие команды в окне SQL*Plus. Все действия ползователя «sys», в том числе и в консоли «Oracle Enterprise Manager Console», можно увидеть в окне просмотра событий ОС.
352
На рис.17.2. приведен снимок окна программы «Просмотр событий» со строками событий.
Рис. 17.2. Окно просмотра событий
На рис.17.3 представлен снимок окна, соответствующего одной из строк в окне просмотра событий на рис.17.2 запросу, который выполнял пользователь «sys». В окне представлен текст запроса, представлены дата и время запроса, указано с какого компьютера запрос выполнялся.
Рис. 17.3. Окно просмотра конкретного события (появляется при двойном клике мышки на строке в окне программы просмотра событий.
353
При включении аудита с опцией «OS»:
ALTER SYSTEM SET audit_trail= OS SCOPE=SPFILE;
Информация аудита будет писаться в журнал событий операционной системы вместо журнала базы данных (таблица «aud$»). Например, если пользователь
«ch_cert» выполнит команду «alter user user1 identified by user1;» в программе
«Просмотр событий» появится новая строка, которой соответствует окно на рис.17.4.
Рис. 17.4. Регистрация события в журнале событий ОС
Наконец, при использовании «XML» опции параметра аудита «audit_trail»: На рис.17.4 указан код «34» действия пользователя «ch_cert». Этому коду в
таблице «audit_actions» словаря соответствует значение «alter user».
ALTER SYSTEM SET audit_trail= XML SCOPE=SPFILE;
События аудита будут писаться в xml файлы в папке, указанной параметром «audit_file_dest». По умолчанию он имеет значение
«ORACLE_BASE/admin/orcl/adump» для базы данных «orcl». Есть один ньюанс при таком способе аудита. При входе в ОС пользователем ОС на кириллице xml файлы аудита не читаются. Просмотр xml файлов аудита браузером или редактором xml текстов мало эффективен, так как в файлах много дополнительных символов и строк. Представление Oracle «v_$xml_audit_trail» позволяет просматри-
354
вать информацию аудита запросами, подобными тем, которыми мы извлекали информацию из таблицы «aud$».
Сдача лабораторной работы
Сдача лабораторной работы заключается в демонстрации преподавателю всех рассмотренных в настоящей лабораторной работе технологий аудита на заданных преподавателем трех разных предметных областях. Задание для подготовки к сдаче включает:
А) Владельцы предметных областей 1 (ПО1), 2 (ПО2) манипулируют данными с отдельной (любой по выбору студента) таблицей предметной области 3 (ПО3). Эти действия надо зарегистрировать с помощью триггера событий и специально создаваемой таблицы аудита.
Б) Пользователь «sys» выполняет настройки аудита встроенными средствами СУБД Oracle для регистрации действий любого другого пользователя по изменению системы, по созданию пользователей, процедур, триггеров, ролей, а также настройки аудита – для регистрации текстов создаваемых процедур, тиггеров, выполняемых отдельными пользователями команд.
В) Пользователь «sys» выполняет настройки аудита встроенными средствами СУБД Oracle для регистрации действий пользователя с привилегией «sysdba».
Тестовые задания к лабораторной работе № 15
Входной контроль
1.Укажите строки, относящиеся к аудиту стойкости паролей и парольной политики.
a)Выявление паролей по умолчанию;
b)Выявление простых паролей;
c)Определение парольных компонентов профилей пользователя;
d)Поиск паролей в таблицах словаря СУБД;
e)Правильных ответов нет.
2.Аудит базы данных проводится с использованием (укажите верные строки).
a)Утилиты Net Configuration Assistant;
b)Вручную исполняемыми командами администратора безопасности;
c)Специально созданными скриптами администратора безопасности;
d)Сканеров безопасности баз данных;
e)Правильных ответов нет.
3.Укажите строки, определяющие, что должно явиться результатом аудита?
355
a)Описание выявленных уязвимостей;
b)Обнаруженные недостатки конфигурации СУБД и прав доступа;
c)Перечень всех не привилегированных пользователей;
d)Рекомендации по повышению защищенности;
e)Правильных ответов нет.
4.Укажите, какая основная проблема возникает перед администраторами баз данных при использовании обычного аудита средствами Oracle?
a)Резкое снижение производительности в работе с пользователями базы данных;
b)Затруднение доступа пользователей к базе данных;
c)Учащение сбоев в работе СУБД;
d)Заметное увеличение затрат памяти на хранение данных аудита;
e)Правильных ответов нет.
5.Укажите, какие пользователи/учетные записи требуют специального аудита, отличного от обычного системного аудита Oracle?
a)Пользователи с ролью DBA;
b)Пользователи с привилегией sysdba;
c)Пользователи, обладающие ролями числом от двух до пяти;
d)Пользователи, имеющие ОС аутентификацию;
e)Правильных ответов нет.
6.Какое средство позволяет просмотреть зарегистрированные аудитом после соответствующей настройки СУБД действия пользователя с приви-
легией sysdba?
a)Enterprise Edition console;
b)Policy manager;
c)Database Configuration Assistant;
d)Утилитой «Просмотр событий» консоли управления компьютером;
e)Правильных ответов нет.
7.Укажите, с помощью каких объектов схемы пользователя создаются средства аудита разработчика?
a)Триггер;
b)Последовательность;
c)Дополнительная таблица аудита;
d)Представление;
e)Правильных ответов нет.
Выходной контроль
1.Укажите верную команду аудита любых (в том числе и повторяющихся) действий с журналом аудита.
a)AUDIT INSERT on sys.aud$;
b)AUDIT ALL on sys.aud$ by access;
c)AUDIT ALL on sys.aud$ by SESSION;
d)AUDIT ALL on sys.aud$;
e)AUDIT INSERT, UPDATE, DELETE, SELECT on sys.aud$;
356
f)Правильных ответов нет.
2.В чем отличие системного аудита средствами Oracle действий пользователя БД от аудита действий того же пользователя с использованием процедур и триггеров разработчика приложений?
a)Системный аудит не отлавливает команды SELECT;
b)Спрограммированный аудит разработчика приложений не отлавливает действий пользователя по соединению с БД;
c)Системный аудит не отлавливает команды UPDATE;
d)Системный аудит БД конфликтует с аудитом средствами ОС;
e)Системный аудит не отлавливает повторяющихся действий пользователя с таблицей (DML) в одной сессии с Oracle;
f)Правильных ответов нет.
3.Какими командами обеспечивается возможность регистрации событий аудита в журнале событий консоли управления компьютером?
a)ALTER SYSTEM SET audit_trail= OS SCOPE=SPFILE;
b)ALTER SESSION SET audit_trail= OS SCOPE=SPFILE;
c)shutdown immediate;
d)ALTER SESSION SET audit_trail= OS;
e)startup;
f)Правильных ответов нет.
4.Если события аудита пишутся в XML файлы, читать их удобно с помощью…
a)Редактора «Блокнот»;
b)Редактора «Текстовый редактор WordPad»;
c)Запросов к представлению словаря «v_$xml$»;
d)Интернет браузера;
e)Запросов к представлению словаря «v_$xml_audit_trail»;
f)Правильных ответов нет.
5.Для обеспечения аудита действий пользователя «sys» с объектами базы данных требуется выполнения, в частности, таких действий:
a)Запросов к таблице aud$;
b)Запросов к представлению dba_audit_trail;
c)Выполнения команд
ALTER SYSTEM SET audit_sys_operations=true SCOPE=SPFILE; Shutdown immediate
Startup
d)Запросов к таблице «onlyforsys»;
e)Выполнения команд
ALTER SESSION SET audit_sys_operations=true SCOPE=SPFILE; Shutdown immediate
Startup
f) Правильных ответов нет.
357
6.В какой столбец таблицы «aud$» записывается информация о кодах выполняемых пользователями команд при аудите с опцией «BY ACCESS»?
a)statement;
b)ses$actions;
c)action#;
d)comment$text;
e)sqlbind;
f)Правильных ответов нет.
7.Какие команды позволяют обеспечить возможность аудита действий пользователя с регистрацией выполняемых им SQL, PL/SQL кодов?
a)ALTER SYSTEM SET audit_trail= extendeddb SCOPE=SPFILE; shutdown immediate
startup
b)ALTER SYSTEM SET audit_trail= db,extended SCOPE=SPFILE;
shutdown immediate startup
c)ALTER SYSTEM SET audit_trail= extended SCOPE=SPFILE; shutdown immediate
startup
d)ALTER SYSTEM SET audit_trail= true,fulldb SCOPE=SPFILE; shutdown immediate
startup
e)ALTER SYSTEM SET audit_trail=fulldb SCOPE=SPFILE; shutdown immediate
startup
f)Правильных ответов нет.
358
4.7.2. ЛАБОРАТОРНАЯ РАБОТА № 16: КОНТРОЛЬ ДЕТАЛЬНОГО АУДИТА ДЕЙСТВИЙ ПОЛЬЗОВАТЕЛЕЙ В СУБД ORACLE
Сценарий проведения работы
1.Выбор предметной области и пользователей для проверки FGAudit. Определение политики (правила) аудита без обработки событий для выбранной предметной области. Проверка выполнения детального аудита в соответствии с определенной политикой.
2.Проверка выполнения запросов, включающих переменные привязки, ретроспективных запросов, с использованием FGAudit.
3.Определение политики (правила) аудита с обработкой событий для выбранной предметной области. Проверка выполнения детального аудита с обработкой событий в соответствии с определенной политикой.
Реализация сценария лабораторной работы
В качестве предметной области будем использовать предметную область пользователя «scott» (присутствует в поставке Oracle, т.е. скрипты для нее не требуются), так как в ней есть таблица «emp», в которой представлены личные сведения о сотрудниках фирмы. Защита личных сведений – понятная цель для задействования и демонстрации возможностей детального аудита. Лабораторная работа выполняется копированием и выполнением нижеприводимых команд в окно SQL*Plus. Посмотрим содержимое таблицы «emp»:
conn scott/scott@orcl SELECT * FROM emp;
EMPNO ENAME |
JOB |
MGR |
HIREDATE |
SAL |
COMM |
DEPTNO |
|
----- |
---------- |
--------- |
---------- -------- |
---------- ---------- ---------- |
|||
7839 |
KING |
PRESIDENT |
|
17.11.81 |
5000 |
|
10 |
7698 |
BLAKE |
MANAGER |
7839 |
01.05.81 |
2850 |
|
30 |
7782 |
CLARK |
MANAGER |
7839 |
09.06.81 |
2450 |
|
10 |
7566 |
JONES |
MANAGER |
7839 |
02.04.81 |
2975 |
|
20 |
7902 |
FORD |
ANALYST |
7566 |
03.12.81 |
3000 |
|
20 |
7788 |
SCOTT |
ANALYST |
7566 |
19.04.87 |
3000 |
|
20 |
7369 |
SMITH |
CLERK |
7902 |
17.12.80 |
800 |
|
20 |
7499 |
ALLEN |
SALESMAN 7698 |
20.02.81 |
1600 |
300 |
30 |
|
7521 |
WARD |
SALESMAN 7698 |
22.02.81 |
1250 |
500 |
30 |
|
7654 |
MARTIN |
SALESMAN 7698 |
28.09.81 |
1250 |
1400 |
30 |
|
7844 |
TURNER |
SALESMAN 7698 |
08.09.81 |
1500 |
0 |
30 |
|
7876 |
ADAMS |
CLERK |
7788 |
23.05.87 |
1100 |
|
20 |
7900 |
JAMES |
CLERK |
7698 |
03.12.81 |
950 |
|
30 |
7934 |
MILLER |
CLERK |
7782 |
23.01.82 |
1300 |
|
10 |
359
Мы могли бы установить аудит на все действия с этой таблицей (с сохранением текста DML предложений) обычными средствами аудита, но при этом в таблице или в файле аудита будет накапливаться много лишней информации. Можно было бы, как мы делали это в предыдущей лабораторной работе, создать триггер регистрации действий с таблицей «emp» в специальной таблице аудита. Но триггер не работает на «SELECT».
Для создания политики аудита создадим пользователя «main» и наделим его соотвтетствующими привилегиями.
Conn sys/sys@orcl as sysdba
GRANT SELECT,INSERT,UPDATE,DELETE ON scott.emp TO PUBLIC; DROP USER main CASCADE;
CREATE USER main IDENTIFIED BY main DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
QUOTA 1m ON users;
GRANT connect, resource TO main; GRANT execute ON dbms_fga TO main;
GRANT select ON dba_fga_audit_trail TO main; GRANT DELETE on dba_fga_audit_trail to main; GRANT select ON dba_audit_policies TO main; GRANT FLASHBACK ANY TABLE TO main; GRANT EXECUTE ON dbms_flashback TO main; Conn main/main@orcl
Удалим политику аудита, созданную предыдущим выполнением лабораторной работы:
DELETE FROM dba_fga_audit_trail; begin
DBMS_FGA.DROP_POLICY( OBJECT_SCHEMA => 'scott', OBJECT_NAME => 'emp', policy_name => 'CHK_EMPA'); end;
/
Создадим политику аудита таблицы «emp», предусматривающую регистра-
цию DML действий пользователей (команды «select», «insert», «update», «delete»)
с этой таблицей таких, которые затрагивают столбец «ename» и включают усло-
вие «'sal > 1500'».
BEGIN
DBMS_FGA.ADD_POLICY(
OBJECT_SCHEMA => 'SCOTT',
OBJECT_NAME => 'EMP',
360
POLICY_NAME => 'chk_empa', AUDIT_CONDITION => 'sal > 1500', AUDIT_COLUMN => 'ename', HANDLER_SCHEMA=>null, HANDLER_MODULE=>null, ENABLE=>true);
END;
/
Проверим, что зарегисторирует политика FGA 'chk_empa'.
conn king/king@orcl --команда 1
SELECT * FROM scott.emp; --команда 2
SELECT empno,ename FROM scott.emp; --команда 3
SELECT empno, deptno FROM scott.emp; --команда 4
UPDATE scott.emp SET deptno=40 WHERE deptno=20;
ROLLBACK;
Посмотрим, что зарегистрировал аудит. conn main/main@orcl
Alter session set nls_date_format = 'yyyy-mon-dd:HH:MI:SS'; select db_user, sql_text, timestamp from dba_fga_audit_trail;
DB_USER |
SQL_TEXT |
TIMESTAMP |
----------------- |
-------------------------------------------------- |
-------------------- |
KING |
SELECT * FROM scott.emp |
2010-май-29:02:32:10 |
KING |
SELECT empno,ename FROM scott.emp |
2010-май-29:02:32:10 |
Команда 3 не зарегистрирована, так как команда 3 не затрагивает запросом столбцы, указанные в политике «chk_empa». Команда 4 не зарегистрирована, так как параметр «statement_types» политики по умолчанию имеет значение «SELECT». Скорректируем политику для учета действий с таблицей «emp» командами «INSERT, UPDATE, DELETE». Добавим условие, по которому аудит выпоняется и для столбца «sal». Так как программы UPDATE_POLICY не существует, сначала:
conn main/main@orcl begin
DBMS_FGA.DROP_POLICY( OBJECT_SCHEMA => 'scott', OBJECT_NAME => 'emp', policy_name => 'CHK_EMPA'); end;
/
Затем:
BEGIN