サービス アカウントは人間ではないユーザーを表す特別なタイプの Google アカウントで、Google の API やサービスのデータにアクセスして認証を受けることができます。Looker Studio では、オーナーの認証情報を使ってアクセス権を委任したり、閲覧者の認証情報を使って個々のレポート閲覧者にデータへのアクセス権を要求したりする代わりに、サービス アカウントを使ってデータにアクセスできます。
注: サービス アカウントの認証情報は BigQuery データソースでのみ使用できます。
サービス アカウントについて、さらに学習する。
Looker Studio でサービス アカウントを使用するメリット
個々のユーザーの認証情報ではなくサービス アカウントを使用すると、以下のようなメリットがあります。
- サービス アカウントの認証情報を使用しているデータソースは、作成者が退職した場合でも悪影響を受けることはありません。
- サービス アカウントの認証情報を使用すると、デバイス ポリシーを使用する VPC Service Controls の境界の背後にあるデータにアクセスできます。
- スケジュール設定されたメールやスケジュール設定されたデータ抽出などの自動機能では、VPC Service Controls の境界の背後にあるデータソースが使用されます。(重要な注意点については、制限事項のセクションをご覧ください)。
- 上り(内向き)ルールと下り(外向き)ルールを作成して、サービス アカウントがサービス境界で保護されたリソースとクライアントにアクセスできるようにします。
必要なロール
- Looker Studio サービス エージェントを取得するには、Google Workspace または Cloud Identity のユーザーである必要があります。
- サービス アカウントを設定するには、 Google Cloud プロジェクトに対するサービス アカウント管理者(
roles/iam.serviceAccountAdmin
)またはサービス アカウント作成(roles/iam.serviceAccountCreator
)のロールが必要です。サービス アカウントのロールの詳細を確認する。 - BigQuery テーブルまたはデータセットにアクセスするようにサービス アカウントを構成するには、テーブルまたはデータセットに対する BigQuery データオーナー(
roles/bigquery.dataOwner
)ロール、またはbigquery.datasets.setIamPolicy
権限を付与する別のロールが必要です。
設定の手順
BigQuery データへのアクセスを提供するサービス アカウントを設定する手順は次のとおりです。
- Looker Studio サービス エージェントを取得します。このステップでは、次のステップで使用できるように、サービス エージェントのメールアドレスをコピーします。このアドレスは、Looker Studio によって自動的に作成されます。
- Looker Studio のサービス アカウントを作成します。このステップでは、データにアクセスする非ユーザーを作成します。
- Looker Studio サービス エージェントにサービス アカウントへのアクセスを許可します。この手順では、サービス エージェントにサービス アカウントの必要なロールを付与します。
- ユーザー役割を付与する。このステップでは、サービス アカウントの認証情報を使用するデータソースを作成できるように、ユーザーに必要なロールを付与します。
- サービス アカウントで BigQuery のデータにアクセスできるようにします。このステップでは、サービス アカウントが BigQuery テーブルまたはデータセットにアクセスできるように、必要なロールを付与します。
ステップ 1: Looker Studio サービス エージェントを取得する
サービス アカウントにデータへのアクセスを許可するには、組織の Looker Studio サービス エージェントを指定する必要があります。サービス エージェントは、Looker Studio のヘルプページから取得できます。
- Looker Studio サービス エージェントのヘルプページに移動します。
- そのページに表示されるサービス エージェントのメールアドレスをコピーします。
ステップ 2: Looker Studio のサービス アカウントを作成する
サービス アカウントの作成手順については、Google Cloud IAM ドキュメントをご覧ください。サービス アカウントは、 Google Cloud コンソールまたは Cloud Shell コマンドラインを使用して作成できます。
コンソール
- Google Cloud コンソールで、[サービス アカウントの作成] ページに移動します。
- プロジェクトを選択します。
- Google Cloud コンソールに表示するサービス アカウント名を入力します。
この名前に基づいてサービス アカウント ID が生成され、 Google Cloud コンソールに表示されます。必要に応じて ID を編集してください。後で ID を変更することはできません。
- (省略可)サービス アカウントの説明を入力します。
- [作成して続行] をクリックします。
- [権限] で、Looker Studio で接続するデータを含むプロジェクトに対する [BigQuery ジョブユーザー] の IAM ロールをサービス アカウントに付与します。なお、これは、サービス アカウントを作成したプロジェクトとは異なる場合があります。
- [続行] をクリックします。
- [サービス アカウント ユーザーロール] フィールドに、このサービス アカウントを使ってデータソースの認証情報を提供できるユーザーを追加します。ユーザーを追加する準備ができていない場合は、後述するユーザーロールを付与するの手順に沿って追加できます。
- [完了] をクリックしてサービス アカウントを保存し、プロジェクトのサービス アカウントのリストのページに戻ります。
gcloud
サービス アカウントの作成と管理の Cloud Shell に記載された一般的な手順を行います。
- Cloud Shell を開きます。
- 必要に応じてプロジェクトを選択します。
- サービス アカウントを作成するには、gcloud iam service-accounts create コマンドを実行します。任意のアカウント名、説明、表示名を使用できます。
例:
gcloud iam service-accounts create looker-studio-service-account \ --description="Use for Looker Studio access to BigQuery" \ --display-name="LS_BQ"
-
Looker Studio で使用する Google Cloud プロジェクトの BigQuery データにアクセスするには、そのプロジェクトの
bigquery.jobs.create
権限をサービス アカウントに付与します。この権限を付与するには、BigQuery ジョブユーザーの IAM ロールを付与します。また、Looker Studio で使用するプロジェクトまたはデータセットに対するサービス アカウントに、
bigquery.tables.getData
権限とbigquery.tables.get
権限を付与します。これらの権限を付与するには、BigQuery データ閲覧者のロール(roles/bigquery.dataViewer
)を付与します。これらのロールを付与するには、gcloud projects add-iam-policy-binding コマンドを実行します。次の例では、PROJECT_ID をプロジェクト ID に置き換えます。
例: BigQuery ジョブユーザーのロールを付与する
gcloud projects add-iam-policy-binding PROJECT_ID\ --member ="serviceAccount:looker-studio-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/bigquery.jobUser"
例: BigQuery データ閲覧者のロールを付与する
gcloud projects add-iam-policy-bindingPROJECT_ID\ --member ="serviceAccount:looker-studio-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/bigquery.dataViewer"
ステップ 3: Looker Studio サービス エージェントにサービス アカウントへのアクセスを許可する
Looker Studio サービス エージェントにサービス アカウントを使用してデータにアクセスできるようにするには、サービス アカウント トークン作成者のロール(roles/iam.serviceAccountTokenCreator
)をサービス エージェントに付与します。
コンソール
- Google Cloud コンソールのサービス アカウントのリストに戻ります。
- 作成した新しい Looker Studio サービス アカウントをリスト内でクリックして選択します。
- [アクセス権を持つプリンシパル] をクリックします。
- [ person_add アクセス権を付与] をクリックします。
- [
PROJECT_ID
にプリンシパルを追加する] で、(上記のステップ 1 でコピーした)Looker Studio サービス エージェントのメールアドレスを [新しいプリンシパル] ボックスに貼り付けます。(サービス エージェントのアドレスはSERVICE_AGENT_NAME@PROJECT_ID.iam.gserviceaccount.com
のようになります)。 - サービス エージェントに
iam.serviceAccounts.getAccessToken
権限を付与するロールを選択します。たとえば、サービス アカウント トークン作成者のロールだけでなく、この権限を付与する任意のカスタムロールも使用できます。 - [保存] をクリックします。
gcloud
gcloud iam service-accounts add-iam-policy-binding コマンドを実行します。次の例では、ORG_ID を組織の ID に置き換えます。
例:
gcloud iam service-accounts add-iam-policy-binding looker-studio-service-account@PROJECT_ID.iam.gserviceaccount.com \ --member="service-ORG_ID@gcp-sa-datastudio.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountTokenCreator"
ステップ 4: ユーザーロールを付与する
データソースを作成または編集する Looker Studio ユーザーには、サービス アカウント ユーザーのロール(roles/iam.serviceAccountUser
)など、iam.serviceAccounts.actAs
権限を含むロールを付与する必要があります。このロールは、プロジェクトまたは個々のサービス アカウントに付与できますが、サービス アカウントにのみ付与することをおすすめします。手順については、サービス アカウントの権限借用の管理をご覧ください。
サービス エージェント以外のユーザーにはサービス アカウント トークン作成者のロールは付与しないことをおすすめします。これは Looker Studio では必要ありません。
コンソール
- コンソールのサービス アカウントのリストに移動します。
- Looker Studio サービス アカウントをリスト内でクリックして選択します。
- [アクセス権を持つプリンシパル] をクリックします。
- person_add [アクセス権を付与] をクリックします。
- [サービス アカウントのプリンシパルとロールを追加] で、ユーザーのメールアドレスを [新しいプリンシパル] ボックスに入力します。
- サービス アカウント ユーザーのロールを選択します。
- [保存] をクリックします。
gcloud
サービス アカウント ユーザーのロールを付与するには、gcloud projects add-iam-policy-binding コマンドを実行します。次の例では、PROJECT_ID をプロジェクト ID に、USER_EMAIL を 1 つ以上の有効なメールアドレスに置き換えます(複数のメールアドレスを指定する場合はカンマで区切ります)。
例:
gcloud iam service-accounts add-iam-policy-binding looker-studio-service-account@PROJECT_ID.iam.gserviceaccount.com \ --member="user:USER_EMAIL" \ --role="roles/iam.serviceAccountUser"
ステップ 5: サービス アカウントで BigQuery のデータにアクセスできるようにする
Looker Studio にデータへのアクセスを許可するには、テーブルレベルまたはデータセット レベルでサービス アカウントに [BigQuery データ閲覧者] のロールを付与します。サービス アカウントにアクセス権をプロジェクト レベルで付与することはおすすめしません。
コンソール
テーブルへのアクセス権を付与するには:
- ステップ 1 で説明したように、Looker Studio サービス エージェントのメールアドレスをコピーします。Looker Studio サービス エージェントを取得します。
- Google Cloud コンソールのサービス アカウントのリストに移動します。
- BigQuery に移動して、プロジェクトを開きます。
- 展開矢印
をクリックしてデータセットを展開します。
- テーブルを選択してください。
- ツールバーの [ person_add 共有] をクリックします。
- 右側に表示されたパネルで、[ person_add プリンシパルを追加] をクリックします。
- [新しいプリンシパル] ボックスに、Looker Studio サービス エージェントのメールアドレスを貼り付けます。
- [BigQuery データ閲覧者] のロールを選択します。
- [保存] をクリックします。
データセットへのアクセス権を付与するには:
- ステップ 1 で説明したように、Looker Studio サービス エージェントのメールアドレスをコピーします。Looker Studio サービス エージェントを取得します。
- Google Cloud コンソールのサービス アカウントのリストに移動します。
- BigQuery に移動してプロジェクトを開き、データセットを見つけます。
- オプション メニュー
をクリックします。
- [開く] をクリックします。
- ツールバーの person_add 共有権限をクリックします。
- 右側に表示されたパネルで、[ person_add プリンシパルを追加] をクリックします。
- [新しいプリンシパル] ボックスに、Looker Studio サービス エージェントのメールアドレスを貼り付けます。
- [BigQuery データ閲覧者] のロールを選択します。
- [保存] をクリックします。
gcloud
Google Cloud コンソールの手順に沿ってデータへのアクセス権を付与することをおすすめします。bq
コマンドライン ツールを使用してデータへのアクセス権を付与するには、BigQuery ドキュメントの
データセットへのアクセスの制御をご覧ください。
Looker Studio ユーザーに Looker Studio サービス アカウントの情報を提供する
Looker Studio を使用するユーザーは、データソースの作成時に使用するサービス アカウントを把握している必要があります。利用可能なサービス アカウントのリストを Looker Studio 内から確認することはできないため、組織のドキュメント、社内ウェブサイト、またはメールでこの情報を提供する必要があります。
サービス アカウントの認証情報を使用するデータソースを作成する
Looker Studio ユーザーがサービス アカウントの認証情報を使用するデータソースを作成するには、他のデータの認証情報の種類向けの手順と同じ基本的な手順を行います。
- BigQuery データソースを作成または編集します。
- ツールバーで [データの認証情報] をクリックします。
- [サービス アカウント認証情報] を選択します。
- ボックスにサービス アカウントのメールアドレスを入力します。
- [更新] をクリックします。
サービス アカウントの認証情報を使用したデータソースを編集する
ユーザーがサービス アカウントの認証情報を使用したデータソースを編集すると、Looker Studio は、ユーザーがそのサービス アカウントを使用する権限を持っているかどうかをチェックします。権限を持っていない場合、そのユーザーの認証情報を使用するようデータソースの設定が切り替わります。
サービス アカウントを使用してデータにアクセスしたユーザーを確認する
Google Cloud コンソールでサービス アカウントの監査ログを確認できます。サービス アカウントの監査ログを受信するには、データアクセス アクティビティの IAM 監査ログを有効にする必要があります。
サービス アカウントのシナリオの例
自社の Looker Studio ユーザーが自国の子会社のデータにのみアクセスできるようにするとします。その場合、解決策としては、国ごとにサービス アカウントを作成し、その国の Looker Studio ユーザーにのみ、サービス アカウントとして機能するための権限を付与します。
設定例
この例では、英国、フランス、ドイツ向けに 3 つのサービス アカウントを作成します。次に、サービス アカウントを使用するデータソースを作成できるようにするサービス エージェントと任意のユーザーをプリンシパルとして割り当てます。また、それぞれに適切なロールを割り当てます。
英国のサービス アカウント
service-account-1@example-org-uk-example-project.iam.gserviceaccount.com
英国のプリンシパル
プリンシパル | ロール |
サービス エージェントです。 |
Service Account Token Creator |
ユーザー 1 | Service Account User |
ユーザー 2 | Service Account User |
フランスのサービス アカウント
service-account-1@example-org-fr-example-project.iam.gserviceaccount.com
フランスのプリンシパル
プリンシパル | ロール |
サービス エージェントです。 |
Service Account Token Creator |
ユーザー 3 | Service Account User |
ユーザー 4 | Service Account User |
ドイツのサービス アカウント
service-account-1@example-org-de-example-project.iam.gserviceaccount.com
ドイツのプリンシパル
プリンシパル | ロール |
サービス エージェントです。 |
Service Account Token Creator |
ユーザー 5 | Service Account User |
ユーザー 6 | Service Account User |
エラー
このセクションでは、Looker Studio のデータソース作成者とレポート閲覧者がサービス アカウントを使用しようとした際に表示される可能性のあるエラーについて説明します。ほとんどの場合、これらのエラーの根本原因は、サービス アカウントの設定が間違っているか不完全であることです。
サービス エージェントのロールが指定されていない
メッセージ
|
原因サービス エージェントにサービス アカウント トークン作成者 のロール(または |
解決策サービス エージェントにサービス アカウント トークン作成者 のロールを付与します。 |
データにアクセスできない
メッセージこのサービス アカウントは基盤となるデータセットにアクセスできません。 |
原因
|
解決策基になるテーブル、データセット、プロジェクトのサービス アカウントには、少なくとも BigQuery データ閲覧者 のロールを付与します。 |
ユーザーロールが割り当てられていない
メッセージこのサービス アカウントを使用する権限がありません。 |
原因ユーザーは、サービス アカウント ユーザーのロールを持つプリンシパルとしてサービス アカウントに追加されていません。 |
解決策サービス アカウントのサービス アカウント ユーザーのロールをユーザーに付与します。 |
アカウントでサービス エージェントを利用できない
メッセージ
|
原因ユーザーは、サービス アカウントで管理されているデータに標準の(一般ユーザー向け)Google アカウントからアクセスしようとしています。 |
解決策Google Workspace または Cloud Identity アカウントを使ってデータにアクセスします。 |
認証情報のダイアログでサービス エージェントを使用できない
メッセージLooker Studio のサービス エージェントはデータに直接アクセスできません。代わりにサービス アカウントを使用してください。 |
解決策サービス エージェントとサービス アカウントは異なります。認証情報のダイアログでサービス アカウントを入力し、使用可能なサービス アカウントのリストは、 Google Cloud コンソールまたは Cloud Shell を使用して確認できます。 コンソール
gcloud
例:
|
上限
- サービス アカウントの認証情報は、BigQuery データソースでのみ使用できます。サービス アカウントには IAM の上限が適用されます。
- サービス アカウントの権限に対する変更が Looker Studio で反映されるまでに数分かかることがあります。
- スケジュール設定されたメール配信は、VPC Service Controls で IP ベースのアクセスレベルを使用して保護されているデータでは機能しません。(これは、受信者がレポートを表示したときに、Looker Studio がメール受信者の IP アドレスを渡さないためです)。