![]() |
Тестирование безопасности базы данных в 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 являются правильными?
Правильные ответы - 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 будут подвергнуты аудиту в результате применения этой политики аудита? (Выберите все, что подходит.)UPDATE hr.emp SET SALARY = SALARY+ 4000 WHERE EMP_ID=197; UPDATE hr.emp SET SALARY = SALARY+ 4000, COMMISSION_PCT = COMMISSION_PCT+ 0.5 WHERE COMMISSION_PCT > 0; SELECT emp_id, salary FROM hr.emp; DELETE hr.emp WHERE emp_id = 100; 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. Что вы сделаете?
Правильный ответ - 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; Какие утверждения об этой политике являются правильными? (Выберите два.)Правильными ответами являются 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, чтобы _ _ _ _ _ _ _ _ _
Правильный ответ - D. Ответы 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 - это очень мощная опция, способная поддерживать разнообразие требований, типа выборочного маскирования столбцов, основанных на политике и применять политику только, когда происходит обращение к определенным столбцам. |