В Snowflake, требует ли функциональность «Load Table» целевой таблицы для того же пользователя / роли, которая выполняет загрузку? - PullRequest
1 голос
/ 26 февраля 2020

Мы определили схему MANUAL, в которую мы хотели бы создавать таблицы, которые пользователи загружают "вручную" через таблицы веб-интерфейса >> таблица >> Функциональность Load Table.

Часть DDL должна быть сделано dba, но тогда, когда когда-либо данные должны быть изменены b, тогда соответствующий пользователь может внести изменения.

Затем мы имеем схему, роль и пользователя, пример таблицы "DUMMY", формат файла (CSV) готов (все определяется dba), также пользователю с ручной загрузкой предоставляются права DML на таблицу. Но тогда загрузка таблицы завершается неудачно:

There was an error while trying to stage "DUMMY.csv".
Reason: SQL access control error: Insufficient privileges to operate on table stage 'DUMMY'

Так можем ли мы каким-то образом предоставить этап таблицы роли / пользователю ручной загрузки? Или нам нужно предоставить права DDL, чтобы таблица создавалась тем же пользователем, который загружает в нее данные?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Попробуйте это для этапов, управляемых Snowflake:

grant read on stage DUMMY to role MANUAL_ROLE;
grant write on stage DUMMY to role MANUAL_ROLE;

Это только в том случае, если этап не относится к типу Snowflake Managed и подключен к хранилищу, отличному от Snowflake, в AWS, Azure, или GCP:

grant usage on stage DUMMY to role MANUAL_ROLE;
0 голосов
/ 26 февраля 2020

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

В качестве обходного пути вы можете отменить существующие привилегии роли, а затем изменить владельца таблицы:

revoke all on table DUMMY from role MANUAL_ROLE;
grant ownership on table DUMMY to role MANUAL_ROLE;

Я предположил, что у вас есть роль с именем MANUAL_ROLE, которая назначена пользователям.

...