Как создать роль администратора безопасности snowflake и в то же время ограничить разрешение только для одной базы данных

#snowflake-cloud-data-platform

Вопрос:

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

Спасибо, Алекс

Комментарии:

1. Привет — какие из привилегий, которыми обладает SECURITYADMIN, которые имеют отношение к базам данных, вы хотите, чтобы эта новая роль имела?

Ответ №1:

SECURITYADMIN-это роль, созданная по умолчанию в Snowflake, и многие его разрешения не связаны с базой данных (например, управление ролями и пользователями). Действительно, большая часть грантов, связанных с базой данных, принадлежит роли системного администратора.

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

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

 GRANT ALL PRIVILEGES ON DATABASE my_db TO ROLE my_custom_role;
 

Ответ №2:

Роли-это объекты на уровне учетной записи, а не на уровне БД. Поэтому я предполагаю, что вы на самом деле пытаетесь выполнять ту же роль mgmt, что и SECURITYADMIN, но на уровне бд. В таком случае:

 use role SECURITYADMIN;
create role SECURITYADMIN_DB1;
grant create user, create role to SECURITYADMIN_DB1;
 

После этого создайте роли доступа для своей БД:
https://docs.snowflake.com/en/user-guide/security-access-control-considerations.html#aligning-object-access-with-business-functions

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