6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ZOZOAdvent Calendar 2023

Day 12

dbtからBigQueryに接続する際にADC経由で認証する

Last updated at Posted at 2023-12-11

本記事は ZOZO Advent Calendar 2023 シリーズ 7 の 12 日目の記事です。

概要

dbt-core (OSS版)を Google Cloud 上の何らかの実行環境で動かす場合、 BigQuery に接続する際に json キーなしで認証できるとセキュリティ面で安心です。
今回は Application Default Credentials (ADC) を使って認証するために dbt 側で行う設定を紹介します。

dbtの profiles.yml の設定

結論としては以下のように method として oauth を使用して BigQuery に接続するようにします。

profiles.yml
your_project:
  target: dev
  outputs:
    dev:
      dataset: your_dataset
      job_execution_timeout_seconds: 300
      job_retries: 1
      location: US
      method: oauth # ADC経由で認証する場合は oauth を指定
      priority: interactive
      project: your_project_id
      threads: 8
      type: bigquery

dbt の公式ドキュメントを読むと、サービスアカウント経由の場合は method として service-account を使用しなければならないのかと思い混乱しましたが、「Why would I want to impersonate a service account?」をクリックして開くとちゃんと書かれていました。
https://docs.getdbt.com/docs/core/connect-data-platform/bigquery-setup#service-account-impersonation

検証

試しにサービスアカウントを作成し、そのサービスアカウントと紐づけた Compute Engine (GCE) の VM インスタンスを立ち上げます。
この方法は公式のドキュメントを参照ください。

VM インスタンス上で dbt インストールを行います。

pip install dbt-core dbt-bigquery

次にdbt init を実行します。
デフォルトでサンプルモデルが実装されているので、そのまま dbt buildを実行します。
スクリーンショット 2023-12-08 22.49.01.png

BigQuery のコンソールからジョブ履歴を閲覧すると、最初に紐づけたサービスアカウントでクエリ実行されていることを確認できました。
スクリーンショット 2023-12-08 22.54.01.png

まとめ

本記事では dbt か らBigQuery に接続する際に ADC 経由で認証する方法を紹介しました。
ドキュメントをよく読めば書いてあるのですが、恥ずかしながら見落としてハマってしまったので記事にしてみました。

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?