#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, и по какой-то причине это дало мне больше, чем мне было нужно. Это было идеально.