2016-11-15 15 views
-1

Я работаю над обходным решением для «функции» в IBM DB2.Изменение разрешений вида/доступа для схемы в DB2

Эта фантастическая база данных имеет «функцию» в ней, которая, если я попытаюсь использовать оператор CREATE TABLE и не найдет схему, она создаст для меня эту схему, даже если я этого не хочу. Эта ошибка вызвала у меня много часов в отладке, потому что мой код сейчас существует с ожиданием того, что он не будет создать схему, если она не существует

Мой вопрос: как мне изменить разрешения конкретной схемы (или даже на этапе создания схемы), которые конкретный пользователь не имеет доступа к просмотру?

Я проверил это doc ..

Кажется, с GRANT, есть следующие три разрешения:

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

CREATEIN Предоставляет привилегию создания объектов в схеме. Другие полномочия или привилегии, необходимые для создания объекта , по-прежнему необходимы для создания объекта (например, CREATETAB). Владелец явно созданная схема автоматически получает привилегию CREATEIN . Неявно созданная схема имеет привилегию CREATEIN , автоматически предоставляемую PUBLIC.

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

С только ALTERIN, CREATEIN и DROPIN, я не вижу ничего соответствующего для просмотра прав доступа:/

EDIT:

Я проверил нашу базу данных Dash DB для этой конкретной таблицы, которая имеет эти особые разрешения для конкретных пользователей, используя следующий SQL:

SELECT * FROM SYSIBMADM.PRIVILEGES WHERE OBJECTSCHEMA = 'FAKE_SCRATCH';

Это результат:

enter image description here

EDIT 2:

Я попытался следующие эмулировать разрешения Dash DB для этого пользователя для этой схемы:

GRANT ALTERIN, CREATEIN, DROPIN ON SCHEMA FAKE_SCRATCH TO USER TEST_USER;

enter image description here

Still does не работает:/

+0

Это все зависит от настройки разрешения правильно для вашей базы данных - [IMPLICIT_SCHEMA] (HTTP: // WWW .ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.admin.sec.doc/doc/c0005525.html) - но тогда вы бы жаловались, что это слишком ограничительно. – mustaccio

+0

@mustaccio спасибо за эту ссылку! Поэтому я предполагаю, что эти разрешения «ОГРАНИЧЕНИЯ» могут быть выполнены только на этапе создания схемы? – theGreenCabbage

+0

Нет, вы можете указать «ОГРАНИЧИТЬ» при создании базы данных. В существующей базе данных вы должны отменить 'IMPLICIT_SCHEMA' из' PUBLIC' (и не позволяйте вашим приложениям подключаться как пользователь с привилегией DBADM). – mustaccio

ответ

0

Следующий SQL-запрос выполняется в DB2 исправлена ​​проблема:

REVOKE IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC 

 Смежные вопросы

  • Нет связанных вопросов^_^