为 Looker Studio 设置 Google Cloud 服务账号

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

注意:服务账号凭据仅适用于 BigQuery 数据源。

详细了解服务账号

将服务账号与 Looker Studio 搭配使用的优势

使用服务账号而非个人用户凭据具有以下优势:

  • 即使创建者离职,使用服务账号凭据的数据源也不会中断。
  • 服务账号凭据支持访问位于使用设备政策的 VPC Service Controls 边界后面的数据。
  • 电子邮件和数据提取等自动化功能可与位于 VPC Service Controls 边界内的数据源搭配使用。(请参阅“限制”部分,了解重要注意事项。)
  • 您可以创建入站流量和出站流量规则,以允许服务账号访问受服务边界保护的资源和客户端或来自它们的访问。

所需的角色

  • 如需获取 Looker Studio 服务代理,您必须是 Google Workspace 或 Cloud Identity 用户。
  • 如需设置服务账号,您需要拥有 Google Cloud 项目的 Service Account Admin (roles/iam.serviceAccountAdmin) 或 Create Service Accounts (roles/iam.serviceAccountCreator) 角色。详细了解服务账号角色
  • 如需配置服务账号以访问 BigQuery 表或数据集,您必须拥有该表或数据集的 BigQuery Data Owner (roles/bigquery.dataOwner) 角色,或者拥有可授予您 bigquery.datasets.setIamPolicy 权限的其他角色。

设置说明

如需设置可访问 BigQuery 数据的服务账号,请按以下步骤操作:

  1. 联系 Looker Studio 服务代理。在此步骤中,您将复制服务代理的电子邮件地址,以便在下一步中使用。此地址由 Looker Studio 自动为您创建。
  2. 为 Looker Studio 创建服务账号。在此步骤中,您将创建用于访问数据的非人类用户。
  3. 允许 Looker Studio 服务代理访问您的服务账号。在此步骤中,您将向服务代理授予服务账号所需的角色。
  4. 授予用户角色。在此步骤中,您将向用户授予所需角色,以便他们可以创建使用服务账号凭据的数据源。
  5. 允许服务账号访问您的 BigQuery 数据。在此步骤中,您将向服务账号授予所需的角色,以便该账号可以访问 BigQuery 表或数据集。

第 1 步:获取 Looker Studio 服务代理

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

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

第 2 步:为 Looker Studio 创建服务账号

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

控制台

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

    转到“创建服务账号”

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

    Google Cloud 控制台会根据此名称生成服务账号 ID。如有必要,请立即修改 ID。您以后无法更改 ID。

  4. 可选:输入服务账号的说明。
  5. 点击创建并继续
  6. 权限中,向服务账号授予包含您要在 Looker Studio 中连接的数据的项目中的 BigQuery Job User 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 Looker Studio access to BigQuery"  \
--display-name="LS_BQ"
  1. 如需访问您想在 Looker Studio 中使用的 Google Cloud 项目中的 BigQuery 数据,请向该项目中的服务账号授予bigquery.jobs.create权限。您可以授予 BigQuery Job User IAM 角色来提供此权限。

    此外,请为服务账号授予您想在 Looker Studio 中使用的项目或数据集的 bigquery.tables.getDatabigquery.tables.get 权限。您可以授予 BigQuery Data Viewer 角色 (roles/bigquery.dataViewer) 来提供这些权限。

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

    示例:授予 BigQuery Job User 角色

    gcloud projects add-iam-policy-binding PROJECT_ID\
    --member ="serviceAccount:looker-studio-service-account@PROJECT_ID.iam.gserviceaccount.com" \
    --role="roles/bigquery.jobUser"
    

    示例:授予 BigQuery Data Viewer 角色

    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 服务代理使用服务账号访问数据,请向该服务代理授予 Service Account Token Creator 角色 (roles/iam.serviceAccountTokenCreator)。

控制台

  1. 返回到 Google Cloud 控制台服务账号列表
  2. 在列表中点击您刚刚创建的 Looker Studio 服务账号,以选择该账号。
  3. 点击具有访问权限的主账号
  4. 依次点击 person_add 授予访问权限
  5. PROJECT_ID 添加主账号中,将 Looker Studio 服务代理电子邮件地址(您之前在第 1 步中复制的地址)粘贴到新的主账号框中。(您的服务代理的地址如下所示:SERVICE_AGENT_NAME@PROJECT_ID.iam.gserviceaccount.com。)
  6. 选择一个可为服务代理授予 iam.serviceAccounts.getAccessToken 权限的角色。例如,您可以使用 Service Account Token Creator 角色,但也可以使用授予此权限的任何自定义角色。
  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="service-ORG_ID@gcp-sa-datastudio.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountTokenCreator"

第 4 步:授予用户角色

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

我们建议您不要向非服务代理用户授予 Service Account Token Creator 角色,因为 Looker Studio 不需要此角色。

控制台

  1. 前往控制台服务账号列表
  2. 在列表中点击 Looker Studio 服务账号,以选择该账号。
  3. 点击具有访问权限的主账号
  4. 依次点击 person_add 授予访问权限
  5. 为服务账号添加主账号和角色中,在新主账号框中输入用户的电子邮件地址。
  6. 选择 Service Account User 角色。
  7. 点击保存

gcloud

如需授予服务账号用户角色,请运行 gcloud projects add-iam-policy-binding 命令。在以下示例中,将 PROJECT_ID 替换为您的项目 ID,并将 USER_EMAIL 替换为一个或多个有效的电子邮件地址(用英文逗号分隔多个条目)。

示例

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 Data Viewer 角色。我们不建议在项目级层授予服务账号访问权限。

控制台

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

  1. 复制 Looker Studio 服务代理电子邮件地址,如第 1 步获取 Looker Studio 服务代理
  2. 前往Google Cloud 控制台服务账号列表
  3. 前往 BigQuery 并打开一个项目。
  4. 点击展开箭头 展开数据集。
  5. 请选择一个表。
  6. 在工具栏中,依次点击 person_add 共享
  7. 在右侧打开的面板中,依次点击 person_add 图标和添加主账号
  8. 新主账号框中,粘贴 Looker Studio 服务代理电子邮件地址。
  9. 选择 BigQuery Data Viewer 角色。
  10. 点击保存

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

  1. 复制 Looker Studio 服务代理电子邮件地址,如上文第 1 步获取 Looker Studio 服务代理
  2. 前往Google Cloud 控制台服务账号列表
  3. 前往 BigQuery,打开一个项目,然后找到相应的数据集。
  4. 点击“选项”菜单
  5. 点击打开
  6. 在工具栏中,依次点击 person_add 共享权限
  7. 在右侧打开的面板中,依次点击 person_add 图标和添加主账号
  8. 新主账号框中,粘贴 Looker Studio 服务代理电子邮件地址。
  9. 选择 BigQuery Data Viewer 角色。
  10. 点击保存

gcloud

我们建议您按照 Google Cloud 控制台中的说明授予数据访问权限。如需使用 bq 命令行工具授予数据访问权限,请参阅 BigQuery 文档中的 控制对数据集的访问权限

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

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

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

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

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

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

当有人修改使用服务账号凭据的数据源时,Looker Studio 会检查该用户是否拥有使用相应服务账号的权限。如果他们没有相应权限,数据源会改用该用户的凭据。

查看谁在使用服务账号访问数据

您可以在 Google 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.serviceAccounts.getAccessToken 权限。
  • 此数据源服务服务账号使用的服务代理缺少“Service Account Token Creator”角色。

原因

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

解决方案

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

无法访问数据

消息

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

原因

  • 相应服务账号尚未获得对项目数据的访问权限。
  • 结算项目关联的项目是服务账号无权访问的项目。

解决方案

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

缺少用户角色

消息

您无权使用此服务账号。

原因

相应用户尚未以主账号身份添加到具有服务账号用户角色的服务账号。

解决方案

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

相应账号没有可用的服务代理

消息

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

原因

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

解决方案

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

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

消息

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

解决方案

服务代理和服务账号是不同的。在凭据对话框中输入服务账号。您可以使用 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 限制适用于服务账号。
  • 服务账号权限的更改可能需要几分钟才能反映在 Looker Studio 中。
  • 如果数据受 VPC Service Controls 的基于 IP 的访问权限级别保护,则无法使用电子邮件预定发送功能。(这是因为当电子邮件收件人查看报告时,Looker Studio 不会传递收件人的 IP 地址。)