Я работаю над обходным решением для «функции» в 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';
Это результат:
EDIT 2:
Я попытался следующие эмулировать разрешения Dash DB для этого пользователя для этой схемы:
GRANT ALTERIN, CREATEIN, DROPIN ON SCHEMA FAKE_SCRATCH TO USER TEST_USER;
Still does не работает:/
Это все зависит от настройки разрешения правильно для вашей базы данных - [IMPLICIT_SCHEMA] (HTTP: // WWW .ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.admin.sec.doc/doc/c0005525.html) - но тогда вы бы жаловались, что это слишком ограничительно. – mustaccio
@mustaccio спасибо за эту ссылку! Поэтому я предполагаю, что эти разрешения «ОГРАНИЧЕНИЯ» могут быть выполнены только на этапе создания схемы? – theGreenCabbage
Нет, вы можете указать «ОГРАНИЧИТЬ» при создании базы данных. В существующей базе данных вы должны отменить 'IMPLICIT_SCHEMA' из' PUBLIC' (и не позволяйте вашим приложениям подключаться как пользователь с привилегией DBADM). – mustaccio