Можно ли защитить столбцы вида в снежинке? - PullRequest
0 голосов
/ 14 апреля 2020

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

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

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Право изменять вид - все или ничего. Он не ограничивает, какие столбцы роль может или не может изменять, удалять, добавлять и т. Д. c. Однако, поскольку Snowflake позволяет использовать представления как часть другого представления, это может стать частью общего подхода вашей организации к выполнению того, что вы ищете.

Например, создайте базовое представление, содержащее все защищенные столбцы. Тщательно контролируйте доступ к ролям, которые могут изменить базовое представление. В базовом представлении создайте виды сверху, которые могут изменить менее привилегированные роли.

1 голос
/ 14 апреля 2020

В Snowflake вносить изменения в указанное представление могут только пользователи с ролями, у которых есть права на обновление представления путем изменения его определения. Если указанная роль c имеет привилегии для замены определения представления, не существует механизма, который не позволял бы им переименовывать или удалять столбцы.

Журналы можно увидеть в функции QUERY_HISTORY в Snowflake Information_schema. Функции дают обширную информацию о том, какой пользователь выполнил запрос и время его выполнения. Запрос, подобный приведенному ниже, принесет соответствующую информацию:

select user_name, role_name, query_text, start_time, end_time from table(information_schema.query_history())

, где query_text или "% replace view%" order by start_time desc;

...