如需限制项目或组织内用户的访问权限,您可以为 Dataflow 使用 Identity and Access Management (IAM) 角色。您可以控制对 Dataflow 相关资源的访问权限,而不是向用户授予整个 Google Cloud 项目的 Viewer、Editor 或 Owner 角色。
本页重点介绍了如何使用 Dataflow 的 IAM 角色。如需详细了解 IAM 及其功能,请参阅 IAM 文档。
每种 Dataflow 方法都要求调用者拥有必要的权限。有关 Dataflow 支持的权限和角色的列表,请参阅以下部分。
权限和角色
本部分汇总了 Dataflow IAM 支持的权限和角色。
所需权限
下表列出了调用者调用每种方法必须具备的权限:
方法 | 所需权限 |
---|---|
dataflow.jobs.create |
dataflow.jobs.create |
dataflow.jobs.cancel |
dataflow.jobs.cancel |
dataflow.jobs.updateContents |
dataflow.jobs.updateContents |
dataflow.jobs.list |
dataflow.jobs.list |
dataflow.jobs.get |
dataflow.jobs.get |
dataflow.messages.list |
dataflow.messages.list |
dataflow.metrics.get |
dataflow.metrics.get |
dataflow.jobs.snapshot |
dataflow.jobs.snapshot |
角色
下表列出了 Dataflow IAM 角色,还有一个列表列出每个角色包含的 Dataflow 相关权限。每个权限适用于特定的资源类型。如需查看权限列表,请参阅 Google Cloud Console 中的角色页面。
Role | Permissions |
---|---|
Dataflow Admin( Minimal role for creating and managing dataflow jobs. |
|
Dataflow Developer( Provides the permissions necessary to execute and manipulate Dataflow jobs. Lowest-level resources where you can grant this role:
|
|
Dataflow Viewer( Provides read-only access to all Dataflow-related resources. Lowest-level resources where you can grant this role:
|
|
Dataflow Worker( Provides the permissions necessary for a Compute Engine service account to execute work units for a Dataflow pipeline. Lowest-level resources where you can grant this role:
|
|
Dataflow Worker 角色 (roles/dataflow.worker
) 可为 Compute Engine 服务账号提供运行 Apache Beam 流水线工作单元所需的权限。Dataflow 工作器角色必须分配给能够从 Dataflow 服务请求和更新工作的服务账号。
Dataflow 服务代理角色 (roles/dataflow.serviceAgent
) 仅供 Dataflow 服务账号使用。它为服务账号授予对 Google Cloud 项目中托管资源的访问权限,以运行 Dataflow 作业。当您从 Google Cloud Console 中的 API 页面为项目启用 Dataflow API 时,系统会自动将其分配给服务账号。
创建作业
要创建作业,roles/dataflow.admin
角色需具备运行和检查作业所需的一组最低权限。
或者,需要具备以下权限:
roles/dataflow.developer
角色,可将作业本身实例化。roles/compute.viewer
角色,可访问机器类型信息及查看其他设置。roles/storage.objectAdmin
角色,可提供将文件暂存在 Cloud Storage 上的权限。
角色分配示例
为了说明不同 Dataflow 角色的效用,请考虑以下细分讲解:
- 创建和检查作业的开发者需要
roles/iam.serviceAccountUser
角色。 - 为进行更复杂的权限管理,与 Dataflow 作业交互的开发者需要
roles/dataflow.developer
角色。- 如需暂存必要的文件,开发者需要
roles/storage.objectAdmin
或相关角色。 - 如需进行调试和配额检查,开发者需要项目的
roles/compute.viewer
角色。 - 如果没有分配其他角色,开发者可以通过此角色创建和取消 Dataflow 作业,但不能与各个虚拟机交互,也不能访问其他 Cloud 服务。
- 如需暂存必要的文件,开发者需要
- 工作器服务账号需要
roles/dataflow.worker
和roles/dataflow.admin
角色才能处理 Dataflow 服务的数据。- 如需访问作业数据,工作器服务账号还需要其他角色,如
roles/storage.objectAdmin
。 - 如需写入 BigQuery 表,工作器服务账号需要
roles/bigquery.dataEditor
角色。 - 如需从 Pub/Sub 主题或订阅中读取数据,工作器服务账号需要具备
roles/pubsub.editor
角色。
- 如需访问作业数据,工作器服务账号还需要其他角色,如
- 如果您使用的是共享 VPC,则共享 VPC 子网需要与 Dataflow 服务账号共享,并且需要具有指定子网上分配的 Compute Network User 角色。
- 如需查看共享 VPC 子网是否与 Dataflow 服务账号共享,请在 Google Cloud 控制台中转到共享 VPC 页面,然后搜索子网。在共享对象列中,您可以查看 VPC 子网是否已与 Dataflow 服务账号共享。如需了解详情,请参阅为共享 VPC 指定子网参数的准则。
- 宿主项目的 Compute Engine 服务账号、服务项目的 Dataflow 工作器服务账号以及用于提交作业的服务账号需要具有以下角色:
roles/dataflow.admin
roles/dataflow.serviceAgent
roles/compute.networkUser
roles/storage.objectViewer
分配 Dataflow 角色
目前,Dataflow 角色只能在组织和项目级层设置。
要管理组织级层角色,请参阅使用 IAM 对组织进行访问权限控制。
要设置项目级层角色,请参阅授予、更改和撤消对资源的访问权限。