Snowflakeでのdbtプロジェクトのアクセス制御

次のコマンドは、dbtプロジェクトオブジェクトに一般的に付与される権限を示しています。

  • ワークスペース内からのデプロイなど、dbtプロジェクトオブジェクトを作成する権限を付与するには

    GRANT CREATE DBT PROJECT ON SCHEMA my_database.my_schema TO ROLE my_role
    
    Copy
  • ワークスペースをdbtプロジェクトオブジェクトに接続するなど、dbtプロジェクトオブジェクトを変更またはドロップ(削除)する権限を付与するには

    GRANT OWNERSHIP ON DBT PROJECT my_dbt_project_object TO ROLE my_role
    
    Copy
  • dbtプロジェクトオブジェクトを実行し、ファイルをリストまたは取得する権限を付与するには

    GRANT USAGE ON DBT PROJECT my_dbt_project_object TO ROLE my_role
    
    Copy

Roles and privileges for dbt project deployment

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

Similarly, deploying a dbt project from SQL or CLI initially uses the role in the worksheet or connection.toml, respectively, then uses the role specified in the command. The actual compilation during deployment uses the role within the target profile in profiles.yml, unless the object has the DEFAULT_TARGET attribute, which takes precedence.

dbtプロジェクト実行のロールと権限

dbtプロジェクトを実行すると、実行のメソッドに応じて、実行を実行するロールと、dbt run または build コマンドを指定したときに出力を実体化するロールが表示されます。

SQL または CLI からの実行

EXECUTEDBTPROJECT で指定されたdbtコマンドは、プロジェクトの profiles.yml ファイルの outputs ブロックで指定された role の権限で実行します。操作はさらに、EXECUTE DBT PROJECT を呼び出すSnowflakeユーザーに付与された権限のみに制限されます。指定されたユーザーとロールの両方に、warehouse を使用する権限、プロジェクトの profiles.yml ファイルで指定されている database および schema で操作を実行する権限、そしてdbtモデルが指定する他のSnowflakeオブジェクトで操作を実行する権限が必要です。

ワークスペース内からの実行

ワークスペース内からプロジェクトのdbt Run または Build コマンドを選択することで、プロジェクトの profiles.yml ファイルで定義されているロールと、Snowflakeユーザーのすべてのセカンダリロール、その両方の role を使用してターゲット出力を実体化します。指定されたユーザーとロールの両方に、warehouse を使用する権限、プロジェクトの profiles.yml ファイルで指定されている database および schema で操作を実行する権限、そしてdbtモデルが指定する他のSnowflakeオブジェクトで操作を実行する権限が必要です。

ワークスペース内からのスケジュールされた実行

ワークスペース内からdbtプロジェクトオブジェクトの実行をスケジュールすると、ユーザー管理のタスクが作成されます。ワークスペース内からタスクを作成するには、ユーザーは CREATETASK 参照情報の:ref:label-create_task_sql_access_control で説明されている権限のあるロールを持っている必要があります。Snowflakeは、タスク所有者の権限でタスクを実行しますが、タスクの実行はユーザーに関連付けられていません。詳細については、 システムサービスによって実行されるタスク をご参照ください。