LoginSignup
1

More than 1 year has passed since last update.

Looker Studio: Looker Studio からサービスアカウントを使用して BigQuery と接続する

Posted at

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 データ閲覧者 ロールは、データセットやテーブルに対して付与する方が安全です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1