服务帐号

本页面介绍了服务帐号以及如何将服务帐号与 Dataproc 搭配使用。

什么是服务帐号?

服务帐号是一种特殊帐号,Compute Engine 实例上运行的服务和应用可以使用此帐号与其他 Google Cloud API 进行交互。应用可以使用服务帐号凭据向自身授权使用一组 API,并在已授予服务帐号和虚拟机实例的权限范围内执行操作。

创建时,系统可以将 Compute Engine 虚拟机配置为使用特定服务帐号。如果未指定服务帐号,则使用默认服务帐号。如需了解详情,请查看 Compute Engine 服务帐号文档

Dataproc 中的服务帐号

Dataproc 集群是在 Compute Engine 虚拟机上构建的。在创建 Dataproc 集群时指定用户管理的服务帐号将使您可以将该服务帐号用于该集群中的 Dataproc 虚拟机。如果未指定服务帐号,Dataproc 虚拟机将使用默认的 Google 管理的 Compute Engine 服务帐号 [project-number]-compute@developer.gserviceaccount.com

为什么要指定服务帐号?

服务帐号具有授予它们的 IAM 角色。在创建 Dataproc 集群时指定用户管理的服务帐号将使您可以创建和使用可对 Cloud 资源进行精细访问和控制的集群。使用具有不同 Dataproc 集群的多个用户管理的服务帐号可以使集群拥有对 Cloud 资源的不同访问权限。

服务帐号要求和限制

  • 服务帐号只能在创建集群时进行设置。
  • 您需要在创建将与服务帐号关联的 Dataproc 集群之前创建服务帐号
  • 设置后,用于集群的服务帐号无法更改。
  • 确保服务帐号具备满足您需求的适当范围和 IAM 角色。
  • 与 Dataproc 结合使用的服务帐号必须具有 Dataproc/Dataproc Worker 角色(或具有 Dataproc Worker 角色授予的所有权限)。
  • 服务帐号必须位于创建集群所在的项目中。
  • Dataproc 集群中使用的 Compute Engine 虚拟机仍需要特定的访问权限范围。访问权限范围也仅限于它们适用的服务。例如,如果 Dataproc 集群仅获得了 Cloud Storage 的 https://www.googleapis.com/auth/storage-full 范围的访问权限,则它无法使用同一范围向 BigQuery 发出请求。

默认范围和最小范围

如果未指定服务帐号范围,Dataproc 将使用以下默认范围集:

https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
如果指定了自定义范围,Dataproc 将结合使用用户指定的范围和 Dataproc 需要的以下最小范围集:
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

使用服务帐号

通过 Dataproc API clusters.create 请求或使用 Cloud SDK gcloud 命令行工具创建新的 Dataproc 集群时,您可以指定用户管理的服务帐号。

gcloud 命令

使用 gcloud clusters create 命令创建具有用户指定服务帐号和访问权限范围的新集群。
gcloud dataproc clusters create cluster-name \
    --region=region \
    --service-account=service-account-name@project-id.iam.gserviceaccount.com \
    --scopes=scope[, ...]

REST API

您可以在 clusters.create API 请求的 GceClusterConfig 对象中设置 serviceAccountserviceAccountScopes

控制台

在未来版本中,Dataproc 将支持在 Cloud Console 中设置用户管理的服务帐号。

后续步骤