Безопасность базы данных Oracle и программирование PL/SQL

Илья Дергунов

Илья Дергунов

Автор статьи. ИТ-специалист с 20 летним стажем, автор большого количества публикаций на профильную тематику (разработка ПО, администрирование, новостные заметки). Подробнее.

Безопасность БД Oracle и кодинг на PL/SQLМногие разработчики 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.

  

 

Вас заинтересует / Intresting for you:

Управление приложениями PL/SQL...
Управление приложениями PL/SQL... 4651 просмотров Stas Belkov Thu, 16 Jul 2020, 06:20:48
Встроенные методы коллекций PL...
Встроенные методы коллекций PL... 14837 просмотров sepia Tue, 29 Oct 2019, 09:54:01
Использование записей (records...
Использование записей (records... 19734 просмотров Алексей Вятский Thu, 05 Jul 2018, 07:49:43
Символьные функции и аргументы...
Символьные функции и аргументы... 18586 просмотров Анатолий Wed, 23 May 2018, 18:54:01
Войдите чтобы комментировать