(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Тестирование безопасности базы данных в Oracle

Источник: oracle
Арадхана Пури

Вопросы и ответы по обеспечению безопасности базы данных Oracle при использовании возможностей FGA и VPD.

Экзамен по новым возможностям для администраторов Oracle Database 10 g (Oracle 10g: New Features for Administrators) позволяет сертифицированным профессионалам Oracle (OCP), имеющим сертификат по базе данных Oracle9 i, пролонгировать его для Oracle Database 10 g . Это единственный экзамен, который должны пройти сертифицированные OCP по Oracle9 i , чтобы пролонгировать свой мандат сертификации до Oracle Database 10 g .

В этой колонке мы сосредоточимся на возможностях детального аудита (FGA - fine-grained auditing) и виртуальной частной базы данных (VPD - virtual private database) в Oracle Database 10g . Появившийся в базе данных Oracle9 i детальный аудит (FGA), фиксирует пользовательские действия на очень детализированном уровне и помогает устранить потребность в ручном аудите при помощи триггеров. Впервые появившаяся в базе данных Oracle8 i VPD (известная также как детальный контроль доступа) предоставляет мощные возможности безопасности на уровне строк.

В колонке представлены типовые вопросы, с которыми вы можете столкнуться при сдаче экзамена OCP по новым возможностям Oracle Database 10 g для администраторов. Заметьте, что типовой формат вопросов и код SQL были откорректированы для представления в этой статье.

Детальный аудит

Аудитом называется мониторинг и регистрация отобранных действий пользователя с базой данных. В базе данных Oracle9 i FGA сделал возможной регистрацию изменений на уровне строк, наряду со значениями SCN, для восстановления старых данных. Опция FGA работала только для операторов SELECT, а не для операторов языка DML типа UPDATE, INSERT и DELETE. Например, при использовании FGA в базе данных Oracle9 i , вы могли определить, что пользователь Смит обновил таблицу SALES, принадлежащую SH, но вы не могли узнать, обновил ли пользователь Смит столбец AMOUNT_SOLD, или увидеть значение столбца AMOUNT_SOLD перед обновлением. В Oracle Database 10 g FGA может также выполнять аудит операторов языка DML.

Устанавливаемая вами при помощи FGA политика может контролировать доступ к данным на основе контента. Используя политику, вы можете указывать столбцы и условия, для которых вы хотите провести аудит записей. К числу условий может относиться ограничение аудита определенными типами операторов языка DML, используемых в связи с указанными вами столбцами. Вы можете также предоставить имя подпрограммы (типа процедуры PL/SQL или пакета), которую вы желаете вызвать в том случае, если происходит событие аудита.

---***---***---

Какие два утверждения о возможностях FGA в Oracle Database 10g являются правильными?

  1. Записи FGA хранятся в таблице SYS.FGA_LOG$ и доступны через представление DBA_FGA_AUDIT_TRAIL.
  2. Привилегия EXECUTE для пакета DBMS_FGA необходима для того, чтобы управлять политикой аудита FGA.
  3. Для активизации FGA на уровне базы данных необходимо задать параметр инициализации AUDIT_TRAIL.
  4. Политику FGA нельзя активировать и заблокировать без потери информации о метаданных.

Правильные ответы - A и B . Записи FGA хранятся в таблице SYS.FGA_LOG$ и доступны через представление DBA_FGA_AUDIT_TRAIL. Чтобы управлять политикой FGA, вам требуются привилегии EXECUTE для пакета DBMS_FGA. Вы используете интерфейс DBMS_FGA.ADD_POLICY, чтобы определить каждую политику FGA для таблицы или представления, идентифицируя любую комбинацию операторов SELECT, UPDATE, DELETE и INSERT.

Ответ C неправилен, потому что вы не должны задать AUDIT_TRAIL для активации детального аудита. Ответ D неправилен, потому что вы можете временно активировать или отключить политику FGA, не теряя никакой информации о метаданных. Для активации и отключения политики аудита вы можете использовать процедуры DBMS_FGA.ENABLE_POLICY и DBMS_FGA.DISABLE_POLICY.

---***---***---

Вы определяете следующую политику аудита:

BEGIN
	dbms_fga.add_policy(
	object_schema => 'HR',
	object_name  => 'EMP',
	policy_name  => 'policy_emp_sal_comm',
	audit_condition  => NULL,
	audit_column  => 'SALARY,COMMISSION_PCT',
	audit_column_opts=> DBMS_FGA.ALL_COLUMNS,
	statement_types => 'SELECT,  UPDATE');
END;

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

  1. UPDATE hr.emp 
    SET SALARY = SALARY+ 4000
    WHERE EMP_ID=197;
  2. UPDATE hr.emp
    SET SALARY = SALARY+ 4000,
    COMMISSION_PCT = COMMISSION_PCT+ 0.5
    WHERE COMMISSION_PCT > 0; 
  3. SELECT emp_id, salary FROM hr.emp;
  4. DELETE hr.emp WHERE emp_id = 100; 
  5. SELECT * FROM hr.emp; 

Правильные ответы - B и E . В том случае, если вы указываете для параметра AUDIT_COLUMN_OPTS значение DBMS_FGA.ALL_COLUMNS, записи журнала аудита будут создаваться только, когда ко всем столбцам, специфицированным параметром AUDIT_COLUMN получает доступ операция(и), специфицированная(ые) для параметра STATEMENT_TYPES. Следовательно, в приведенном здесь примере журнал аудита будет создан, если над столбцом SALARY и столбцом COMMISSION_PCT будет выполнена операция SELECT или UPDATE.

Ответ A неправилен, потому что операция UPDATE выполняется только для столбца SALARY. Ответ C неправилен, потому что столбцы SALARY и COMMISSION_PCT не участвуют в запросе. Ответ D неправилен, потому что для параметра STATEMENT_TYPES не специфицирована операция DELETE.

---***---***---

Для реализации обычного аудита в Oracle Database 10 g используется команда AUDIT. Кроме того, вы определяете политику аудита, используя процедуру DBMS_FGA.ADD_POLICY. Вы заинтересованы в получении комбинированного представления результатов обычного аудита и журнала аудита FGA. Что вы сделаете?

  1. Выполните соответствующие процедуры в пакете DBMS_CAPTURE_ADM
  2. Выполните соответствующие процедуры в пакете DBMS_METADATA
  3. Сделаете запрос к представлению словаря данных DBA_COMMON_AUDIT_TRAIL
  4. Сделаете объединенный (UNION) запрос к DBA_AUDIT_STATEMENT и DBA_AUDIT_POLICIES

Правильный ответ - C. Представление словаря данных DBA_COMMON_AUDIT_TRAIL является объединением представлений словаря данных DBA_AUDIT_TRAIL и DBA_FGA_AUDIT_TRAIL. Заметьте, что представление DBA_AUDIT_TRAIL предоставляет входы журнала аудита, а DBA_FGA_AUDIT_TRAIL отображает все записи аудита для детального аудита.

Ответы A и B неправильны, потому что процедуры из пакетов DBMS_CAPTURE_ADM и DBMS_METADATA не предоставляют информации аудита. Ответ D неправилен, потому что для получения объединенной информации аудита можно либо сделать запрос к объединению (UNION) представлений словаря данных DBA_AUDIT_TRAIL и DBA_FGA_AUDIT_TRAIL, либо сделать запрос к представлению словаря данных DBA_COMMON_AUDIT_TRAIL.

Виртуальная приватная база данных

Виртуальная приватная база данных (Virtual Private Database - VPD) прозрачно изменяет запросы к данным для предоставления пользователям частичного содержания таблиц, что основывается на ряде определенных критериев. Когда пользователь прямо или косвенно получает доступ к таблице, представлению или синониму, защищенному политикой VPD, сервер динамически изменяет SQL-оператор пользователя. При модификации создается условие WHERE (предикат), возвращаемый реализующей политику безопасности функцией. Политика VPD может быть применена к операторам SELECT, INSERT, UPDATE, INDEX и DELETE.

Рассмотрим пользователя базы данных, которому разрешено видеть только записи служащих из отдела продаж (Sales). Этот пользователь выполняет следующий запрос:

SELECT * FROM emp;

Функция, реализующая политику безопасности, возвращает следующий предикат: division = 'SALES', и база данных прозрачно перезаписывает запрос. Фактически выполняемый запрос будет иметь вид

SELECT * FROM emp 
WHERE division = 'SALES'; 

Чтобы реализовать VPD, вы можете использовать пакет DBMS_RLS. Альтернативно, можно использовать графический интерфейс пользователя Oracle Policy Manager, доступ к которому получают из Oracle Enterprise Manager, чтобы применить политику безопасности к объектам схемы.

---***---***---

Вы добавили следующую политику VPD:

BEGIN
     dbms_rls.add_policy 
    (object_schema=>'hr',
   object_name => 'employees',
   policy_name => 'hr_policy',
   function_schema => 'hr',
   policy_function => 'hr_pol',
   policy_type => dbms_rls.static,
   sec_relevant_cols => 'sal,comm');
END;

Какие утверждения об этой политике являются правильными? (Выберите два.)

  1. Oracle Database повторно вычисляет функцию политики во время выполнения оператора, если она обнаруживает изменения контекста с момента последнего использования курсора.
  2. Функция политики не вычисляется повторно при каждом запросе к таблице EMPLOYEES.
  3. Политика применима только к типу оператора SELECT.
  4. Предикаты политики кэшируются в системной глобальной области (SGA).

Правильными ответами являются B и D . Заметим, что POLICY_TYPE специфицирован как статический. Для статического типа политики функции политики выполняются один раз, и затем кэшируются в SGA. Отметим, что в предыдущих выпусках, политика была динамической, что означало, что база данных выполняла функцию политики для каждого запроса или оператора языка DML. В дополнение к динамической политике Oracle Database 10 g предоставляет статическую и контекстно-зависимую политики. Эти типы политик обеспечивают средство для улучшения производительности сервера, потому что они не всегда повторно запускают функции политики для каждого оператора языка DML и могут быть совместно использованы многими объектами базы данных.

Ответ A неправилен, потому что установка параметра POLICY_TYPE на CONTEXT_SENSITIVE заставляет базу данных во время выполнения оператора переоценивать функцию политики, если она обнаружила изменения контекста с момента последнего использования курсора. Ответ C неправилен, потому что политика применима к операторам SELECT, INSERT, UPDATE и DELETE, если не определен параметр STATEMENT_TYPES.

---***---***---

Пользователь Смит определяет политику, как это показано ниже:

BEGIN
     dbms_rls.add_policy(object_schema =>'scott', 
      policy_name => 'sp1', 
      function_schema =>'pol_chk',
      policy_function => 'pf_sal_comm',
      statement_types => 'SELECT',
      sec_relevant_cols => 'sal,comm',
      sec_relevant_cols_opt => 
DBMS.RLS.ALL_ROWS);
END;

Смит определил параметр SEC_RELEVANT_COLS_OPT процедуры DBMS_RLS.ADD_POLICY как DBMS_RLS.ALL_ROWS. Смит установил параметр SEC_RELEVANT_COLS_OPT как DBMS_RLS.ALL_ROWS, чтобы _ _ _ _ _ _ _ _ _

  1. Позволить пользователю SYSTEM видеть все строки вне зависимости от предиката, возвращенного функцией политики
  2. Позволить любому пользователю с привилегией SELECT ANY TABLE видеть все строки, вне зависимости от предиката, возвращенного функцией политики
  3. Гарантировать, что политика активирована, только если столбцы SAL и COMM не имеют каких-либо пустых значений в любых строках
  4. Реализовать маскирование столбца

 

Правильный ответ - D. Если определить параметр SEC_RELEVANT_COLS_OPT процедуры DBMS_RLS.ADD_POLICY равным DBMS_RLS.ALL_ROWS, будет реализовано маскирование столбца VPD. Маскирование столбца - это новая опция, введенная в Oracle Database 10 g . Поведение VPD при маскировании столбца существенно отличается от всех других политик VPD, которые возвращают только подмножество строк. При маскировании столбца возвращаются все строки, определенные запросом пользователя, но значения конфиденциальных столбцов появятся как NULL.

Ответы A, B и C неправильны. Пользователь SYSTEM освобожден от любой политики безопасности. Вы не должны устанавливать SEC_RELEVANT_COLS_OPT => DBMS_RLS.ALL_ROWS, чтобы дать возможность пользователю SYSTEM увидеть все строки. Установка SEC_RELEVANT_COLS_OPT => DBMS_RLS.ALL_ROWS не активирует для пользователя с привилегией SELECT ANY TABLE возможность видеть все строки, независимо от предиката, возвращенного функцией политики. Кроме того, это не накладывает никаких ограничений на политику по отношению к пустым значениям в строках.

Заключение

Oracle Database 10 g предлагает несколько расширений опций FGA и VPD. Опция FGA перехватывает действия пользователей на очень детализированном уровне, что помогает вам избегать ручного аудита на базе триггеров и комбинирует журналы стандартного аудита и FGA. VPD - это очень мощная опция, способная поддерживать разнообразие требований, типа выборочного маскирования столбцов, основанных на политике и применять политику только, когда происходит обращение к определенным столбцам.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 07.10.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Personal Edition Named User Plus License
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Standard Edition 2 Processor License
Symantec Endpoint Protection Small Business Edition, Initial Hybrid Subscription License with Support, 1-24 Devices 1 YR
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Компьютерная библиотека: книги, статьи, полезные ссылки
Adobe Photoshop: алхимия дизайна
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100