GCP 中的服务帐号和服务代理有什么区别

Rog*_*Ray 8 service-accounts google-cloud-platform

假设我有这样的情况

  • 我必须使用数据流运行一些测试
  • 在此数据流作业中,我需要访问 gcs 存储桶并将输出保存在那里。
  • 我需要使用我自己的 SA 而不是默认 SA 来运行数据流作业。

我创建了一个 Google 服务帐户来运行我的数据流作业。但是在我启用数据流API之后。最后我面前有 2 个 SA。

  • 服务帐户代理 -->123456789@dataflow.gserviceaccount.com
  • 数据流作业运行器服务帐户 -->dataflow-job-runner@MY-PROJECT-ID.iam.gserviceaccount.com

看到官方文件说的我真的很困惑

某些 Google Cloud 服务具有 Google 管理的服务帐号,允许这些服务访问您的资源。这些服务帐户有时称为服务代理。

如果我创建一个与 SA 一起运行的数据流作业dataflow-job-runner@MY-PROJECT-ID.iam.gserviceaccount.com,我想我需要roles/storage.objectAdmin为其授予权限。

问题是

  • 我需要向服务帐户代理授予任何权限吗?
  • 服务帐户代理实际上做了什么,它需要什么来访问资源?

Joh*_*ley 15

Cloud Dataflow 等多种 Google Cloud 服务需要两组权限。

您编写的程序使用服务帐户。您授予此服务账户 IAM 角色以访问需要您的程序所需授权的资源。例如,从 Cloud Storage 读取数据或向 BigQuery 发出查询。

服务代理适用于服务的运行时。例如,当您在 Cloud Dataflow 上启动作业时,Cloud Dataflow 需要启动虚拟机来运行您的程序。您的程序没有启动虚拟机,而是服务。因此,该服务需要自己的一组权限。这就是服务代理的用途。

通过使用两个不同的服务帐户,实现了权限分离。

  • 这是一个很好解释的答案。正是我要找的!谢谢! (2认同)