Как получить список баз данных для определенного пользователя - PullRequest
0 голосов
/ 02 апреля 2020

Как администратор, я хочу помочь пользователю выбрать базу данных, схему, таблицу в веб-интерфейсе. У меня есть аккаунт с ролью accountadmin. Необходимо по логину пользователя получить все доступные базы данных, схемы, таблицы. Например, как использование представления «MASTER.INFORMATION_SCHEMA.DATABASES» с параметрами. MASTER.INFORMATION_SCHEMA.DATABASES возвращает базы данных только для текущего пользователя. Необходимо иметь возможность определить пользователя.

1 Ответ

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

Snowflake использует доступ на основе ролей, поэтому пользователям не предоставляется доступ непосредственно к базе данных, но их роль есть.

Чтобы узнать, какие роли имеют доступ к каким базам данных, вы можете получить эту информацию из базы данных Snowflake, к которой вам следует иметь доступ, если у вас есть роль accountadmin:

select 
    roles.privilege,
    roles.name as database_name, 
    roles.grantee_name as role_name
from snowflake.account_usage.grants_to_roles roles
where roles.granted_on = 'DATABASE'
;

Обратите внимание, что Я думаю, что эта таблица показывает только те привилегии, которые были предоставлены непосредственно для роли, и не показывает привилегии, которые достигаются через их иерархические отношения. Вы можете написать более сложный запрос, чтобы выяснить привилегии, предоставленные через иерархию и пользователю, используя рекурсивный запрос на grants_to_roles вместе с таблицами grants_to_users. Я думаю ¯ \ _ (ツ) _ / ¯

...