Oracle, выберите грант на любом столе, кроме 1 - PullRequest
0 голосов
/ 09 ноября 2018

Я бы хотел, чтобы пользователь имел доступ ко всем таблицам из моей БД, кроме 1 таблицы, которая в качестве примера будет 'MY_SECRET_TABLE'. Мое решение не работает в настоящее время ...:

Grant select any table to public;
Grant select any table to MY_USER;
Revoke all on MY_SECRET_TABLE from MY_USER;

Но я все еще могу получить доступ к столу. Я что-то не так делаю?

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Один из способов сделать это - получить исполняемые гранты через SQL

.
SELECT   'GRANT SELECT ON ' || object_name || ' TO USERNAME;'
FROM     user_objects
WHERE    object_type = 'TABLE' AND object_name != 'EXCEPT_THIS_TABLE'
ORDER BY object_name;
0 голосов
/ 09 ноября 2018

GRANT SELECT ON ANY TABLE - очень мощная привилегия, поэтому вы можете пересмотреть свою стратегию.

В любом случае, единственное решение, которое я вижу, - это использовать защиту на уровне строк, чтобы любой, кроме MY_USER, мог выбрать таблицу, но строки не будут возвращены.

Как это звучит?

...