Многие разработчики
PL/SQL
считают, что о безопасности должны заботиться только администраторы баз данных и специалисты по безопасности. Действительно, некоторыми аспектами безопасности (например, управлением пользователями и привилегиями) должны заниматься администраторы. Но было бы серьезной ошибкой полагать, что разработчиков PL/SQL
эта тема вообще не касается. Во-первых, безопасность не является проблемой, которая решается один раз; это средство достижения цели, о котором приходится помнить постоянно. Во-вторых, многие администраторы направляют свои усилия на защиты базы данных в целом, а не на программирование средств безопасности конкретного приложения.
Вероятно, вы слышали, что надежность системы определяется надежностью ее слабейшего звена. Этот принцип в равной степени применим к безопасности приложений. Каждый элемент инфраструктуры — приложение, архитектура, промежуточные программы (middleware
), база данных, операционная система — вносит свой вклад в общую безопасность инфраструктуры, и сбой безопасности одного компонента создает угрозу для всей системы. Понимание структурных элементов безопасности и внедрение их в архитектуру приложения не только желательно, но и абсолютно необходимо.
Аспекты безопасности Oracle
делятся на три общие категории:
- Находящиеся исключительно в ведении администраторов баз данных, систем и сетей. Эти вопросы (например, управление пользователями и привилегиями) выходят за рамки моего блога.
- Аспекты, важные для разработчиков и проектировщиков архитектуры, не относящиеся к сфере ответственности администраторов. Одним из примеров служит выбор модели прав вызова при создании хранимого кода; как правило, решение принимается в ходе проектирования самим разработчиком, а не администратором.
- Аспекты, которые обычно считаются относящимися к сфере администрирования, но которые должны быть хорошо известны разработчикам и проектировщикам. К этой категории относится шифрование, безопасность уровня строк и контексты приложений. Именно этим аспектам будут посвящены мои следующие статьи.
Как возможности и средства, описанные в моем блоге, помогут разработчикам PL/SQL
и проектировщикам архитектуры приложений в их работе? Чтобы ответить на этот вопрос, следует рассмотреть каждую тему по отдельности:
- Шифрование играет жизненно важную роль для защиты данных и активно применяется во многих ситуациях при проектировании приложений. Вы должны обладать практическими знаниями в области функциональности
Oracle
, относящейся к шифрованию, включая механизм прозрачного шифрования данных (TDE
,Transparent Data Encryption
), представленный вOracle Database 10g Release 2
, и механизм прозрачного шифрования таблиц (TTE
,Transparent Table
Encryption
), представленный вOracle Database 11g
. - Безопасность уровня строк (
RLS
,Row Level Security
). При проектировании приложения необходимо хорошо понимать архитектуру доступа и проверки полномочий для работы с данными.RLS
позволяет ограничить строки, доступные для пользователя. Во многих случаяхRLS
упрощает понимание и реализацию приложений, а иногда даже автоматически обеспечивает соответствие готовых приложений правилам безопасности, принятым в вашей организации. - Контексты приложений представляют собой пары «имя/значение», определяемые в сеансе посредством выполнения специальных хранимых процедур. Контексты приложений обычно используются для управления доступом к ресурсам базы данных в соответствии с правилами, изменяющимися в зависимости от текущего пользователя.
- Детализированный аудит FGA (
Fine-Grained Auditing
) предоставляет механизм для регистрации факта выдачи пользователями определенных команд и выполнения некоторых условий.FGA
предоставляет в распоряжение разработчика немало полезных функций. Например,FGA
фактически позволяет реализовать триггерыSELECT
— пользовательские процедуры, которые должны автоматически выполняться при каждой выборке данных из таблицы.
Тема безопасности в Oracle воистину необъятна; в последующих моих блогах мы лишь в самых общих чертах рассмотрим ее аспекты, представляющие наибольший интерес для разработчиков PL/SQL
. За дополнительной информацией об этих и других операциях безопасности Oracle обращайтесь к книге Oracle PL/SQL
for DBAs
(Arup Nanda, Steven Feuerstein, O’Reilly). Также выпущено немало других книг, которые помогут вам разобраться в тонкостях вопросов безопасности. Ресурсы по этой теме также доступны на сайте Oracle Security Technology Center.