Looker Studio のデータソースとして BigQuery を利用する際に、オーナーの認証情報ではなくサービスアカウントの認証情報を利用したい場合があります。
この手順を実施してサービスアカウントを作成し、データソースの認証情報に設定する事でオーナーの認証情報と切り離せるので、オーナーが退職する場合などに便利です。
Looker Studio 用に Google Cloud サービス アカウントを設定する
面倒くさいので、スクリプトを作成しました。
変数定義部分を書き換えて、Cloud Shell で実行すれば動作するかと思います。
#!/bin/bash
# 参考URL:
# https://support.google.com/looker-studio/answer/10835295#zippy=%2C%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%86%85%E5%AE%B9
# 変数定義
service_account_id="" # length between 6 and 30
service_account_display_name=""
project_id=""
service_agent="" # https://lookerstudio.google.com/serviceAgentHelp
service_account_user="" # Email
# サービス アカウントを作成
gcloud iam service-accounts create $service_account_id \
--description="Use for Looker Studio access to BigQuery" \
--display-name="${service_account_display_name}"
# BigQuery ジョブユーザーの IAM ロールを付与
gcloud projects add-iam-policy-binding $project_id \
--member="serviceAccount:${service_account_id}@${project_id}.iam.gserviceaccount.com" \
--role="roles/bigquery.jobUser"
# BigQuery データ閲覧者のロールを付与
gcloud projects add-iam-policy-binding $project_id \
--member="serviceAccount:${service_account_id}@${project_id}.iam.gserviceaccount.com" \
--role="roles/bigquery.dataViewer"
# サービス アカウント トークン作成者のロールをサービス エージェントに付与
gcloud iam service-accounts add-iam-policy-binding \
"${service_account_id}@${project_id}.iam.gserviceaccount.com" \
--member="serviceAccount:${service_agent}" \
--role="roles/iam.serviceAccountTokenCreator"
# サービス アカウント ユーザーのロールを付与
gcloud iam service-accounts add-iam-policy-binding \
"${service_account_id}@${project_id}.iam.gserviceaccount.com" \
--member="user:${service_account_user}" \
--role="roles/iam.serviceAccountUser"
BigQuery データ閲覧者
ロールは、データセットやテーブルに対して付与する方が安全です。