Предоставить выбор любой таблицы из одной конкретной схемы - PullRequest
0 голосов
/ 31 октября 2019

Я только что создал нового пользователя только для чтения (TEMPDBREAD) для наших разработчиков @ наша база данных Oracle 11.2.0.4

Теперь им нравится доступ на чтение ко всем таблицам только из одной схемы (TEMPDBUSER)
isЕсть альтернатива для предоставления выбора любой таблицы. Они не должны быть в состоянии прочитать другие схемы. Но поскольку структура таблиц часто изменяется, трудно все обосновать вручную.

Вот почему выбор любой таблицы присуждается очень быстро и ее легче разместить. Можно ли в любом случае отказать в доступе к другим схемам?

Любая идея, как я могу решить это очень просто?

BR Julian

Предоставить доступ к таблице вручную. Выбрать грант для ЛЮБОЙ таблицы

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Неа. Вы либо даете им select any table и позволяете им читать любую таблицу в базе данных, либо вы предоставляете им доступ к каждой таблице в TempDBUser в отдельности. В подавляющем большинстве случаев вам нужно предоставить им доступ к каждой таблице в TempDBUser (предположительно, через роль, потому что будет много учетных записей разработчиков, которым необходимо выполнять запросы).

Мне не понятно, почему предоставление доступа на уровне объектов для вас проблематично. «Изменения структуры таблицы» не требуют новых грантов, поскольку они являются просто изменениями существующих объектов. Если вы действительно имеете в виду, что новые таблицы создаются часто, вам просто нужно включить гранты в процесс управления изменениями и развертывания.

Если у вас есть упакованное приложение, которое периодически создает новые таблицы (ужасная практика)Вы можете создать триггер DDL, который выдает грант каждый раз, когда в TempDBUser создается новая таблица. Вам понадобится триггер DDL, который отправит задание через пакет dbms_job, который фактически предоставил грант, который является довольно запутанной архитектурой, но он работает.

0 голосов
/ 31 октября 2019
    spool /tmp/grant_issue.sql
    select 'grant select on TEMPDBUSER.' || table_name || ' TO TEMPDBREAD;' from dba_tables  where owner='TEMPDBUSER' ;
    spool off;

    run the spool file.

    sqlplus @/tmp/grant_issue.sql
...