Zugriffssteuerung für dbt-Projekte in Snowflake

Die folgenden Befehle veranschaulichen häufig gewährte Berechtigungen für dbt-Projektobjekte.

  • So erteilen Sie Berechtigungen zum Erstellen eines dbt-Projektobjekts, einschließlich dessen Bereitstellung innerhalb eines Arbeitsbereichs:

    GRANT CREATE DBT PROJECT ON SCHEMA my_database.my_schema TO ROLE my_role;
    
  • So gewähren Sie Berechtigungen zum Ändern oder Entfernen (Löschen) eines dbt-Projektobjekts, einschließlich der Verbindung eines Arbeitsbereichs mit einem dbt-Projektobjekt:

    GRANT OWNERSHIP ON DBT PROJECT my_dbt_project_object TO ROLE my_role;
    
  • So gewähren Sie Berechtigungen zum Ausführen eines dbt-Projektobjekts und zum Auflisten oder Abrufen von Dateien:

    GRANT USAGE ON DBT PROJECT my_dbt_project_object TO ROLE my_role;
    
  • To view a dbt project object in Snowsight, you must use a role that has the MONITOR privilege on that dbt project object. Without this privilege, you can’t access the project details, run history, or monitoring information:

    GRANT MONITOR ON DBT PROJECT my_dbt_project_object TO ROLE my_role;
    

Weitere Informationen dazu finden Sie unter Berechtigungen für dbt-Projektobjekte.

Rollen und Berechtigungen für die Bereitstellung von dbt-Projekten

Deploying a dbt project from Snowsight initially uses the role you select from Connect » Deploy dbt project. During compilation, the dbt project object uses the role specified in the target profile in the profiles.yml file, unless the object has the DEFAULT_TARGET attribute, which takes precedence.

Ähnlich verhält es sich mit der Bereitstellung eines dbt-Projekts von SQL oder CLI, bei der zunächst die Rolle im Arbeitsblatt bzw. connection.toml und dann die im Befehl angegebene Rolle verwendet wird. Die eigentliche Kompilierung während der Bereitstellung verwendet die Rolle innerhalb des Zielprofils in profiles.yml, es sei denn, das Objekt verfügt über das DEFAULT_TARGET-Attribut, das Vorrang hat.

Rollen und Berechtigungen für die Ausführung von dbt-Projekten

When you execute a dbt project object, the roles that perform execution and that materialize output when you specify the dbt run or build commands depend on the method of execution.

Ausführung von SQL oder CLI

Der in EXECUTE DBT PROJECT angegebene dbt-Befehl wird mit den Berechtigungen der role ausgeführt, die im outputs-Block der Datei profiles.yml des Projekts angegeben ist. Außerdem sind Vorgänge auf die Berechtigungen beschränkt, die dem Snowflake-Benutzer gewährt werden, der EXECUTE DBT PROJECT aufruft. Sowohl der Benutzer als auch die angegebene Rolle müssen über die erforderlichen Berechtigungen verfügen, um das warehouse verwenden zu können, Vorgänge für database und schema auszuführen, die in der Datei profiles.yml des Projekts angegeben sind, und Vorgänge für alle anderen Snowflake-Objekten auszuführen, die das dbt-Modell angibt.

Ausführung innerhalb von Arbeitsbereichen

Choosing the dbt Run or Build command for a project from within a workspace materializes target output using the role defined in the project’s profiles.yml file. Both the user and the role specified must have the required privileges to use the warehouse, perform operations on the database and schema that are specified in the project’s profiles.yml file, and perform operations on any other Snowflake objects that the dbt model specifies.

Geplante Ausführung innerhalb von Arbeitsbereichen

Wenn Sie die Ausführung von dbt-Projektobjekten über Arbeitsbereiche hinweg planen, werden benutzerverwaltete Aufgaben erstellt. Um eine Aufgabe aus Arbeitsbereichen heraus erstellen zu können, muss ein Benutzer über eine Rolle mit den unter Anforderungen an die Zugriffssteuerung in der Referenz zu CREATE TASK beschriebenen Berechtigungen verfügen. Snowflake führt Aufgaben mit den Berechtigungen des Aufgabeneigentümer aus, aber die Aufgabenausführungen sind dem Benutzer nicht zugeordnet. Weitere Informationen dazu finden Sie unter Aufgaben, die von einem Systemdienst ausgeführt werden.