2008-09-27 2 views

ответ

2

Вы спрашиваете, почему пользователям нужны особые привилегии (т. Е. CREATE TABLE, CREATE PROCEDURE и т. Д.), Чтобы создавать конкретные типы объектов в их собственной схеме?

Если это так, естественным ответом было бы то, что хорошая безопасность начинается с принципа наименьших привилегий, то есть у пользователя должны быть только те привилегии, которые им действительно необходимы, чтобы выполнять свою работу и не более того. Администраторы баз данных часто хотят создавать учетные записи только для чтения для пользователей в производственной базе данных (например, бизнес-аналитикам часто приходится делать разные виды специальных отчетов, разработчикам может понадобиться доступ к устранению некоторых типов проблем и т. Д.). Если пользователь всегда мог создавать объекты в своей собственной схеме, эти пользователи только для чтения внезапно смогут развернуть код в производственную базу данных, не пройдя контроль над изменениями или даже не проверив что-либо. И это в целом приводит к распространению кода, делающего в основном одно и то же (т. Е. Каждый десяток аналитиков имеют процедуру расчета налога с продаж в своих собственных схемах), но каждый из них имеет свою собственную уникальную подпись, логику, требования, допущения и т. Д. И не дай бог, чтобы одного из этих аналитиков уволили, потому что администратор базы данных, естественно, удалил свою учетную запись, только чтобы узнать, что какой-то важный отчет зависит от кода, который существовал только в схеме этого аналитика.

1

Я не могу дать вам «официальный» ответ, но я могу взять удар по рассуждениям о том, как это работает. В проекте, над которым я работаю, разработчиками Oracle являются те, которые развертывают триггеры и пакеты в схеме базы данных. Но у нас есть другие команды разработчиков и тестеров Java и т. Д. После переноса схемы в тестовые и производственные среды мы не хотим, чтобы тестеры или приложения конечного пользователя могли произвольно изменять триггеры и пакеты, связанные с эта схема, поскольку это может привести к недействительности целостности любого тестирования, которое они выполняют (или вызвать еще худшие проблемы в производственной системе).

Итак, в тестовых/производственных средах вы хотите, чтобы тестеры, разработчики Java и приложение конечного пользователя могли читать и записывать данные в схему, но не изменять триггеры и пакеты, которые включают в себя базовые код.

0

Почему пользователю требуются привилегии над своей собственной схемы создания пакетов и триггеров Они не делают.

Их собственная схема подразумевает владение (или пространство имен) определяется username.object Всего пользователю необходимо создать триггер в своей собственной схеме является: таблицу в своей собственной схеме создавание триггера привилегии

Все пользователю необходимо создать пакет в своей собственной схеме является: создания пакета привилегий

Если пользователь хочет создать объекты в другой схеме или что ссылки на другие объекты, или, что требует хранения в табличном, то они потребуется разрешение по этим посторонним предметам.