Custom Roles และ Secondary Roles

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

ปัญหาของ Flat Role Scenarios

รายชื่อนักวิเคราะห์ที่ชี้ไปยัง Privilege ต่างๆ

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Access Roles vs Functional Roles

แสดงความแตกต่างระหว่าง Access Roles และ Functional Roles ในแง่ของการสืบทอด

  • Access Roles เก็บสิทธิ์เฉพาะสำหรับอ็อบเจกต์ที่กำหนด
  • Functional Roles อยู่ระดับบนและสืบทอดจาก Access Roles
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

หลักการทำงาน

การใช้งานจริงในทางปฏิบัติ

  • Access Roles เก็บสิทธิ์เฉพาะ
  • Functional Roles สืบทอดจาก Access Roles หนึ่งหรือหลายตัว
  • ผู้ใช้ถูกกำหนดให้ Functional Roles
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

สร้าง Hierarchy ด้วย SQL

ขั้นตอนที่ 1: สร้าง Access Role และมอบสิทธิ์อ็อบเจกต์

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: สร้าง Functional Role และสืบทอด Access Role

CREATE ROLE analyst;
GRANT ROLE credit_read TO ROLE analyst;

ขั้นตอนที่ 3: กำหนด Functional Role ให้ผู้ใช้

GRANT ROLE analyst TO USER ana;
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Account Roles vs Database Roles

Account Roles Database Roles
ขอบเขต ครอบคลุมทุก Database หรือ Schema จำกัดเฉพาะ Database เดียว
กำหนดให้ผู้ใช้ได้? ได้ ไม่ได้ — ต้องมอบให้ Account Role แทน
SQL CREATE ROLE CREATE DATABASE ROLE
กรณีใช้งาน แทนหน้าที่งานในระดับ Account รวมสิทธิ์เข้าถึงอ็อบเจกต์ใน Database เดียว
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Secondary Roles

  • แต่ละ Session กำหนด Primary Role ด้วย USE ROLE <Role Name>
  • ค่าเริ่มต้น Secondary Roles ถูกตั้งเป็น ALL: roles ทั้งหมดที่ได้รับมอบหมายจะทำงาน
  • ใช้ USE SECONDARY ROLES <role_name> เพื่อเปิดใช้งาน Role เฉพาะกลุ่ม

  • USE SECONDARY ROLES NONE เพื่อจำกัดให้ใช้เฉพาะ Primary Role

ควบคุม Secondary Roles ใน Session

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 อัตโนมัติสำหรับตารางใหม่ที่เพิ่มใน Schema นี้

GRANT SELECT ON FUTURE TABLES
  IN SCHEMA core
  TO ROLE credit_read;
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

มาฝึกกันเลย!

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Preparing Video For Download...