Создать нового пользователя ORACLE с полным доступом к определенной SCHEMA - PullRequest
1 голос
/ 04 марта 2010

Как создать нового пользователя в ORACLE с полным доступом (изменить, удалить, выбрать, вставить, отладить и т. Д.) К только одной определенной SCHEMA.

Ответы [ 2 ]

5 голосов
/ 04 марта 2010

Не может быть сделано.В Oracle привилегии предоставляются для определенных объектов, если только вы не обладаете мощными привилегиями ANY, которые предоставляют доступ к любому объекту в любой схеме.

Это одна из тех вещей, которая кажется довольно раздражающей, но на самом деле вполне обоснованной.Нет веских коммерческих оснований для предоставления привилегий всем объектам в массивной схеме.Либо

  1. второй схеме действительно требуется только подмножество привилегий для подмножества объектов;или
  2. вторая схема совершенно не нужна.

Теперь может оказаться, что подмножество в первом экземпляре является очень большим подмножеством.Но лень - не оправдание плохой практики безопасности.

Что мы можем сделать, это сгенерировать операторы предоставления из словаря данных:

select 'grant select on '||table_name||' to B'
from   user_tables
/

(для сценария, запускаемого пользователем A).

Это все ещелучше, чем предоставление привилегий для схемы, потому что это означает, что, по крайней мере, любой новый объект, добавленный пользователем A, не будет автоматически распространяться на B без дополнительного действия и, следовательно, без каких-либо дополнительных размышлений относительно того, является ли это целесообразным.

2 голосов
/ 05 марта 2010

Вы можете использовать пользователя PROXY . Это не совсем то же самое, что позволяет одному пользователю базы данных подключаться как другому, но используя свой собственный пароль. Поэтому у вас может быть несколько пользователей, каждый со своим паролем, используя одну и ту же схему.

Пример кода: здесь .

...