Google Cloud Platform(GCP)にはユーザーアカウントとサービスアカウントの2種類のアカウントがあります。
ユーザーアカウントはGmailでおなじみのGoogleアカウントのことで、複数の任意のプロジェクトに属することができます。一方サービスアカウントは、プログラムがGCPにアクセスする時用などに、プロジェクトで任意に追加作成できるアカウントです。
BigQueryを使っていると、プロジェクトAとプロジェクトBのテーブルを使ってクエリを書いて、そのクエリ結果をプロジェクトCのテーブルに保存といった、プロジェクトをまたいだ処理を行いたい時があります。
プロジェクトをまたぐ処理なので、そういったことはユーザーアカウントでなければできないと思っていたのですが、サービスアカウントでもできるんですね。
やり方
設定も簡単で、サービスアカウントが追加でアクセスできるようにしたいプロジェクトのポータルに行き、
[IAMと管理]-[IAM]-[+追加]を押して、サービスアカウントのメールアドレスで、プロジェクトメンバーとして追加するだけです。
サービスアカウントの認証はこれまで通り、そのサービスアカウントのキーで行います。 認証されると、これまでのプロジェクトと同等に、追加したプロジェクトにもアクセスできるようになっています。
おまけ
BigQueryには、Googleスプレッドシートをテーブルのデータソースとする機能があるのですが、スプレッドシートの共有で、サービスアカウントのメールアドレスを登録すると、サービスアカウントからもそのテーブルを使うことができるようになります。