Таблицы метаданных ролей в снежинке - PullRequest
0 голосов
/ 30 января 2020

Мне нужно проверить роли и гранты, предоставленные пользователям, но из таблиц метаданных. По сути, мне нужна таблица метаданных, где я могу запросить это, используя несколько ролей, например. XXX, YYY, ZZZ. Мне нужно это, чтобы получить иерархию ролей, которые могли быть предоставлены.

Я могу показать гранты роли XXX - это даст мне всех пользователей / ролей, которым предоставлена ​​эта роль, но я приходится делать по одной роли за раз. Если я сделаю

SELECT * 
FROM SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_USERS 
WHERE ROLE='XXX' 
AND DELETED_ON IS null;

, я получу только пользователей, которым предоставлена ​​эта роль, а не сами роли. Если я проверю таблицу GRANTS_TO_ROLES - она ​​дает мне действительные привилегии, предоставленные для этой роли, но не для других ролей, которым данная роль назначена.

Ответы [ 2 ]

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

Вы упомянули иерархию - я подозреваю, что вы хотите увидеть, какие роли предоставлены другим ролям ..

Попробуйте это:

show grants of role Your_Role

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

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

Что вы можете сделать, это использовать синтаксис SHOW, а не выбирать:

show roles in account;

предоставит вам полный список ролей (все еще исходящих из метаданных). Не уверен, что именно вы хотите с ними делать дальше, но в случае, если вы действительно захотите обработать результаты как запрос, вы можете следовать за ним по

select * from table(result_scan(last_query_id()));

и использовать для объединить с другими таблицами или просто скопировать во временную таблицу какого-либо типа и присоединиться дальше оттуда

...