Разрешения на просмотр в Amazon REdshift - базовая таблица воссоздается, а разрешения на просмотр блокируются

В моем Amazon Redshift есть пользователь, у которого есть доступ к определенному представлению. Базовая таблица, лежащая в основе этого представления, воссоздается каждый день в процессе ETL. По прошествии дня представление также воссоздается, и из-за этого разрешение для этого представления «заблокировано» для этого конкретного пользователя, и мне нужно снова предоставить разрешение.

Вот мнение Grant:

GRANT USAGE ON SCHEMA dwh TO monte_carlo_data_project;
GRANT SELECT ON dwh.v_dp_dim_account TO monte_carlo_data_project;

Вот экран печати, на котором показано воссозданное представление:  DDL Tetx

Когда пользователь снова пытается запросить представление (после воссоздания представления), он получает ошибку разрешения:

Ошибка SQL [500310] [42501]: недопустимая операция Amazon: отказано в разрешении для отношения v_dp_dim_account;

Только если я снова запустил команду GRANT SELECT, пользователь снова получит разрешение.

Любая идея о том, как справиться с этой проблемой?


person Shmuel Milavski    schedule 04.06.2019    source источник


Ответы (2)


Воссоздайте свое мнение один раз с WITH NO SCHEMA BINDING.

Это позволит вам «отделить» таблицу от представления.

Из документации

WITH NO SCHEMA BINDING Предложение, указывающее, что представление не привязано к базовым объектам базы данных, таким как таблицы и определяемые пользователем функции. В результате отсутствует зависимость между представлением и объектами, на которые оно ссылается. Вы можете создать представление, даже если указанные объекты не существуют. Поскольку нет зависимости, вы можете удалить или изменить объект, на который имеется ссылка, не затрагивая представление

Для получения дополнительной информации

https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_VIEW.html

person demircioglu    schedule 04.06.2019
comment
Перед реализацией NO SCHEMA BINDING необходимо учитывать недостатки. Без привязки схемы можно будет изменить базовую таблицу таким образом, чтобы это нарушило представление, без каких-либо предупреждений или ошибок, генерируемых до следующего запроса представления. Некоторые инструменты также не смогут видеть информацию о столбцах для представлений, не имеющих привязки к схеме. - person Nathan Griffiths; 05.06.2019
comment
Разобрался, принял к сведению - это лучшее решение, с которым я могу работать. - person Shmuel Milavski; 05.06.2019

У меня была эта проблема недавно, и проблема была немного другой.

Я обнаружил, что пользователю, создавшему представление, также необходимы разрешения на ВЫБОР в базовых таблицах.

person Shane    schedule 03.06.2020