为 Looker Studio 设置 Google Cloud 服务账号

目标受众

本文供 Google Cloud 管理员参考。如需了解如何在 Looker 数据洞察数据源中使用现有服务账号,请参阅数据凭据

Looker Studio 可以使用服务账号访问数据,而无需使用所有者的credentials委托访问权限,也不必要求各个报告查看者使用查看者的凭据访问数据。服务账号是一种特殊类型的 Google 账号,用于表示可以进行身份验证并获得授权以访问 Google API 和产品中的数据的非人类用户。详细了解服务账号

将服务账号与 Looker 数据洞察搭配使用的好处

如需将服务账号与 Looker Studio 搭配使用,您需要将贵组织的 Looker Studio 服务代理添加为该账号的用户(正文)。这样,您就可以控制哪些服务账号可以与 Looker Studio 搭配使用,同时确保贵组织中的用户可以轻松访问所需的数据。

使用服务账号(而非个别用户的凭据)具有以下优势:

  • 如果创建者离职,使用服务账号凭据的数据源不会中断。
  • 服务账号凭据支持访问位于使用设备政策的 VPC Service Controls 边界后面的数据。
  • 定期发送电子邮件和定期提取数据等自动化功能可与位于 VPC Service Controls 边界后面的数据源搭配使用。

我们建议您创建仅用于 Looker Studio 的新服务账号。例如,您可以为营销、销售和工程团队分别创建服务账号,以便他们使用 Looker Studio。

准备工作

  • 如需设置服务账号,您需要在 Google Cloud 项目中拥有 Service Account Admin ( roles/iam.serviceAccountAdmin) 或 Create Service Accounts ( roles/iam.serviceAccountCreator) 角色。详细了解服务账号角色
  • 如需获取 Looker Studio 服务代理的帮助,您必须是 Workspace 或 Cloud Identity 用户。

设置说明

除非您想为不同的团队或用户群组创建不同的服务账号,否则只需执行本文中的说明一次。如需创建多个服务账号,请针对每个额外的服务账号重复上述说明。

获取 Looker Studio 服务代理

若要允许该服务账号访问您的数据,您需要为贵组织提供 Looker Studio 服务代理。您可以通过 Looker Studio 中的帮助页面获取服务代理联系信息:

  1. 前往 Looker Studio 服务代理帮助页面
  2. 复制该页面上显示的服务代理电子邮件地址。

Looker Studio 服务代理页面会显示服务代理电子邮件地址,您需要使用此电子邮件地址设置服务账号才能访问您的数据。

为 Looker Studio 创建服务账号

如需了解如何创建服务账号,请参阅 Google Cloud IAM 文档。您可以使用 Cloud 控制台或 Cloud Shell 命令行创建服务账号。

使用 Cloud 控制台

第 1 步:创建新的服务账号

  1. 在 Cloud 控制台中,前往 创建服务账号 页面。

    前往“创建服务账号

  2. 选择一个项目。
  3. 输入要在 Cloud 控制台中显示的服务账号名称。

    Cloud Console 会根据此名称生成服务账号 ID。如有必要,请立即修改 ID。此 ID 创建后便无法更改。

  4. 可选:输入服务账号的说明。
  5. 点击 创建并继续。

    Google Cloud Platform“创建服务账号”页面,其中已填写“服务账号名称”“服务账号 ID”和“服务账号说明”字段。

  6. 在第 2 步( 向此服务账号授予对项目的访问权限 )中,为服务账号授予包含您要在 Looker Studio 中连接的数据的项目中的 BigQuery Job User IAM 角色 。请注意,这可能与您创建服务账号时所用的项目不同。

    用户在“角色”过滤条件框中输入“BigQuery Job”字样,然后从结果下拉菜单中选择“BigQuery Job User”角色。
  7. 点击 继续
  8. 服务账号用户角色 字段中,添加可以使用此服务账号为其数据源提供凭据的用户。如果您暂时不想添加用户,可以稍后按照下文中的 第 3 步:授予用户角色 中的说明操作。
  9. 点击 完成 以保存服务账号,然后返回项目的服务账号列表页面。

第 2 步:允许 Looker Studio 服务代理访问您的服务账号

  1. 返回 Cloud 控制台服务账号列表
  2. 在列表中点击您刚刚创建的 Looker Studio 服务账号。
  3. 点击顶部的 权限
  4. 点击 “分享”图标 授予访问权限
  5. 在右侧的PROJECT_ID 添加主账号 中,将 Looker Studio 服务代理的电子邮件地址(您在上文第 1 步中复制的)粘贴到 新的主账号 框中。
  6. 选择一个可向服务代理授予 iam.serviceAccount.getAccessToken 权限的角色。例如,您可以使用 Service Account Token Creator 角色,但也可以使用授予此权限的任何自定义角色。
  7. 点击 保存
提示 :服务代理的地址采用 service-account@PROJECT_ID.iam.gserviceaccount.com 格式。如果您知道自己的项目 ID,可以手动构建地址。

在“添加主账号”面板中,用户在“新主账号”字段中输入 Looker Studio 服务代理的电子邮件地址,在“角色”过滤框中输入字词令牌,然后从结果下拉菜单中选择“Service Account Token Creator”角色。

第 3 步:授予用户角色

注意 :如果您在创建服务账号时已添加 Looker Studio 用户(如上文 第 1 步 所述),则此步骤为可选步骤。

您需要向将创建或修改数据源的 Looker Studio 用户授予包含 iam.serviceAccounts.actAs 权限的角色,例如 Service Account User 角色 ( roles/iam.serviceAccountUser )。您可以对项目或单个服务账号授予此角色,但我们建议您仅对服务账号授予此角色。如需查看相关说明,请参阅 管理服务账号模拟

提示 :如果您尚未准备好完成此步骤,可以稍后再回来完成。
提示:我们建议您不要向非服务代理用户授予 Service Account Token Creator 角色,因为 Looker Studio 不需要该角色。
注意 :仅查看 Looker Studio 报告的用户无需拥有服务账号权限。
  1. 前往 Cloud 控制台服务账号列表
  2. 在列表中点击您的 Looker Studio 服务账号,进行选择。
  3. 点击页面顶部的 权限
  4. 点击 “分享”图标 授予访问权限
  5. 在右侧的Service Account 添加主账号和角色 中,在 新建主账号 框中输入用户的电子邮件地址。
  6. 选择 Service Account User 角色。
  7. 点击 保存

第 4 步:为服务账号启用对 BigQuery 数据的访问权限

如需允许 Looker Studio 访问您的数据,请在表级或数据集级向服务账号授予 BigQuery Data Viewer 角色。

注意 :我们不建议在项目级别授予服务账号访问权限。

如需授予对表的访问权限 ,请执行以下操作:

  1. 前往 Cloud 控制台服务账号列表
  2. 复制 Looker Studio 服务账号电子邮件地址。
  3. 前往 BigQuery 并打开一个项目。
  4. 点击 展开数据集。
  5. 选择一个表格。
  6. 在工具栏中,点击 “分享”图标 分享
  7. 在右侧打开的面板中,点击 “分享”图标 ADD PRINCIPAL (添加主账号)。
  8. 新主账号 框中,粘贴 Looker Studio 服务账号电子邮件地址。
  9. 选择 BigQuery Data Viewer 角色。
  10. 点击 保存

如需授予对数据集的访问权限 ,请执行以下操作:

  1. 前往 Cloud 控制台服务账号列表
  2. 复制您的 Looker Studio 服务账号电子邮件地址。
  3. 前往 BigQuery ,打开一个项目,然后找到相应数据集。
  4. 点击数据集名称右侧的“查看操作”图标
  5. 点击 打开
  6. 在工具栏中,依次点击 “分享”图标 共享 权限
  7. 在右侧打开的面板中,点击 “分享”图标 ADD PRINCIPAL (添加主账号)。
  8. 新主账号 框中,粘贴 Looker Studio 服务账号电子邮件地址。
  9. 选择 BigQuery Data Viewer 角色。
  10. 点击 保存

使用 Cloud Shell

第 1 步:创建新的服务账号

请按照 创建和管理服务账号 gcloud 下列出的常规步骤操作。

  1. 打开 Cloud Shell
  2. 如有必要,请选择一个项目。
  3. 如需创建服务账号,请运行 gcloud iam service-accounts create 命令。您可以使用自己选择的任何账号名称、说明和显示名称。

    示例

     gcloud iam service-accounts create datastudio_service_account --description="Use for Looker Studio access to BigQuery"  --display-name="DS_BQ" 
  1. 如需访问您要与 Looker Studio 搭配使用的 Google Cloud 项目中的 BigQuery 数据,请向该服务账号授予该项目中的 bigquery.jobs.create 权限。 您可以授予 BigQuery Job User IAM 角色 ,以便授予此权限。

    此外,请向服务账号授予对您要与 Looker Studio 搭配使用的项目或数据集的 bigquery.tables.getData bigquery.tables.get 权限。 您可以授予 BigQuery Data Viewer 角色 ( roles/bigquery.dataViewer ) 来授予这些权限。

    如需授予这些角色,请运行 gcloud projects add-iam-policy-binding 命令。在以下示例中,请将 PROJECT_ID 替换为您的项目 ID。

    示例:
     gcloud projects add-iam-policy-binding PROJECT_ID  --member = "serviceAccount:datastudio_sa@PROJECT_ID.iam.gserviceaccount.com" --role="roles/bigquery.jobUser" gcloud projects add-iam-policy-binding PROJECT_ID --member = "serviceAccount:datastudio_sa@PROJECT_ID.iam.gserviceaccount.com" --role="roles/bigquery.dataViewer" 

第 2 步:允许 Looker Studio 服务代理访问您的服务账号

如需允许 Looker Studio 服务代理通过服务账号访问数据,请向服务代理授予 Service Account Token Creator 角色 ( roles/iam.serviceAccountTokenCreator )。为此,请运行 gcloud iam service-accounts add-iam-policy-binding 命令。在以下示例中,将 ORG_ID 替换为贵组织的 ID。

示例:

 gcloud iam service-accounts add-iam-policy-binding datastudio_service_account@PROJECT_ID.iam.gserviceaccount.com --member="service-ORG_ID@gcp-sa-datastudio.iam.gserviceaccount.com" --role="roles/iam.serviceAccountTokenCreator" 

第 3 步:授予用户角色

您需要向将创建或修改数据源的 Looker Studio 用户授予包含 iam.serviceAccounts.actAs 权限的角色,例如 Service Account User 角色 ( roles/iam.serviceAccountUser )。您可以对项目或单个服务账号授予此角色,但我们建议您仅对服务账号授予此角色。如需查看相关说明,请参阅 管理服务账号模拟

如果您尚未准备好完成此步骤,可以稍后再回来完成。
提示:我们建议您不要向非服务代理用户授予 Service Account Token Creator 角色,因为 Looker Studio 不需要该角色。
注意 :仅查看 Looker Studio 报告的用户无需拥有服务账号的权限。

如需授予 Service Account User 角色,请运行 gcloud projects add-iam-policy-binding 命令。在以下示例中,将 PROJECT_ID 替换为您的项目 ID,并将“ user@example.com ”替换为一个或多个有效的电子邮件地址(使用英文逗号分隔多个条目)。

示例:

 gcloud iam service-accounts add-iam-policy-binding  datastudio_service_account@PROJECT_ID.iam.gserviceaccount.com  --member="user:user@example.com" --role="roles/iam.serviceAccountUser" 

第 4 步:为服务账号启用对 BigQuery 数据的访问权限

如需允许 Looker Studio 访问您的数据,请在表级或数据集级向服务账号授予 BigQuery Data Viewer 角色。

最简单的方法是按照 Cloud 控制台说明 (上文第 4 步)操作。如需使用 bq 命令行工具授予对数据的访问权限,请参阅 控制对数据集的访问权限

向 Looker Studio 用户提供 Looker Studio 服务账号

Looker Studio 用户在创建数据源时需要知道要使用哪个服务账号。由于无法在 Looker Studio 中查看可用服务账号的列表,因此您应通过组织的文档、内部网站或电子邮件提供此类信息。

创建使用服务账号凭据的数据源

如需创建使用服务账号凭据的数据源,Looker Studio 用户可以按照与其他数据凭据类型相同的基本步骤操作:

  1. 创建或修改 BigQuery 数据源
  2. 在工具栏中,点击数据凭据
  3. 依次选择服务 账号凭据
  4. 在相应框中输入您的服务账号电子邮件地址。
  5. 点击更新

修改使用服务账号凭据的数据源

当用户修改使用服务账号凭据的数据源时,Looker Studio 会检查用户是否有权使用该服务账号。如果用户未提供凭据,数据源会改为使用其凭据。

查看哪些人使用服务账号访问数据

您可以在 Cloud 控制台中查看服务账号的审核日志。如果您想接收服务账号的审核日志,则必须为数据访问活动启用 IAM 审核日志

服务账号示例场景

假设您想确保贵公司中的 Looker Studio 用户只能访问其所在国家/地区子公司的数据。解决方案是为每个国家/地区创建一个服务账号,并仅向该国家/地区的 Looker Studio 用户授予充当服务账号的权限。

示例设置

在本例中,您将创建三个服务账号:一个用于英国、一个用于法国,一个用于德国。然后,您需要为服务代理和您希望能够创建使用该服务账号作为主账号的数据源的任何用户分配适当的角色。

英国服务账号

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

错误

本部分介绍了 Looker Studio 数据源创建者和报告查看者在尝试使用服务账号时可能会看到的错误。在大多数情况下,这些错误的根本原因相同:服务账号的设置不正确或不完整。

缺少服务代理角色

信息

  • Looker Studio 的服务代理缺少此服务的 iam.serviceAccount.getAccessToken 权限。
  • 此数据源服务服务账号使用的服务代理缺少“Service Account Token Creator”角色。

原因

服务代理未获授 Service Account Token Creator 角色(或包含 iam.serviceAccount.getAccessToken 权限的其他角色)。

解决方案

向服务代理授予 Service Account Token Creator 角色。

无权访问数据

消息

此服务账号无法访问基础数据集。

原因

服务账号未获授予对项目数据的访问权限。

解决方案

至少,请向底层表、数据集或项目中的服务账号授予 BigQuery Data Viewer 角色。

缺少用户角色

消息

您无权使用此服务账号。

原因

用户尚未作为具有 Service Account User 角色的主账号添加到服务账号。

解决方案

向服务账号的用户授予 Service Account User 角色。

服务代理不适用于该账号

信息

  • 无法为此账号生成服务代理 - 请使用受管理的 Google Workspace 或 Cloud Identity 账号重试。
  • 服务代理凭据仅适用于由 Google Workspace 或 Cloud Identity 管理的组织。请使用其他账号使用此功能。

原因

用户尝试通过标准(个人用户)Google 账号访问由服务账号控制的数据。

解决方案

使用 Google Workspace 或 Cloud Identity 账号访问数据。

无法在凭据对话框中使用服务代理

消息

Looker Studio 服务 代理 不能用来直接连接数据。请改用服务 账号

解决方案

服务代理与服务账号不同。在凭据对话框中输入服务账号。您可以使用 Cloud 控制台查找可用服务账号的列表:

使用 Cloud 控制台

  1. 前往 Google Cloud Platform > IAM 和管理 > 服务账号 页面。
  2. 如有必要,请选择一个项目。
  3. 项目的服务账号 页面中,找到 Looker Studio 将用来访问您的 BigQuery 数据的服务账号。
  4. 复制该账号的电子邮件地址。

使用 Cloud Shell

  1. 打开 Cloud Shell
  2. 如有必要,请选择一个项目。
  3. 如需列出您有权访问的服务账号,请运行 gcloud iam service-accounts list 命令。

示例:

 gcloud iam service-accounts list 

限制

  • 服务账号凭据目前仅适用于 BigQuery 数据源。IAM 限制适用于服务账号。
  • 对服务账号权限所做的更改可能需要几分钟才能反映在 Looker Studio 中。