Snowflake Connector for Google Analytics Raw Data のコネクタを OAuth 2.0 で認証する
データ事業本部のはんざわです。
Google BigQuery にエクスポートされた Google Analytics 4 のデータを Snowflake に転送したい場合、「Snowflake Connector for Google Analytics Raw Data」を使うことで簡単かつ低コストでデータの転送が実現できます。
このコネクタでは「サービスアカウント」と「OAuth 2.0」の 2 種類の認証方法が提供されていますが、今回のブログでは OAuth 2.0 を使った認証方法を紹介します。
Snowflake Connector for Google Analytics Raw Data とは?
「Snowflake Connector for Google Analytics Raw Data」は、GA4の集計前(Raw)のイベントデータを Snowflake に同期できるコネクタです。これにより、より詳細なデータ分析やカスタム集計が可能になります。
認証方法としては以下の 2 種類が用意されています。
- サービスアカウント認証
- OAuth 2.0 認証
サービスアカウントによる認証方法については、以下のブログ記事を参考にしてください。
今回は、OAuth 2.0 認証の設定手順を紹介します。
また、集計後のデータのみで十分な場合は、「Snowflake Connector for Google Analytics Aggregate Data」の利用も検討してください。
前提条件
-
GA4 の BigQuery エクスポート設定が完了していること
- BigQuery 上に
analytics_<プロパティ ID>
というデータセットが作成されている必要があります。 - GA4 から BigQuery へのエクスポート設定手順については本記事では割愛します。
- BigQuery 上に
-
Google Cloud プロジェクトで Cloud Resource Manager API が有効になっていること
-
GA4 データがエクスポートされている Google Cloud プロジェクトが組織に属しており、認証を行うユーザーも同じ組織のメンバーであることが望ましい
- 今回の検証では、上記の両方の条件を満たしていることを前提としています。
- いずれかの条件を満たしていない場合、外部ユーザー認証扱いとなり、認証の有効期限が 7 日間となります。そのため、毎週認証情報を更新する必要があります。
-
Snowflake のトライアルアカウント期間が終了していること
- コネクタの仕様上、トライアルアカウントでは利用できません。
- 有効な Snowflake アカウントを用意してください。
設定手順
全体の流れは、Snowflake
→ Google Cloud
→ Snowflake
の順に設定を進めていきます。
1. Snowflake の設定 1
まずは以下の公式ドキュメントを参考に、Snowflake 側の設定を行います。
1.1. コネクタのインストール
- ACCOUNTADMIN ロールに変更
コネクタをインストールするには、ACCOUNTADMIN
のロールが必要です。
- Marketplace からコネクタを検索・インストール
Snowflake のコンソール画面から Data Products
→ Marketplace
に移動します。
Snowflake Connector for Google Analytics Raw Data
と検索して選択し、Get
をクリックします。
- ウェアハウスとアプリケーション名の入力
アプリケーションのインストール時に使用するウェアハウスとアプリケーション名を入力し、Get
をクリックします。
1.2. リダイレクト URL の確認
インストールが完了したら、Snowflake コンソールの Data Products
→ Apps
から、インストールしたコネクタを選択します。
表示された画面の赤枠部分にリダイレクト URL があるので、コピーしておきます。
これで一旦、Snowflake 側の設定は完了です。
続いて、Google Cloud 側の設定に進みます。
2. Google Cloud の設定
以下の公式ドキュメントを参考に進めます。
2.1. OAuth 同意画面の設定
Google Cloud コンソールで APIとサービス
-> OAuth 同意画面
へ移動します。
「開始」をクリックして設定を進めます。
- アプリ情報の入力
- アプリ名
Snowflake Connector for Google Analytics Raw Data
- 任意の名前で OK
- ユーザーサポートメール
- ご自身のメールアドレス
- ユーザーの種類の選択
「内部」を選択してください。
※「外部」を選択した場合、認証情報の有効期限が 7 日間となり、毎週更新が必要になります。
- 連絡先情報の入力と同意
メールアドレスを入力し、同意のチェックボックスをオンにして「続行」を選択します。
- スコープの追加
データアクセス
→ スコープを追加または削除
をクリックします。
「スコープの手動追加」に以下のテキストを入力し、「テーブルに追加」をクリックします。
https://www.googleapis.com/auth/bigquery.readonly
https://www.googleapis.com/auth/cloudplatformprojects.readonly
2つのスコープ両方にチェックが入っていることを確認し、「更新」をクリックします。
これで OAuth 同意画面の設定は完了です。
2.2. OAuth クライアント ID の設定
Google Cloud のコンソールから APIとサービス
→ 認証情報
へ移動します。
以下のキャプチャのように 認証情報を作成
→ OAuth クライアント ID
を選択します。
- OAuth クライアント ID の作成
-
アプリケーションの種類
- ウェブアプリケーション
-
名前
Snowflake Connector for Google Analytics Raw Data ID
- 任意の名前で OK
-
承認済みのリダイレクト URL
- 「1.2. リダイレクト URL の確認」でコピーした URL を入力
- クライアント ID とクライアントシークレットの確認
作成後に表示されるクライアントIDとクライアントシークレットは、後ほど Snowflake 側で使用します。
これで Google Cloud の設定は完了です。
3. Snowflake の設定 2
再び Snowflake 側に戻って設定を進めます。
コネクタの構成
- 「Mark as done」をクリック
Google Cloud 側の設定が完了したら、Snowflake のコネクタ画面で「Mark as done」をクリックします。
- コネクタのリソース設定
コネクタで使用するリソース(ウェアハウス等)の設定を行います。今回は全てデフォルトのリソースを利用します。
※ 同期用のウェアハウスは、コネクタインストール時に指定したものとは別のウェアハウスを使用してください。
- コネクタの認証設定
認証方式で「OAuth2」を選択し、「2.2. OAuth クライアント ID の設定」で取得したクライアント ID とクライアントシークレットを入力します。
- Google アカウントで認証
入力後、Google アカウントで認証を求められるので許可します。
しばらくすると、認証成功の通知が表示されます。これで認証は完了です。
データの同期
- 同期対象プロジェクトの選択
同期する Google Cloud プロジェクトを選択し、「Start sync」をクリックします。
- 同期の確認
すぐに同期が始まり、しばらくすると同期が完了します。
- データの確認
宛先のスキーマを確認すると、以下のようにデータが正常に格納されていました。
認証方法の比較
冒頭で説明したとおり、このコネクタには「サービスアカウント認証」と「OAuth 認証」の2種類の認証方法があります。
それぞれの認証方法について、私見を以下の表にまとめました。
(あくまで個人的な見解です)
概要 | 利用する時の懸念点 | 懸念点の回避策 | |
---|---|---|---|
サービスアカウント認証 | GA4 のデータセットにアクセスする権限を持ったサービスアカウントのキーでデータを同期する | サービスアカウントのキーの発行はあまり推奨されておらず、組織ポリシーで禁止されている場合もある | 組織ポリシーで禁止されている場合は、OAuth認証を利用する 許可されている場合は、キーの漏洩検知機能と併用し、取り扱いには細心の注意を払う |
OAuth 認証 | GA4 のデータセットにアクセスする権限を持った特定の Google ユーザーの同意に基づいて発行された認証情報でデータを同期する | 特定の Google ユーザーに紐づくため、そのユーザーの権限変更や退職時に同期が停止する属人化のリスクがある | 属人化対策として、新規で連携専用の Google ユーザーを作成し、そのアカウントで認証を行う |
どちらの認証方法が適しているかは、組織の運用方針やセキュリティポリシーによって異なります。
自社の状況にあわせて、最適な認証方法を選択してください。
本ブログが参考になれば幸いです。