Snowflakeでのdbtプロジェクトのアクセス制御¶
次のコマンドは、dbtプロジェクトオブジェクトに一般的に付与される権限を示しています。
ワークスペース内からのデプロイなど、dbtプロジェクトオブジェクトを作成する権限を付与するには
GRANT CREATE DBT PROJECT ON SCHEMA my_database.my_schema TO ROLE my_role
ワークスペースをdbtプロジェクトオブジェクトに接続するなど、dbtプロジェクトオブジェクトを変更またはドロップ(削除)する権限を付与するには
GRANT OWNERSHIP ON DBT PROJECT my_dbt_project_object TO ROLE my_role
dbtプロジェクトオブジェクトを実行し、ファイルをリストまたは取得する権限を付与するには
GRANT USAGE ON DBT PROJECT my_dbt_project_object TO ROLE my_role
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は、タスク所有者の権限でタスクを実行しますが、タスクの実行はユーザーに関連付けられていません。詳細については、 システムサービスによって実行されるタスク をご参照ください。