Пользовательские и вторичные роли

Управление, управление данными и совместная работа в Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Проблема плоских ролевых сценариев

Список аналитиков, связанных с различными привилегиями.

Управление, управление данными и совместная работа в Snowflake

Роли доступа vs функциональные роли

Сравнение ролей доступа и функциональных ролей с точки зрения наследования

  • Роли доступа содержат конкретные привилегии на конкретные объекты
  • Функциональные роли находятся выше и наследуют роли доступа
1 [Snowflake: Aligning Object Access with Business Functions](https://docs.snowflake.com/en/user-guide/security-access-control-considerations#aligning-object-access-with-business-functions)
Управление, управление данными и совместная работа в Snowflake

Принцип работы

Принцип работы на практике

  • Роли доступа содержат конкретные привилегии
  • Функциональные роли наследуют одну или несколько ролей доступа
  • Пользователям назначаются функциональные роли
Управление, управление данными и совместная работа в Snowflake

Построение иерархии в SQL

Шаг 1: Создайте роль доступа и предоставьте ей привилегии на объекты

CREATE ROLE credit_read;
GRANT USAGE ON DATABASE claro_db 
TO ROLE credit_read;
GRANT USAGE ON SCHEMA claro_db.core 
TO ROLE credit_read;
GRANT SELECT ON TABLE core.credit_scores
  TO ROLE credit_read;

Шаг 2: Создайте функциональную роль и унаследуйте роль доступа

CREATE ROLE analyst;
GRANT ROLE credit_read TO ROLE analyst;

Шаг 3: Назначьте функциональную роль пользователю

GRANT ROLE analyst TO USER ana;
Управление, управление данными и совместная работа в Snowflake

Роли аккаунта vs роли базы данных

Роли аккаунта Роли базы данных
Область действия Любая база данных или схема Ограничена одной базой данных
Назначаются пользователям? Да Нет — предоставляются роли аккаунта
SQL CREATE ROLE CREATE DATABASE ROLE
Применение Представляют функции в рамках аккаунта Группируют доступ к объектам одной БД
Управление, управление данными и совместная работа в Snowflake

Вторичные роли

  • Первичная роль сессии задаётся командой USE ROLE <Role Name>
  • По умолчанию вторичные роли установлены на ALL: активны все назначенные роли
  • Команда USE SECONDARY ROLES <role_name> активирует конкретное подмножество

  • USE SECONDARY ROLES NONE — ограничить сессию только первичной ролью

Управление вторичными ролями в сессии

USE SECONDARY ROLES ALL;
USE SECONDARY ROLES <role_name>;
USE SECONDARY ROLES NONE;
1 [Snowflake BCR-1692: Secondary Roles Default Change](https://docs.snowflake.com/en/release-notes/bcr-bundles/2024_08/bcr-1692)
Управление, управление данными и совместная работа в Snowflake

Будущие привилегии (Future Grants)

Автоматически предоставлять SELECT на новые таблицы, добавляемые в схему

GRANT SELECT ON FUTURE TABLES
  IN SCHEMA core
  TO ROLE credit_read;
Управление, управление данными и совместная работа в Snowflake

Давайте попрактикуемся!

Управление, управление данными и совместная работа в Snowflake

Preparing Video For Download...