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
    
    Copy
  • 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
    
    Copy
  • 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
    
    Copy

Roles and privileges for dbt project deployment

Bei der Bereitstellung eines dbt-Projekts über Snowsight wird zunächst die im Bereitstellungsdialog ausgewählte Rolle (d. h. die Rolle, die Sie unter Connect » Deploy dbt project auswählen) verwendet. Während der Kompilierung verwendet das dbt-Projekt die Rolle, die im Zielprofil in der profiles.yml-Datei angegeben ist, es sei denn, das Objekt verfügt über das DEFAULT_TARGET-Attribut, das Vorrang hat.

Ä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

Wenn Sie ein dbt-Projekt ausführen, hängen die Rollen, die die Ausführung durchführen und die Ausgabe materialisieren, wenn Sie den dbt-Befehl run oder build angeben, von der Ausführungsmethode ab.

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

Wenn Sie den dbt-Befehl Run oder Build für ein Projekt aus einem Arbeitsbereich heraus auswählen, wird die Zielausgabe unter Verwendung der in der Datei profiles.yml des Projekts definierten role und aller Sekundärrollen Ihres Snowflake-Benutzers materialisiert. Sowohl der Benutzer als auch die angegebene Rolle müssen über die erforderlichen Berechtigungen verfügen, um das warehouse verwenden zu können, Operationen für database und schema auszuführen, die in der Datei profiles.yml des Projekts angegeben sind, und Operationen für alle anderen Snowflake-Objekten auszuführen, die das dbt-Modell angibt.

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.