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
Roles and privileges for dbt project deployment¶
Snowsight からのdbtプロジェクトのデプロイは、最初、デプロイダイアログで選択されたロール(つまり、Connect » Deploy dbt project から選択したロール)を使用します。コンパイル中、dbtプロジェクトは、オブジェクトに優先される DEFAULT_TARGET 属性がない限り、 profiles.yml のターゲットプロファイルで指定されたロールを使用します。
同様に、SQL または CLI からdbtプロジェクトをデプロイすると、最初はそれぞれ、ワークシートのロール、または connection.toml を使用し、次にコマンドで指定されたロールを使用します。デプロイ中の実際のコンパイルでは、オブジェクトに優先される DEFAULT_TARGET 属性がない限り、 profiles.yml のターゲットプロファイル内のロールが使用されます。
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は、タスク所有者の権限でタスクを実行しますが、タスクの実行はユーザーに関連付けられていません。詳細については、 システムサービスによって実行されるタスク をご参照ください。