当您使用 Dataproc 服务创建集群并在集群上运行作业时,该服务会在您的项目中设置必要的 Dataproc 角色和权限,以访问和使用完成这些任务所需的 Google Cloud 资源。但是,如果您要完成跨项目工作(例如,访问另一个项目中的数据),则需要设置必要的角色和权限以访问跨项目资源。
为了帮助您成功完成跨项目工作,本文档列出了使用 Dataproc 服务的不同主账号以及包含这些主账号访问和使用 Google Cloud 资源的所需的必要权限的角色。
有三个主账号(身份)可以访问和使用 Dataproc:
- 用户身份
- 控制平面身份
- 数据平面身份
Dataproc API 用户(用户身份)
示例:username@example.com
这是调用 Dataproc 服务以创建集群、提交作业以及向服务发出其他请求的用户。用户通常是个人,但也可以是服务账号(如果通过 API 客户端或其他 Google Cloud 服务 [如 Compute Engine、Cloud Run 函数或 Cloud Composer] 调用 Dataproc)。
相关角色
备注
- Dataproc API 提交的作业在 Linux 上以
root
身份运行。 Dataproc 集群继承项目范围的 Compute Engine SSH 元数据,除非您在创建集群时通过设置
--metadata=block-project-ssh-keys=true
明确阻止了该数据(请参阅集群元数据)系统会为每个项目级层的 SSH 用户创建 HDFS 用户目录。这些 HDFS 目录是在集群部署时创建的,而新的(部署后)SSH 用户在现有集群上不会获得 HDFS 目录。
Dataproc 服务代理(控制平面身份)
示例:service-project-number@dataproc-accounts.iam.gserviceaccount.com
Dataproc Dataproc Service Agent 服务账号用于在创建 Dataproc 集群的项目中的资源上执行广泛的系统操作,包括:
- 创建 Compute Engine 资源,包括虚拟机实例、实例组和实例模板
get
和list
操作,用来确认资源(例如映像、防火墙、Dataproc 初始化操作和 Cloud Storage 存储分区)的配置- 自动创建 Dataproc 暂存和临时存储分区(如果用户未指定暂存或临时存储分区)
- 将集群配置元数据写入暂存存储分区
- 访问宿主项目中的 VPC 网络
相关角色
Dataproc 虚拟机服务账号(数据平面身份)
示例:project-number-compute@developer.gserviceaccount.com
您的应用代码在 Dataproc 虚拟机上以 VM 服务账号身份运行。用户作业被授予此服务账号的角色(及其关联权限)。
虚拟机服务账号:
- 与 Dataproc 控制平面通信
- 在 Dataproc 暂存和临时存储分区中读取和写入数据
- 根据 Dataproc 作业的需要,在 Cloud Storage、BigQuery、Cloud Logging 和其他 Google Cloud 资源中读写数据。
相关角色