データポータル用に Google Cloud サービス アカウントを設定する

サービス アカウントは人間ではないユーザーを表す特別なタイプの Google アカウントで、Google API やプロダクトのデータにアクセスして認証を受けることができます。データポータルでは、オーナーの認証情報を使ってアクセス権を委任したり、閲覧者の認証情報を使って個々のレポート閲覧者にデータへのアクセス権を要求したりする代わりに、サービス アカウントを使ってデータにアクセスできます。

: サービス アカウントの認証情報は、BigQuery データソースでのみ使用できます。

サービス アカウントについて、さらに学習する。

データポータルでサービス アカウントを使用するメリット

個々のユーザーの認証情報ではなくサービス アカウントを使用すると、以下のようなメリットがあります。

  • サービス アカウントの認証情報を使用しているデータソースは、作成者が退職した場合でも悪影響を受けることはありません。
  • サービス アカウントの認証情報を使用すると、デバイス ポリシーを使用する VPC Service Controls の境界の背後にあるデータにアクセスできます。
  • スケジュール設定されたメール、アラート、スケジュール設定されたデータ抽出などの自動機能では、VPC Service Controls の境界の背後にあるデータソースが使用されます(重要な注意点については、制限事項のセクションをご覧ください)。
  • 上り(内向き)ルールと下り(外向き)ルールを作成して、サービス アカウントがサービス境界で保護されているリソースとクライアントにアクセスできるようにします。

必要なロール

管理者向け

  • データポータル サービス エージェントを取得するには、Google Workspace または Cloud Identity のユーザーである必要があります。
  • サービス アカウントを設定するには、 Google Cloud プロジェクトに対するサービス アカウント管理者roles/iam.serviceAccountAdmin)またはサービス アカウント作成roles/iam.serviceAccountCreator)のロールが必要です。サービス アカウントのロールの詳細をご覧ください。
  • BigQuery テーブルまたはデータセットにアクセスするようにサービス アカウントを構成するには、テーブルまたはデータセットに対する BigQuery データオーナーroles/bigquery.dataOwner)ロール、または bigquery.datasets.setIamPolicy 権限を付与する別のロールが必要です。

サービス アカウントの場合

  • サービス アカウントには、アクセスする必要がある特定のテーブルまたはデータセットに対する BigQuery データ閲覧者roles/bigquery.dataViewer)ロールが少なくとも付与されている必要があります。
  • カスタムクエリ: データソースがカスタムクエリを使用する場合、サービス アカウントには、データを含む Google Cloud プロジェクトに対する BigQuery ジョブユーザーroles/bigquery.jobUser)ロールも付与する必要があります。

設定の手順

BigQuery データへのアクセスを提供するサービス アカウントを設定する手順は次のとおりです。

  1. データポータル サービス エージェントを取得する。このステップでは、次のステップで使用できるように、サービス エージェントのメールアドレスをコピーします。このアドレスは、データポータルによって自動的に作成されます。
  2. データポータル用のサービス アカウントを作成します。このステップでは、データにアクセスする非ユーザーを作成します。
  3. データポータル サービス エージェントにサービス アカウントへのアクセスを許可する。このステップでは、サービス アカウントに必要なロールをサービス エージェントに付与します。
  4. ユーザーロールを付与する。このステップでは、サービス アカウントの認証情報を使用するデータソースを作成できるように、必要なロールをユーザーに付与します。
  5. サービス アカウントで BigQuery のデータにアクセスできるようにします。このステップでは、サービス アカウントに BigQuery のテーブルまたはデータセットにアクセスするために必要なロールを付与します。

ステップ 1: データポータル サービス エージェントを取得する

サービス アカウントにデータへのアクセスを許可するには、組織のデータポータル サービス エージェントを指定する必要があります。サービス エージェントは、データポータルのヘルプページから取得できます。

  1. データポータル サービス エージェントのヘルプページに移動します。
  2. そのページに表示されるサービス エージェントのメールアドレスをコピーします。

ステップ 2: データポータル用のサービス アカウントを作成する

サービス アカウントの作成手順については、Google Cloud IAM ドキュメントをご覧ください。サービス アカウントは、 Google Cloud コンソールまたは Cloud Shell コマンドラインを使用して作成できます。

コンソール

  1. Google Cloud コンソールで、[サービス アカウントの作成] ページに移動します。

    [サービス アカウントの作成] に移動

  2. プロジェクトを選択します。
  3. Google Cloud コンソールに表示するサービス アカウント名を入力します。

    この名前に基づいて、 Google Cloud コンソールでサービス アカウント ID が生成されます。必要に応じて ID を編集してください。後で ID を変更することはできません。

  4. (省略可)サービス アカウントの説明を入力します。
  5. [作成して続行] をクリックします。
  6. [権限] で、データポータルで接続するデータを含むプロジェクトに対する [BigQuery ジョブユーザー] の IAM ロールをサービス アカウントに付与します。なお、これは、サービス アカウントを作成したプロジェクトとは異なる場合があります。
  7. [続行] をクリックします。
  8. [サービス アカウント ユーザーロール] フィールドに、このサービス アカウントを使ってデータソースの認証情報を提供できるユーザーを追加します。ユーザーを追加する準備ができていない場合は、ユーザーロールを付与するの手順に沿って後で追加できます。
  9. [完了] をクリックしてサービス アカウントを保存し、プロジェクトのサービス アカウントのリストのページに戻ります。

gcloud

サービス アカウントの作成と管理Cloud Shell に記載された一般的な手順を行います。

  1. Cloud Shell を開きます
  2. 必要に応じてプロジェクトを選択します。
  3. サービス アカウントを作成するには、gcloud iam service-accounts create コマンドを実行します。任意のアカウント名、説明、表示名を使用できます。

例:

gcloud iam service-accounts create looker-studio-service-account \
--description="Use for Data Studio access to BigQuery"  \
--display-name="LS_BQ"
  1. データポータルで使用する Google Cloud プロジェクトの BigQuery データにアクセスするには、そのプロジェクトの bigquery.jobs.create 権限をサービス アカウントに付与します。この権限を付与するには、BigQuery ジョブユーザーIAM ロールを付与します。

    また、データポータルで使用するプロジェクトまたはデータセットに対するサービス アカウントに、bigquery.tables.getDatabigquery.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-binding PROJECT_ID \
--member="serviceAccount:looker-studio-service-account@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/bigquery.dataViewer"

ステップ 3: データポータル サービス エージェントにサービス アカウントへのアクセスを許可する

データポータル サービス エージェントにサービス アカウントを使用してデータにアクセスできるようにするには、サービス エージェントにサービス アカウント トークン作成者のロール(roles/iam.serviceAccountTokenCreator)を付与します。

コンソール

  1. Google Cloud コンソールのサービス アカウントのリストに戻ります。
  2. 作成した新しいデータポータル サービス アカウントをリスト内でクリックして選択します。
  3. [アクセス権を持つプリンシパル] をクリックします。
  4. person_add [アクセス権を付与] をクリックします。
  5. [PROJECT_ID にプリンシパルを追加する] で、(上記のステップ 1 でコピーした)データポータル サービス エージェントのメールアドレスを [新しいプリンシパル] ボックスに貼り付けます。サービス エージェントのアドレスは次のようになります。
        service-org-ORG-ID@gcp-sa-datastudio.iam.gserviceaccount.com
    
    ORG-ID は、 Google Cloud 組織 ID に置き換えます。
  6. サービス エージェントに iam.serviceAccounts.getAccessToken 権限を付与するロールを選択します。たとえば、サービス アカウント トークン作成者のロールを使用できますが、この権限を付与する任意のカスタムロールも使用できます。
  7. [保存] をクリックします。

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="serviceAccount:service-org-ORG_ID@gcp-sa-datastudio.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountTokenCreator"

ステップ 4: ユーザーロールを付与する

データソースを作成または編集するデータポータルのユーザーには、サービス アカウント ユーザーのロール(roles/iam.serviceAccountUser)など、iam.serviceAccounts.actAs 権限を含むロールを付与する必要があります。このロールは、プロジェクトまたは個別のサービス アカウントに付与できますが、サービス アカウントにのみ付与することをおすすめします。手順については、サービス アカウントの権限借用を管理するをご覧ください。

サービス エージェント以外のユーザーにはサービス アカウント トークン作成者のロールは付与しないことをおすすめします。これはデータポータルでは必要ありません。

コンソール

  1. コンソールのサービス アカウントのリストに移動します。
  2. データポータル サービス アカウントをリスト内でクリックして選択します。
  3. [アクセス権を持つプリンシパル] をクリックします。
  4. person_add [アクセス権を付与] をクリックします。
  5. [サービス アカウントのプリンシパルとロールを追加] で、ユーザーのメールアドレスを [新しいプリンシパル] ボックスに入力します。
  6. サービス アカウント ユーザーのロールを選択します。
  7. [保存] をクリックします。

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 のデータにアクセスできるようにする

データポータルにデータへのアクセスを許可するには、テーブルレベルまたはデータセット レベルでサービス アカウントに [BigQuery データ閲覧者] のロールを付与します。プロジェクト レベルでサービス アカウントのアクセス権を付与することはおすすめしません

この手順を完了するには、前述のステップ 1. データポータル サービス エージェントを取得するで説明したように、データポータル サービス エージェントのメールアドレスをコピーし、指示されたときに [プリンシパルを追加] ダイアログに貼り付けられるようにします。

コンソール

テーブルへのアクセス権を付与するには:

  1. ステップ 2: データポータル用のサービス アカウントを作成するで説明したように、データポータル サービス アカウントをコピーします。
  2. Google Cloud コンソールのサービス アカウントのリストに移動します。
  3. BigQuery に移動して、プロジェクトを選択します。
  4. [データセット] [データセット] をクリックし、データセットを選択します。
  5. テーブルを選択します。
  6. ツールバーで、[person_add 共有] メニューをクリックし、[共有] をクリックします。
  7. [共有権限] パネルで、person_add [プリンシパルを追加] をクリックします。
  8. [新しいプリンシパル] ボックスに、データポータル サービス エージェントのメールアドレスを貼り付けます。
  9. [BigQuery データ閲覧者] のロールを選択します。
  10. [保存] をクリックします。

データセットへのアクセス権を付与するには:

  1. ステップ 2: データポータル用のサービス アカウントを作成するで説明したように、データポータル サービス アカウントをコピーします。
  2. Google Cloud コンソールのサービス アカウントのリストに移動します。
  3. BigQuery に移動して、プロジェクトを選択します。
  4. [データセット] データセットをクリックし、データセットを選択します。
  5. その他アイコン(more_vert[アクション] chevron_forward [共有] chevron_forward [権限の管理] をクリックします。
  6. [共有権限] パネルで、person_add [プリンシパルを追加] をクリックします。
  7. [新しいプリンシパル] ボックスに、データポータル サービス エージェントのメールアドレスを貼り付けます。
  8. [BigQuery データ閲覧者] のロールを選択します。
  9. [保存] をクリックします。

gcloud

Google Cloud コンソールの手順に沿ってデータへのアクセス権を付与することをおすすめします。bq コマンドライン ツールを使用してデータへのアクセス権を付与するには、BigQuery ドキュメントの データセットへのアクセスの制御をご覧ください。

データポータルのユーザーにデータポータルのサービス アカウントを提供する

データポータルを使用するユーザーは、データソースの作成時に使用するサービス アカウントを把握している必要があります。利用可能なサービス アカウントのリストをデータポータル内から確認することはできないため、組織のドキュメント、社内ウェブサイト、またはメールでこの情報を提供する必要があります。

サービス アカウントの認証情報を使用するデータソースを作成する

データポータル ユーザーがサービス アカウントの認証情報を使用するデータソースを作成するには、他のデータの認証情報の種類向けの手順と同じ基本的な手順を行います。

  1. BigQuery データソースを作成または編集します
  2. ツールバーで [データの認証情報] をクリックします。
  3. [サービス アカウント認証情報] を選択します。
  4. ボックスにサービス アカウントのメールアドレスを入力します。
  5. [更新] をクリックします。

サービス アカウントの認証情報を使用したデータソースを編集する

ユーザーがサービス アカウントの認証情報を使用したデータソースを編集すると、データポータルは、ユーザーがそのサービス アカウントの権限を持っているかどうかをチェックします。権限を持っていない場合、データソースでは、そのユーザーの認証情報を使用するよう設定が切り替わります。

サービス アカウントを使用してデータにアクセスしたユーザーを確認する

Google Cloud コンソールでサービス アカウントの監査ログを確認できます。サービス アカウントの監査ログを受信するには、データアクセス アクティビティの IAM 監査ログを有効にする必要があります。

サービス アカウントのシナリオの例

自社のデータポータル ユーザーが自国の子会社のデータにのみアクセスできるようにするとします。その場合、解決策としては、国ごとにサービス アカウントを作成し、その国のデータポータル ユーザーにのみ、サービス アカウントとして機能するための権限を付与します。

設定例

この例では、英国、フランス、ドイツ向けに 3 つのサービス アカウントを作成します。次に、サービス アカウントを使用するデータソースを作成できるようにするサービス エージェントと任意のユーザーをプリンシパルとして割り当てます。また、それぞれに適切なロールを割り当てます。

英国のサービス アカウント

service-account-1@example-org-uk-example-project.iam.gserviceaccount.com

英国のプリンシパル

プリンシパル ロール

service-org-12345@gcp-sa-datastudio.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-org-12345@gcp-sa-datastudio.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-org-12345@gcp-sa-datastudio.iam.gserviceaccount.com

サービス エージェントです。

Service Account Token Creator
ユーザー 5 Service Account User
ユーザー 6 Service Account User

エラー

このセクションでは、データポータルのデータソース作成者とレポート閲覧者がサービス アカウントを使用しようとした際に表示されるエラーについて説明します。ほとんどの場合、これらのエラーの根本原因は、サービス アカウントの設定が間違っているか不完全であることです。

サービス エージェントのロールが指定されていない

メッセージ

  • データポータルのサービス エージェントには、このサービスの iam.serviceAccounts.getAccessToken 権限がありません。
  • このデータソースのサービス アカウントで使用されているサービス エージェントには、「サービス アカウント トークン作成者」のロールがありません。

原因

サービス エージェントにサービス アカウント トークン作成者 のロール(または iam.serviceAccounts.getAccessToken 権限を含む別のロール)が付与されていません。

解決策

サービス エージェントにサービス アカウント トークン作成者 のロールを付与します。

データにアクセスできない

メッセージ

このサービス アカウントは基盤データセットにアクセスできません。

原因

  • プロジェクトのデータへのアクセス権がサービス アカウントに付与されていません。
  • 課金対象プロジェクトが、サービス アカウントがアクセスできないプロジェクトに接続されています。
  • データソースでカスタムクエリが使用されているが、サービス アカウントにプロジェクトの BigQuery ジョブユーザーのロールがない。

解決策の

  • 基になるテーブル、データセット、プロジェクトのサービス アカウントには、少なくとも BigQuery データ閲覧者のロールを付与します。
  • カスタムクエリを使用している場合は、クエリが実行されるプロジェクトのサービス アカウントに BigQuery ジョブユーザーのロールも付与します。

ユーザーロールが割り当てられていない

メッセージ

このサービス アカウントを使用する権限がありません。

原因

ユーザーは、サービス アカウント ユーザーのロールを持つプリンシパルとしてサービス アカウントに追加されていません。

解決策の

サービス アカウントのサービス アカウント ユーザーのロールをユーザーに付与します。

アカウントでサービス エージェントを利用できない

メッセージ

  • このアカウントではサービス エージェントを生成できません。Google Workspace または Cloud Identity の管理対象アカウントでもう一度お試しください。
  • サービス エージェントの認証情報は、Google Workspace または Cloud Identity の管理対象組織でのみ使用できます。この機能を使用するには、別のアカウントを使用してください。

原因

ユーザーは、サービス アカウントで管理されているデータに標準の(一般ユーザー向け)Google アカウントからアクセスしようとしています。

解決策の

Google Workspace アカウントまたは Cloud Identity アカウントを使用してデータにアクセスします。

認証情報のダイアログでサービス エージェントを使用できない

メッセージ

データポータルのサービス エージェントはデータに直接アクセスできません。代わりにサービス アカウントを使用してください。

解決策の

サービス エージェントとサービス アカウントは異なります。認証情報のダイアログでサービス アカウントを入力します。使用可能なサービス アカウントのリストは、 Google Cloud コンソールまたは Cloud Shell で確認できます。

コンソール

  1. [Google Cloud Platform] > [IAM と管理] > [サービス アカウント] のページに移動します。
  2. 必要に応じてプロジェクトを選択します。
  3. [プロジェクトのサービス アカウント] ページで、Looker Studio で BigQuery データへのアクセスに使用するサービス アカウントを見つけます。
  4. そのアカウントのメールアドレスをコピーします。

gcloud

  1. Cloud Shell を開きます
  2. 必要に応じてプロジェクトを選択します。
  3. アクセス権を持つサービス アカウントを一覧表示するには、gcloud iam service-accounts list コマンドを実行します。

例:

gcloud iam service-accounts list

上限

  • サービス アカウントの認証情報は、BigQuery データソースでのみ使用できます。サービス アカウントには IAM の上限が適用されます。
  • サービス アカウントの権限に対する変更がデータポータルで反映されるまでに数分かかることがあります。
  • 送信日時を設定したメール配信とアラートは、VPC Service Controls で IP ベースのアクセスレベルを使用して保護されているデータでは機能しません(受信者がレポートを表示するときに、データポータルはメール受信者の IP アドレスを渡しません)。