この記事を使用して、Pendoのデータ同期をBigQueryに直接接続します。宛先サービスアカウントと必須のCloud Storageステージングバケットを設定し、その詳細をPendoに入力します。
注:BigQueryへのデータ同期は、現在、米国およびEUリージョンのPendoサブスクリプションでのみご利用いただけます。
認証の仕組み
推奨される認証方法では、2つのサービスアカウントを使用します。
- 宛先フォームに表示されるPendoサービスアカウントは、有効期間の短い認証情報を使用して宛先サービスアカウントを引き受けます。
- Google Cloudプロジェクト内の宛先サービスアカウントには、BigQueryおよびステージングバケットへの必要なアクセス権が付与されています。
PendoサービスアカウントにBigQueryまたはCloud Storageへの直接アクセス権を付与しないでください。必要な宛先権限を持つ宛先サービスアカウントを引き継ぐ権限を付与してください。
サービスアカウントキーもサポートされていますが、長期間有効なJSONキーをPendoと共有する必要がないため、サービスアカウントの役割による認証が推奨されます。
前提条件
始める前に、以下の点を確認してください。
- Pendoのサブスクリプション管理者であるか、データ同期の設定権限を持っていること。
- 宛先のGoogle Cloudプロジェクトで、サービスアカウントとIAMバインディングを作成および管理できること。
- 宛先のBigQueryデータセットと専用のCloud Storageステージングバケットを作成または構成できること。
- Google CloudのプロジェクトID、データセット名、およびデータセットの保存場所を把握しておいてください。
ステージングバケットは必須です。BigQueryデータセットとステージングバケットにはサポートされているBigQueryの場所を使用できますが、両方のリソースで同じ場所を使用する必要があります。これは、上記のPendoリージョンの利用可能性に関する注記とは別のものです。
ステップ1. Pendoで宛先の設定を開始する
- データ同期の設定フローを開き、Google BigQueryを選択してください。
- プロジェクトIDとデータセット名を入力します。
- [認証方法]では、[サービスアカウントの役割(推奨)]を選択します。
- フォームに表示されているPendoサービスアカウントをコピーします。この値はPendo接続に固有のものです。ドキュメントに記載されているサンプルアドレスを使用しないでください。
Google Cloud を設定する間、設定フローを開いたままにしてください。
ステップ2. 宛先サービスアカウントを作成する
- 宛先を所有するGoogle Cloudプロジェクトで、Pendoデータ同期専用のサービスアカウントを作成してください。
- BigQueryデータセットが存在しない場合は、プロジェクトレベルで送信先のサービスアカウントにBigQuery Userの役割を付与します。これにより、コネクタはデータセットを作成し、ジョブを実行して、プロジェクトのメタデータを読み取ることができます。
- データセットが既に存在する場合は、以下を許可します。
-
プロジェクトレベルでの
bigquery.jobs.create。 -
移行先データセットでのBigQuery Data Owner、または次の権限を含むカスタムのデータセットレベルの役割。
bigquery.datasets.getbigquery.tables.createbigquery.tables.deletebigquery.tables.getbigquery.tables.getDatabigquery.tables.listbigquery.tables.updatebigquery.tables.updateDatabigquery.routines.getbigquery.routines.list
-
プロジェクトレベルでの
ステップ3. Pendoに宛先サービスアカウントの使用を許可する
宛先サービスアカウントで、フォームからコピーしたPendoサービスアカウントに、以下の2つの役割を付与します。
- サービスアカウントトークン作成者
- サービスアカウントユーザー
可能な限り、これらのバインディングを専用の宛先サービスアカウントに限定してください。
Google Cloud組織でドメイン制限付き共有を使用しており、Pendoサービスアカウントがブロックされている場合は、ポリシーで必要とされる顧客IDについてPendoサポートにお問い合わせください。
ステップ4. ステージングバケットを作成する
- データ同期のステージング用に、専用のCloud Storageバケットを作成してください。
- BigQueryデータセットと同じ場所を使用してください。データセットが存在しない場合は、Pendoがバケットの場所に作成します。
- バケットを非公開にしてください。均一なバケットレベルのアクセスを使用することを推奨します。
- 送信先サービスアカウントにバケットに対するストレージ管理者権限を付与します。アクセス範囲を限定する場合は、次のいずれかを使用します。
- バケットに対するStorage Legacy Bucket ReaderおよびStorage Object User、または
- 次の内容を含むカスタムのバケットレベルの役割
storage.buckets.getstorage.objects.liststorage.objects.getstorage.objects.createstorage.objects.delete
Pendoは、ステージングされたオブジェクトを読み込んだ後に削除します。追加の安全策として、2日間のオブジェクトライフサイクルルールを追加できます。
ステップ5. Pendoで宛先を入力する
- BigQueryの送信先フォームに戻ってください。
- 宛先のサービスアカウントのメールアドレスを入力してください。
- GCSバケット名とGCSバケットのリージョンを入力します。
- 接続を検証してから、続けてデータを選択します。
役割認証の代わりにキーを使用する場合:
- Google Cloudで、[IAMと管理]>[サービスアカウント]に移動し、宛先サービスアカウントを開きます。
- [キー]を開き、続いて[キーを追加]>[新しいキーを作成]を選択します。
- [JSON]を選択し、鍵を作成して、ダウンロードしたファイルを安全に保管します。同じキーを再度ダウンロードすることはできません。
- Pendoで[サービスアカウントキー]を選択し、接続先のサービスアカウントのJSONキーを指定します。
- 組織の認証情報ポリシーに従って、キーを保護し、ローテーションし、失効させてください。
詳細については、「サービスアカウントキーの作成と削除」を参照してください。
ステップ6. 同期するデータを選択する
同期するPendoアプリケーションを選択します。アカウントと訪問者のメタデータを選択することもできます。初期設定時のデータ選択は任意で、後から完了することもできます。
宛先が設定され、データが選択された後、最初の定期同期が夜間に開始されます。以降の同期は約24時間ごとに実行されます。
利用可能なテーブルとフィールドについては、データ同期のスキーマ定義およびBigQuery ERDを参照してください。
トラブルシューティング
| 症状 | 原因 | 解決 |
|---|---|---|
| Pendoが宛先サービスアカウントを引き継げない。 | 宛先サービスアカウントでPendoサービスアカウントに必要なIAMの役割が1つまたは両方が付与されていない。 | サービスアカウントトークン作成者とサービスアカウントユーザーのバインディングとそのスコープを確認してください。 |
| 検証でデータセットまたはバケットの場所に関するエラーが報告される。 | Cloud StorageバケットとBigQueryデータセットが異なる場所にある。 | データセットと同じ場所にあるバケットを使用してから、もう一度お試しください。 |
| Pendoは接続されますが、テーブルを作成または更新できない。 | 宛先サービスアカウントに必要なBigQueryプロジェクトまたはデータセットの権限がない。 |
bigquery.jobs.createとデータセットレベルの役割またはカスタム権限を再度確認してください。 |
| ステージング操作に失敗する。 | バケットがパブリックに設定されている、アクセスできない、またはオブジェクト権限が不足している。 | バケットは非公開に保ち、宛先のサービスアカウントがオブジェクトの一覧表示、読み取り、作成、削除を行えることを確認してください。 |
| 新しいIAM権限付与が認識されない。 | Google Cloud IAM の反映が完了していない。 | 最大10分待ってから、検証を再試行してください。 |
| 宛先のステータスが失敗に変わり、その宛先のデータ同期は無効になる。 | BigQueryから報告された宛先側の問題により、転送に失敗した。 | 宛先側の問題を解決してから、Pendoで宛先を検証して再度有効にしてください。 |
| BigQueryが宛先として表示されない。 | Pendoサブスクリプションがサポート対象のリージョンでホストされていない。 | サブスクリプションが米国またはEUリージョンにあることを確認してください。 |
次のステップ
- Pendoが同期するテーブルとフィールドについては、データ同期のスキーマ定義とBigQuery ERDを参照してください。
- 同期先と同期タイミングの概要については、Pendoのデータ同期の概要を参照してください。