为数据洞察设置 Google Cloud 服务账号

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

详细了解服务账号

将服务账号与数据洞察搭配使用的优势

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

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

所需的角色

以下是为数据洞察配置服务账号所需的角色:

面向管理员的资源

  • 如需获取数据洞察服务代理,您必须是 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 Data Viewer (roles/bigquery.dataViewer) 角色。
  • 自定义查询:如果数据源使用自定义查询,则还必须向服务账号授予包含数据的 Google Cloud 项目的 BigQuery Job User (roles/bigquery.jobUser) 角色。

设置说明

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

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

第 1 步:获取数据洞察服务代理

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

  1. 前往 Data Studio 服务代理帮助页面
  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 Job User IAM 角色,该角色位于包含您要在 Data Studio 中连接的数据的项目中。请注意,这可能与您创建服务账号的项目不同。
  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 Job User IAM 角色来提供此权限。

    此外,请向您想在数据洞察中使用的项目或数据集授予服务账号 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-binding PROJECT_ID \
--member="serviceAccount:looker-studio-service-account@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/bigquery.dataViewer"

第 3 步:允许数据洞察服务代理访问您的服务账号

如需允许 Data Studio 服务代理使用服务账号访问数据,请向该服务代理授予 Service Account Token Creator 角色 (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 权限的角色。例如,您可以使用 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="serviceAccount:service-org-ORG_ID@gcp-sa-datastudio.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountTokenCreator"

第 4 步:授予用户角色

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

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

控制台

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

gcloud

如需授予 Service Account User 角色,请运行 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 数据

如需允许 Data Studio 访问您的数据,请在表级或数据集级为服务账号授予 BigQuery Data Viewer 角色。我们不建议在项目级授予服务账号访问权限。

如需完成此步骤,请复制 Data Studio 服务代理电子邮件地址,如第 1 步获取数据洞察服务代理,以便在系统提示时将其粘贴到添加主账号对话框中。

控制台

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

  1. 复制数据洞察服务账号,如上文第 2 步:为数据洞察创建服务账号中所述。
  2. 前往Google Cloud 控制台服务账号列表
  3. 前往 BigQuery,然后选择一个项目。
  4. 依次点击数据集 数据集,然后选择一个数据集。
  5. 请选择一个表。
  6. 在工具栏中,依次点击 person_add 共享菜单和共享
  7. 共享权限面板中,依次点击 person_add 添加主账号
  8. 新主账号框中,粘贴 Data Studio 服务代理电子邮件地址。
  9. 选择 BigQuery Data Viewer 角色。
  10. 点击保存

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

  1. 复制数据洞察服务账号,如上文第 2 步:为数据洞察创建服务账号中所述。
  2. 前往Google Cloud 控制台服务账号列表
  3. 前往 BigQuery,然后选择一个项目。
  4. 依次点击数据集 数据集,然后选择一个数据集。
  5. 依次点击 more_vert 操作 chevron_forward 分享 chevron_forward 管理权限
  6. 共享权限面板中,依次点击 person_add 添加主账号
  7. 新主账号框中,粘贴 Data Studio 服务代理电子邮件地址。
  8. 选择 BigQuery Data Viewer 角色。
  9. 点击保存

gcloud

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

向数据洞察用户提供数据洞察服务账号

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

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

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

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

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

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

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

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

服务账号示例场景

假设您想确保贵公司的数据洞察用户只能访问其所在国家/地区子公司的相关数据。一种解决方案是为每个国家/地区创建一个服务账号,并仅向该国家/地区的数据洞察用户授予以该服务账号身份行事的权限。

示例设置

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

英国服务账号

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

错误

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

缺少服务代理角色

消息

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

原因

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

解决方案

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

无法访问数据

消息

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

原因

  • 相应服务账号尚未获得对项目数据的访问权限。
  • 结算项目关联的项目是服务账号无权访问的项目。
  • 数据源使用自定义查询,但服务账号没有项目的 BigQuery Job User 角色。

解决方案

  • 至少要向您的服务账号授予底层表、数据集或项目的 BigQuery Data Viewer 角色。
  • 如果您使用的是自定义查询,还应向服务账号授予运行查询的项目中的 BigQuery Job User 角色。

缺少用户角色

消息

您无权使用此服务账号。

原因

用户尚未以主账号身份添加到服务账号,且未被授予服务账号用户角色。

解决方案

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

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

消息

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

原因

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

解决方案

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

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

消息

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

解决方案

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

控制台

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

gcloud

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

示例

gcloud iam service-accounts list

限制

  • 服务账号凭据仅适用于 BigQuery 数据源。IAM 限制适用于服务账号。
  • 服务账号权限的更改可能需要几分钟的时间才能反映在数据洞察中。