データ転送用にアカウントを承認する

このドキュメントでは、BigQuery Data Transfer Service が異なるアカウント タイプとやり取りする方法、一般的な転送タスクを実行するために必要なアカウント承認の種類、共通の権限エラーのトラブルシューティング手順について説明します。

BigQuery Data Transfer Service の使用を開始するには、プロジェクトに関連付けられているアカウント(ユーザー アカウントとサービス アカウントの両方)が、転送ニーズを実行するための適切な権限で認証および承認されていることを確認します。データソース固有の権限については、各データソースの転送ガイドをご覧ください。

主な概念

BigQuery Data Transfer Service は、さまざまなデータソースから BigQuery へのデータ転送を自動化します。認証モデルと認可モデルは、コントロール プレーンとデータプレーンの 2 つの異なるステージで、転送作成者または転送オーナーの 2 種類のユーザーについて、動作します。

コントロール プレーン

コントロール プレーンは、認証されたユーザーが転送構成と実行を制御して管理できる承認プロセスの段階を表します。コントロール プレーン内のユーザーには、転送構成を制御および管理して実行するために、適切な Identity and Access Management(IAM)権限が必要です。

  • bigquery.transfers.update 権限。これにより、ユーザーは次のことが可能になります。
    • データ転送の構成を設定します。
    • 転送の更新、無効化、削除など、既存の転送を管理します。
  • bigquery.transfers.get 権限。ユーザーは、転送実行のステータスの確認や、転送実行の履歴とログの表示など、転送実行のモニタリングが可能になります。

Google Cloud コンソールまたは bq コマンドライン ツールを使用して転送を作成する場合は、bigquery.transfers.get 権限も必要です。

スケジュールされたクエリを設定する場合、bigquery.transfers.update 権限は必要ありません。詳細については、スケジュールされたクエリに必要な権限をご覧ください。

データプレーン

データプレーンは、ユーザーが直接制御できないステージを表します。データプレーンでは、BigQuery Data Transfer Service がオフライン モードでデータ転送を行い、ユーザーが指定したスケジュールに基づいて転送実行を自動的にトリガーできます。データプレーンでは、転送オーナーの認証情報を使用してソースデータにアクセスし、(データ転送元に応じて)転送オーナーの認証情報と BigQuery Data Transfer Service サービス エージェントのいずれかを、BigQuery ジョブの開始と転送先データセットへのデータの書き込みに使用します。

必要な権限の詳細については、このガイドの次のセクションをご覧ください。

転送作成者と転送オーナーの違い

転送作成者とは、転送構成を作成して設定したユーザー ID を指します。BigQuery Data Transfer Service ユーザーと転送作成者は、ユーザー アカウントまたはサービス アカウントになることができます。

転送オーナーとは、BigQuery Data Transfer Service がデータ転送を認可するために(具体的には、ソースデータを抽出するために)使用するユーザー ID のことを指します。サービス アカウントをサポートするデータソースの場合、移行オーナーはユーザー アカウントまたはサービス アカウントになることができます。他のデータソースの場合、移行オーナーはユーザー アカウントである必要があります。

転送オーナーと転送作成者は同じユーザー ID にできますが、これは必須ではありません。転送オーナーを転送オーナーとは異なるユーザーとして設定するには、いくつかの方法があります。

  • データソースがサービス アカウントをサポートしている場合は、転送を作成するときに、オーナーをサービス アカウントに設定できます。
  • 転送を作成したら、bigquery.transfers.update 権限と bigquery.transfers.get 権限を持つ新しいユーザー アカウント(または、データソースがサービス アカウントをサポートしている場合はサービス アカウント)にオーナー権限を転送できます。認証情報を更新するときは、新しいアカウントにログインしている必要があります。

外部データソースに対する読み取りアクセス承認

ソースデータの読み取りに必要な権限は、データソースによって異なる場合があります。たとえば、Google 広告へのアクセスには、Google 広告のお客様 ID に対する読み取りアクセス権限が必要です。同様に、Google Play には、Google Play Console でのレポートへのアクセス権が必要です。データソースに固有の権限の詳細については、各データソースの転送ガイドをご覧ください。

転送オーナーの ID タイプに応じて、ソースデータにアクセスするためのアクセス トークンを取得するために、異なる承認方法が必要になります。

オーナーをサービス アカウントとして移行する

サービス アカウントを転送オーナーとして使用する場合、プロジェクトで BigQuery Data Transfer Service API が有効になると、必要な権限がサービス アカウントに自動的に付与されます。BigQuery Data Transfer Service では、サービス エージェントを使用して、ユーザー提供のサービス アカウント(転送オーナー)のアクセス トークンを取得します。

BigQuery Data Transfer Service API を有効にすると、プロジェクトにサービス エージェントが作成されます。また、システムはサービス エージェントに BigQuery Data Transfer Service Agent ロールroles/bigquerydatatransfer.serviceAgent)も付与します。これには、権限 iam.serviceAccounts.getAccessToken が含まれています。その権限により、BigQuery Data Transfer Service サービス エージェントは、転送オーナーのサービス アカウントになり代わり、アクセス トークンを取得できます。

BigQuery Data Transfer Service サービス エージェントの詳細については、サービス エージェントをご覧ください。サービス アカウントの使用方法についての詳細と、サービス アカウントをサポートするデータソースの最新のリストについては、サービス アカウントを使用するをご覧ください。

ユーザー アカウントとしてオーナーを移行する

転送構成を作成する転送オーナーがユーザー アカウント(サービス アカウントではない)の場合、BigQuery Data Transfer Service に、ユーザー アカウントにアクセス トークンを取得し、転送オーナーに代わってソースデータにアクセスする権限を手動で付与する必要があります。OAuth ダイアログ インターフェースで、手動で承認できます。

所与のデータソースの転送を作成するときに、BigQuery Data Transfer Service に対する権限を初めて付与する必要があります。同じデータソースを使用している場合であっても、新しく使用されたリージョンの最初の転送を作成するときに、権限を再び付与する必要があります。YouTube チャンネルからのデータ転送は例外です。YouTube チャンネルのデータ転送を作成するたびに、権限の承認を手動で行う必要があります。

新しいオーナーがそのリージョンにデータソースの転送を以前にまだ作成したことがない場合は、認証情報を更新して転送オーナーを変更するには手動で承認する必要もあります。

次のスクリーンショットは、Google 広告の転送を作成するときの OAuth ダイアログ インターフェースを示しています。ダイアログには、付与する必要があるデータソース固有の権限が表示されます。

BigQuery Data Transfer Service に Google 広告へのアクセスを許可します。

付与された権限を取り消すには、次の操作を行います。

  1. Google アカウント ページにアクセスします。
  2. [BigQuery Data Transfer Service] をクリックします。
  3. 権限を取り消すには、[アクセス権を取り消す] をクリックします。BigQuery Data Transfer Service に付与したアクセス権を取り消します。

BigQuery ジョブを開始することの承認

スケジュールされたクエリデータセットのコピーを使用する場合を除き、ほとんどのデータソースからの移行では、BigQuery Data Transfer Service は サービス エージェントに依存してプロジェクトの BigQuery ジョブを開始します。プロジェクトで BigQuery Data Transfer Service API を有効にすると、必要な権限 bigquery.job.createサービス エージェントに自動的に付与されます。詳細については、BigQuery Data Transfer Service を有効にするをご覧ください。

スケジュールされたクエリまたはデータセットのコピーを使用して移行する場合、BigQuery Data Transfer Service は転送オーナーの認証情報を使用して BigQuery ジョブを開始します。

BigQuery ジョブを実行し、宛先データセットにデータを書き込むことの承認

スケジュール設定されたクエリまたはデータセットのコピーを使用して移行する場合を除いて、ほとんどのデータソースから移行するときは、BigQuery Data Transfer Service は、サービス エージェントによって、BigQuery の宛先データセットにデータを書き込みます。必要な権限 roles/bigquery.dataEditor は、転送を作成するときに BigQuery Data Transfer Service によってサービス エージェントに付与されます。権限を正常に付与するには、宛先データセットに対する bigquery.datasets.update 権限が必要です。

スケジュールされたクエリまたはデータセットのコピーを使用して移行する場合、BigQuery Data Transfer Service は転送オーナーの認証情報を使用して BigQuery ジョブを実行し、データを BigQuery の宛先データセットに書き込みます。

権限のエラーのトラブルシューティング

転送の承認または権限に関連する問題が発生した場合は、承認と権限の問題をご覧ください。