Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Горбатов Аттестационные испытания автоматизированных систем от 2014

.pdf
Скачиваний:
79
Добавлен:
12.11.2022
Размер:
12.47 Mб
Скачать

AUDIT_COLUMN_OPTS => dbms_fga.all_columns, AUDIT_TRAIL => dbms_fga.db_extended, HANDLER_SCHEMA=>null, HANDLER_MODULE=>null,

ENABLE=>true);

END;

/

DELETE FROM dba_fga_audit_trail;

Выполним пользователем «FORD» запрос:

Conn ford/ford@orcl SELECT * FROM scott.emp;

Затем пользователем «MAIN» изменим значение столбца «sal».

Conn main/maint@orcl

Alter session set nls_date_format = ‘yyyy-mon-dd:HH:MI:SS’; col sql_text format a100

Update scott.emp set sal= 6000 where ename=’KING’; Commit;

Теперь, если извлекать строки таблицы «emp», в строке KING зарплата будет иметь значение «6000». А что видел FORD?

Выполним запрос к представлению «dba_fga_audit_trail», в котором выведем значение SCN (sytem change number – можно сказать, соответствует отсчету внутренних часов Oracle) для запроса

FORD:

select db_user, sql_text, timestamp,scn from dba_fga_audit_trail WHERE db_user=’FORD’;

DB_USER SQL_TEXT TIMESTAM SCN

---------- -------------------------------------- ---------------------- -----------

FORD SELECT*FROM scott.emp 2010-май-30:02:55:11 13705104

А теперь выполним команду, которая позволит просмотреть строки таблицы «emp» на момент с SCN=13705104, т.е. на тот момент, когда запрос делал FORD:

select * from scott.emp as of SCN 13705104;

 

EMPNO ENAME

JOB MGR HIREDATE SAL COMM DEPTNO

---------- ---------- ---------

---------- -------- ---------- ---------- ----------

7839 KING

PRESIDENT 17.11.81 5000

10

 

421

 

Остальные строки, кроме KING-а нам неинтересны, ведь изменялось значение только в этой строке.

Для того чтобы пользователь «main» мог выполнять такое извлечение прошлого состояния строки, ему была дана привилегия

«FLASHBACK ANY TABLE».

3. Определение политики (правила) аудита с обработкой событий для выбранной предметной области.

Проверка выполнения детального аудита с обработкой событий в соответствии с определенной политикой

В предыдущих разделах этой лабораторной работы мы в числе параметров процедуры DBMS_FGA.ADD_POLICY указывали, но не задавали значения, параметры «HANDLER_SCHEM», «HANDLER_MODULE». Эти два параметра задают владельца модуля обработки данных детального аудита и название этого модуля. Создадим в схеме «main» таблицу (с незначительной корректировкой) и процедуру для обработки данных детального аудита по образцу, приведенному в книге «Oracle PL/SQL для администраторов баз данных» авторов Аруп Нанда и Стивен Фейерштейн, изданной издательством «Символ-Плюс» в 2008 году.

conn main/main@orcl

CREATE TABLE flagged_access

(

fgasid NUMBER(20), entryid NUMBER(20), audit_date DATE, fga_policy VARCHAR2(30), db_user VARCHAR(30), os_user VARCHAR2(30),

authent_type VARCHAR2(30), client_id VARCHAR2(100), client_info VARCHAR2(64), host_name VARCHAR2(54), instance_id NUMBER(2),

ip VARCHAR2(30), term VARCHAR2(30),

422

schema_owner VARCHAR2(20), table_name VARCHAR2(30), sql_text VARCHAR2(64),

SCN NUMBER(10) ) ;

create or replace procedure access_flagger

(

p_table_owner in varchar2, p_table_name in varchar2, p_fga_policy in varchar2

)

is

l_fgasid number(20); l_entryid number(20); l_term varchar2(2000); l_db_user varchar2(30); l_os_user varchar2(30);

l_authent_type varchar2(2000); l_client_id varchar2(100); l_client_info varchar2(64); l_host_name varchar2(30); l_instance_id number(2);

l_ip varchar2(30); l_sql_text varchar2(4000); l_scn number;

begin

l_fgasid := sys_context('USERENV','SESSIONID'); l_entryid := sys_context('USERENV','ENTRYID'); l_term := sys_context('USERENV','TERMINAL');

l_db_user := sys_context('USERENV','SESSION_USER'); l_os_user := sys_context('USERENV','OS_USER');

l_authent_type := sys_context('USERENV','AUTHENTICATION_TYPE' );

l_client_id := sys_context('USERENV','CLIENT_IDENTIFIER'); l_client_info := sys_context('USERENV','CLIENT_INFO'); l_host_name := sys_context('USERENV','HOST');

423

l_instance_id := sys_context('USERENV','INSTANCE'); l_ip := sys_context('USERENV','IP_ADDRESS'); l_sql_text := sys_context('USERENV','CURRENT_SQL'); l_scn := sys.dbms_flashback.get_system_change_number; insert into flagged_access

(

fgasid,

entryid, audit_date, fga_policy, db_user, os_user, authent_type, client_id, client_info, host_name, instance_id, ip,

term, schema_owner, table_name, sql_text,

scn

)

values

(

l_fgasid, l_entryid, sysdate, p_fga_policy, l_db_user, l_os_user, l_authent_type, l_client_id, l_client_info, l_host_name, l_instance_id, l_ip,

424

l_term, p_table_owner, p_table_name, l_sql_text, l_scn

);

end;

/

Обратим внимание на то, что в созданную нами таблицу аудита вставляется информация из системного контекста, идентифицирующая атрибуты клиента, выполнившего запрос, в том числе и такая, какой нет в представлении «dba_fga_audit_trail». Для того чтобы использовать обработчик в приведенном варианте, пользователю «main» была дана привилегия, на основании которой при выполнении процедуры можно будет извлекать и записывать SCN

в таблицу flagged_access:

GRANT EXECUTE ON dbms_flashback TO main;

Пересоздадим политику:

begin DBMS_FGA.DROP_POLICY( OBJECT_SCHEMA => 'scott', OBJECT_NAME => 'emp', policy_name => 'CHK_EMPA'); end;

/

BEGIN DBMS_FGA.ADD_POLICY( OBJECT_SCHEMA => 'scott', OBJECT_NAME => 'emp', POLICY_NAME => 'chk_empa',

AUDIT_CONDITION => 'sal >1500', AUDIT_COLUMN => 'ename,sal', STATEMENT_TYPES => 'select, insert, update, delete', AUDIT_COLUMN_OPTS => dbms_fga.all_columns, AUDIT_TRAIL => dbms_fga.db_extended,

425

HANDLER_SCHEMA=>'main', HANDLER_MODULE=>'access_flagger', ENABLE=>true);

END;

/

col sql_text format a100

Alter session set nls_date_format = 'yyyy-mon-dd:HH:MI:SS'; select db_user, sql_text, timestamp,scn from dba_fga_audit_trail

WHERE db_user='SMITH';

DB_USER SQL_TEXT TIMESTAM SCN

-------------- -------------------------------------- ---------------------- -----------

SMITH SELECT*FROM scott.emp 2010-май-30:08:35:12 13731785

select db_user, sql_text, audit_date,scn from flagged_access

WHERE db_user='SMITH';

 

 

DB_USER SQL_TEXT

AUDIT_DATE

SCN

-------------- -------------------------------------- ---------------------- -----------

SMITH SELECT*FROM scott.emp 2010-май-30:08:35:12 13731785

C данными аудита в таблице flagged_access можно выполнять любую обработку, не затрагивая словаря базы данных.

Сдача лабораторной работы

Заключается в демонстрации студентом детального аудита на индивидуальной предметной области, заданной преподавателем. Студент сам создает и обеспечивает возможность демонстрации преподавателю (совокупностью скриптов) политики детального аудита в работе:

А) без обработки событий детального аудита; Б) с регистрацией переменных привязки и выводимой по заре-

гистрированному детальным аудитом запросу на момент выполнения этого запроса;

В) с обработкой событий детального аудита.

В ходе выполнения скриптов студент отвечает на вопросы преподавателя в связи с их (скриптов) работой.

426

Тестовые задания к работе 16

Входной контроль

1.Укажите недостатки аудита (средствами разработчика)

команды «select»:

a)команды «select» не ко всем таблицам могут быть зарегистрированы этим аудитом;

b)команды «select» не всех (помимо пользователя sys) могут быть зарегистрированы этим аудитом;

c)триггер, используемый для такого аудита, требует длительного времени для срабатывания на команду «select»;

d)триггер на команду «select» не может быть создан;

e)правильных ответов нет.

2.На каком пакете построена функциональность детального аудита?

a)DBMS_RLS;

b)DBMS_JOB;

c)DBMS_FGA;

d)DBMS_OUTPUT;

e)правильных ответов нет.

3.Какому пользователю принадлежит традиционный журнал аудита базы данных Oracle?

a)system;

b)sys;

c)sysaud;

d)dbsnmp;

e)правильных ответов нет.

4.В какой таблице хранится традиционный журнал аудита

Oracle?

a)user$;

b)association$;

c)aud$;

d)aw$;

e)правильных ответов нет.

5.Через какие представления доступна пользователю информация традиционного словаря данных?

a)dba_audit_trail;

427

b)dba_audit_session;

c)dba_audit_objects;

d)user_objects;

e)Правильных ответов нет.

6.В приведенном ниже перечне укажите строки, в которых указана причина, почему детальный аудит был создан (помимо стандартного) для администраторов баз данных:

a)повышение безопасности;

b)анализ выполнения SQL запросов;

c)эмуляция триггеров на select;

d)оптимизация производительности при использовании переменных связывания;

e)правильных ответов нет.

7.Для каких SQL операторов может выполняться детальный аудит?

a)insert;

b)update;

c)delete;

d)select;

e)правильных ответов нет.

Выходной контроль

1.Какие привилегии даются пользователю для того, чтобы он своими командами мог задействовать детальный аудит?

a) GRANT connect, resource TO main;

b) GRANT execute ON dbms_fga TO main;

c) GRANT select ON dba_fga_audit_trail TO main; d) GRANT FLASHBACK ANY TABLE TO main; e) GRANT EXECUTE ON dbms_flashback TO main; f) правильных ответов нет.

2.В какое значение необходимо установить параметр «AUDIT_TRAIL» политики детального аудита, чтобы посмотреть данные, извлекаемые зарегистрированным детальным аудитом запросом на момент этого запроса?

a) AUDIT_TRAIL => dbms_fga.db_extended; b) AUDIT_TRAIL => dbms_fga.extended;

c) AUDIT_TRAIL =>extended;

428

d)AUDIT_TRAIL =>db, extended;

e)AUDIT_TRAIL => dbms_fga.db, extended;

f)правильных ответов нет.

3.Запросом к представлению «dba_fga_audit_trail» найден для зарегистрированного аудитом к таблице «employee» пользователя «demo»SQL запроса SCN=13705104. Каким запросом можно посмотреть значение, извлекаемое из этой таблицы запросом с найденным SCN?

a)select spx.name from dba_audit_trail where SCN= 13705104;

b)select * from scott.emp as of SCN 13705104;

c)select action from dba_audit_session where SCN= 13705104;

d)select ses$action from aud$ where SCN= 13705104;

e)select * from scott.emp where SCN= 13705104;

f)правильных ответов нет.

4.Пользователю дается привилегия «GRANT EXECUTE ON dbms_flashback TO main;». Какую информацию может из-

влекать пользователь на основании этой привилегии?

a)запрос на определенный прошлый момент;

b)результат запроса на определенный прошлый момент;

c)SCN;

d)название политики детального аудита;

e)условие детального аудита;

f)правильных ответов нет.

5.Пользователю дается привилегия «GRANT FLASHBACK ANY TABLE TO main;» Какую информацию может извлекать пользователь на основании этой привилегии?

a)параметры политики детального аудита;

b)запросы к таблицам схемы пользователя;

c)результаты запросов на определенный момент в прошлом;

d)извлекать информацию из всех таблиц и представлений словаря, содержащих информацию аудита;

e)прошлое состояние строки таблицы в схеме пользователя;

f)правильных ответов нет.

6.Задана политика детального аудита:

BEGIN

DBMS_FGA.ADD_POLICY(

OBJECT_SCHEMA => 'scott',

OBJECT_NAME => 'emp',

429

POLICY_NAME => 'chk_empa', AUDIT_CONDITION => 'sal >1500', AUDIT_COLUMN => 'ename,sal', STATEMENT_TYPES => 'select, insert, update, delete', AUDIT_COLUMN_OPTS => dbms_fga.all_columns, HANDLER_SCHEMA=>null, HANDLER_MODULE=>null,

ENABLE=>true);

END;

/

Укажите в приведенном ниже перечне запросы пользователя к таблице «emp», которые будут зарегистрированы детальном аудитом:

a)SELECT ename FROM scott.emp;

b)SELECT sal FROM scott.emp;

c)SELECT ename, sal FROM scott.emp;

d)SELECT * FROM scott.emp;

e)SELECT * FROM scott.emp WHERE empno is NULL;

f)правильных ответов нет.

7. Какую информацию дает столбец «sql_bind» представле-

ния «dba_fga_audit_trail»?

a)текст SQL запроса с присоединенным к нему результатом;

b)порядковые в сеансе номера переменных привязки;

c)число символов в переменных привязки;

d)связанный с SQL запросом SCN, соответствующий этому запросу;

e)значения переменных привязки;

f)правильных ответов нет.

430