自訂角色與次要角色

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 資料庫角色

帳戶角色 資料庫角色
範圍 跨任意資料庫或結構描述(schema) 侷限於單一資料庫
指派給使用者? 否-會授予給帳戶角色
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...