Benutzerdefinierte Rollen und Sekundärrollen

Snowflake-Management, Governance & Zusammenarbeit

Emily Melhuish

Technical Curriculum Developer, Snowflake

Das Problem flacher Rollenszenarien

Liste von Analysten, die auf verschiedene Berechtigungen verweisen.

Snowflake-Management, Governance & Zusammenarbeit

Access-Rollen vs. Funktionsrollen

Aufteilung: Unterschied zwischen Access- und Funktionsrollen in Bezug auf vererbte Rollen

  • Access-Rollen haben konkrete Berechtigungen auf Objekten
  • Funktionsrollen stehen darüber und erben von Access-Rollen
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-Management, Governance & Zusammenarbeit

So funktioniert’s

So funktioniert es in der Praxis

  • Access-Rollen halten konkrete Berechtigungen
  • Funktionsrollen erben von einer oder mehreren Access-Rollen
  • Nutzern werden Funktionsrollen zugewiesen
Snowflake-Management, Governance & Zusammenarbeit

Die Hierarchie in SQL aufbauen

Schritt 1: Access-Rolle anlegen und Objektberechtigungen vergeben

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;

Schritt 2: Funktionsrolle anlegen und Access-Rolle erben

CREATE ROLE analyst;
GRANT ROLE credit_read TO ROLE analyst;

Schritt 3: Funktionsrolle einem Nutzer zuweisen

GRANT ROLE analyst TO USER ana;
Snowflake-Management, Governance & Zusammenarbeit

Account- vs. Datenbank-Rollen

Account-Rollen Datenbank-Rollen
Geltungsbereich Über alle Datenbanken/Schemata hinweg Auf eine Datenbank beschränkt
Nutzern zugewiesen? Ja Nein – an eine Account-Rolle vergeben
SQL CREATE ROLE CREATE DATABASE ROLE
Anwendungsfall Jobfunktionen im Account abbilden Objektzugriff innerhalb einer DB bündeln
Snowflake-Management, Governance & Zusammenarbeit

Sekundärrollen

  • Jede Session hat eine Primärrolle: USE ROLE <Role Name>
  • Standard: Sekundärrollen = ALL; alle zugewiesenen Rollen aktiv
  • Mit USE SECONDARY ROLES <role_name> einen Teil aktivieren

  • USE SECONDARY ROLES NONE beschränkt auf nur die Primärrolle

Sekundärrollen in einer Session steuern

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-Management, Governance & Zusammenarbeit

Zukünftige Berechtigungen (Future Grants)

Automatisch SELECT auf alle neuen Tabellen in diesem Schema gewähren

GRANT SELECT ON FUTURE TABLES
  IN SCHEMA core
  TO ROLE credit_read;
Snowflake-Management, Governance & Zusammenarbeit

Lass uns üben!

Snowflake-Management, Governance & Zusammenarbeit

Preparing Video For Download...