Как вы справляетесь с отсутствием привилегий уровня схемы в Oracle? Архитектура безопасности Oracle хорошо работает для приложений, которым требуются только привилегии уровня объекта, и хорошо работает для администраторов баз данных, которым нужно мало ограничений. Однако в архитектуре, похоже, есть большая дыра для программистов, занимающихся разработкой с использованием интерфейсного приложения и PL / SQL в нескольких схемах. Вот некоторые из моих вариантов с их недостатками:
Заставьте каждого программиста делать разработку в своей собственной схеме. Администратор баз данных предоставит привилегии уровня объекта программистам, которые в них нуждаются. Любая разработка пакета должна выполняться администратором базы данных. Основным недостатком является то, что программисты будут использовать базу данных как небольшой сегмент в ущерб производительности базы данных. Я хочу, чтобы программисты развивались в базе данных, но этот метод сильно обескуражил бы это.
Дайте каждому программисту имя пользователя / пароль для дюжины или около того схемы, в которой они нуждаются для разработки. Предоставьте разрешение этой схеме приложения для создания процедур, таблиц и т. Д. Некоторые недостатки этого подхода заключаются в том, что программистам приходится поддерживать несколько входов в систему и редко заходили как сами. Разработка кросс-схемы также сложна.
Предоставьте программистам права аутентификации через прокси-сервер для каждой схемы, для которой они должны разрабатывать. Это позволяет им входить в систему как от себя, без необходимости предоставлять им привилегии, отличные от прокси-привилегии. Недостатки включают программистов, которым приходится поддерживать отдельные соединения для каждой схемы, для которой они прокси-серверы, разработка перекрестных схем более обременительна, поскольку соединения должны постоянно меняться, а пакеты, использующие общедоступные ссылки на базы данных с прошедшей аутентификацию, не будут компилироваться в прокси-соединениях.
Дайте каждому программисту привилегии администратора БД. - Недостатком здесь является безопасность. Ни один программист не может быть исключен из любой схемы, и любой программист может выдать себя за любого другого программиста (DBA).
Кажется, отсутствует опция для предоставления каждому программисту SELECT / INSERT / CREATE / etc. привилегии для схемы, в которой они нуждаются для разработки. Они входят в систему сами, чтобы выполнить свою работу, используя одно соединение. Новые объекты в схеме, к которым они имеют доступ, сразу же становятся доступны.
Я что-то пропустил? Как вы относитесь к программистам приложений, которые занимаются разработкой PL / SQL?
источник
Ответы:
В те времена, когда я работал в магазине Oracle, у нас был специальный сервер 'dev' (разработка), который имел другие ограничения безопасности, чем сервер 'prod' (производство). Разработчики могли делать все, что им нужно, а затем мы передавали необходимые сценарии администратору базы данных для применения к производственному серверу.
В случае с нашими критически важными системами (SCT Banner, для отслеживания классов и студентов, а также Oracle Financials) были также «тестовые» и «начальные» серверы. Тест был для пользовательского приемочного тестирования, прежде чем материал мигрировал из dev в prod; «seed» - это стандартная установка программного обеспечения, поэтому, если мы найдем ошибку, мы сможем проверить, было ли это то, что мы ввели или пришли от SCT или программного обеспечения Oracle.
источник
Используйте роли, чтобы связать коллекции объектов, а затем предоставить доступ к ролям
Оператор GRANT позволяет администратору базы данных:
Поскольку объектные привилегии могут быть предоставлены роли, относительно легко предоставить доступ к роли всем таблицам в схеме:
Это в сочетании с
GRANT CREATE TABLE
выдачей соответствующей схеме-пользователю роли означает, что разработчики могут выбирать и создавать таблицы. Он не идеален, поскольку созданная таблица требует повторного запуска сценария, ноWITH GRANT OPTION
предполагает, что каждый разработчик может затем предоставить доступ к созданной таблице соответствующей роли.Это говорит о том, что вы можете создавать триггеры уровня DDL, которые могут выполнять соответствующий процесс предоставления, хотя, очевидно, потребуется значительное количество испытаний, можно сделать так, чтобы оператор создания таблицы автоматически предоставлял соответствующие разрешения соответствующим ролям.
Редактировать --
Согласно ГРАНТУ ,
CREATE TABLE
привилегия:Таким образом, предоставляя им создание таблицы, изменение таблицы и т. Д. От правильного пользователя, они должны иметь возможность доступа к схеме этого пользователя, как если бы они были подходящим пользователем.
источник