Предоставить пользователю Oracle доступ только для чтения к определенному представлению

#database #oracle #standards

#База данных #Oracle #стандарты

Вопрос:

Я пытаюсь создать новую учетную запись пользователя базы данных в Oracle Database 12c Standard Edition, которая имеет доступ ТОЛЬКО для запуска определенного представления (назовем его «MyApp.MyView»).

Я создал представление как администратор в схеме моего основного приложения. Я создал пользователя (подробности ниже), но, похоже, у него есть возможность запрашивать любую таблицу или представление в схеме приложения. Я ТОЛЬКО хочу, чтобы они могли запрашивать конкретное представление, которое я создал. Можно ли это сделать?

Затем, используя SQLDeveloper, я щелкнул правой кнопкой мыши по MyView и предоставил права доступа MyUser. Я могу запросить его как MyUser, но я также могу запросить что угодно, и я этого не хочу.

 -- USER SQL
ALTER USER "MyUser"
DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP"
ACCOUNT UNLOCK ;

-- QUOTAS

-- ROLES
ALTER USER "MyUser" DEFAULT ROLE "CONNECT";

-- SYSTEM PRIVILEGES
  

Ответ №1:

Ниже создается пользователь с минимальным набором привилегий, необходимых для запроса представления / таблицы в другой схеме. Если пользователь может запрашивать другие таблицы / представления, то они должны быть предоставлены в другом месте либо с помощью дополнительных разрешений, либо ролей.

 create user MyUser identified by testpassword account unlock;

grant create session to MyUser;

grant read on MyApp.MyView to MyUser;
  

Комментарии:

1. Спасибо. Изначально я пытался сделать это ЧЕРЕЗ графический интерфейс в SQL developer, и по какой-то причине это дало мне больше, чем мне было нужно. Это было идеально.