dbt Projects on Snowflakeで開発者を増やすときの流れを確かめてみた

dbt Projects on Snowflakeで開発者を増やすときの流れを確かめてみた

2025.11.13

さがらです。

dbt Projects on Snowflakeで開発者を増やすときの流れを確かめてみたので、その内容について本記事でまとめてみます。

事前準備

以下のブログに沿って、あるユーザーがdbt Projects on Snowflakeのセットアップを終えた状態と仮定して、本記事の内容を行っていきます。GitHubへの認証はOAuth2を使用します。

https://dev.classmethod.jp/articles/dbt-projects-on-snowflake-initial-setup-prod-execution-summary/

やってみた

GitHubのユーザー招待&リポジトリへの招待

まず前置きとして、GitHubのユーザー招待と対象のリポジトリへの招待を行っておきます。

※以下は参考になりそうなGitHubの公式ドキュメントを貼っておきます。

https://docs.github.com/ja/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization

https://docs.github.com/ja/repositories/managing-your-repositorys-settings-and-features/repository-access-and-collaboration/inviting-collaborators-to-a-personal-repository

Snowflakeのユーザー招待&ロールの付与

対象者がSnowflakeのユーザーでない場合は招待し、ロールも付与します。

※以下はユーザー作成とロール付与に関するとても簡素なサンプルクエリです。

USE ROLE SECURITYADMIN;

CREATE USER <招待するユーザー名>
  PASSWORD = '<任意のPW>'
  EMAIL = '<ユーザーのメールアドレス>'
  MUST_CHANGE_PASSWORD = TRUE;

GRANT ROLE <dbtの開発用ロール> TO USER <招待するユーザー名>;

ちなみに、メールアドレスを設定してverificationをしておかないと、Workspaceでブランチ作成時に下図のようにエラーが起きます!

2025-11-13_11h29_27

対象のユーザーでログインし、Workspaceをセットアップ

先程作成したユーザーでログインします。

メールアドレスのverificationがまだの場合は、SettingsからResend verificationを押して、verificationを行います。

2025-11-13_11h36_46

2025-11-13_11h38_22

2025-11-13_11h43_47

ロールを付与した開発用ロールに切り替え、Workspaceを起動します。

2025-11-13_11h16_08

左上のWorkspace名をクリックし、From Git repositoryを押します。

2025-11-13_11h17_36

下図のようにRepository URLWorkspace nameを入力し、API integrationは開発用ロールに付与されたExternal Access Integrationを設定した上で、認証方法はOAuth2を選択します。

この上で、Sign inを押します。

2025-11-13_11h20_48

表示される画面に沿って、認証を進めます。

2025-11-13_11h22_03

無事に認証がされると、下図のようにSigned inと表示されます。この状態でCreateを押します。

2025-11-13_11h23_01

すると、入力したリポジトリの内容がクローンされ、Workspace内でdbtの開発ができるようになりました!

2025-11-13_11h26_38

実際の開発手順については、以下のブログの「dbtの開発」章が参考になると思います。

https://dev.classmethod.jp/articles/dbt-projects-on-snowflake-initial-setup-prod-execution-summary/#dbt%25E3%2581%25AE%25E9%2596%258B%25E7%2599%25BA

おまけ:開発者用ロールだけ付与していた場合、Workspaceから本番環境のtargetを指定したdbtコマンド実行はできるのか?

もう一つおまけなのですが、開発者ユーザーには開発者用のスキーマだけ権限のあるロールを付与していた場合、Workspaceから本番環境のtargetを指定したdbtコマンド実行はできるのか、確かめてみました。

まず参考までに、profiles.ymlは下図のようになっており、開発者ユーザーにはDBT_PROD_ROLEは付与していません。

2025-11-13_11h53_04

この状態で、Workspaceからtargetをprodに設定し、何かしらのdbtコマンドを実行しようとすると、コマンドを選ぶところからできなくなっていました。

profiles.ymlの本番用のウェアハウスの権限を付与していなかったため、こうなったようです。

2025-11-13_11h54_51

そのため、profiles.ymlのwarehouseを開発用ウェアハウスに変更してdbtコマンドを実行しようと試みると、コマンドを選択して実行できました。

しかし、profiles.ymlで指定している本番用ロールに権限がないため、下図のようにエラーとなりました。ちゃんと開発と本番でロールを分けていれば、開発者用ロールから本番環境に対してデータの更新をさせないことが確認できました!

2025-11-13_11h57_14

最後に

dbt Projects on Snowflakeで開発者を増やすときの流れを確かめてみました。

基本的には権限を分けてロールを管理していれば、ユーザーに対して使用するロールを付与するだけでセットアップ可能です!

この記事をシェアする

FacebookHatena blogX

関連記事