Warm tip: This article is reproduced from serverfault.com, please click

google cloud platform-GCP中的服务帐户和服务代理有什么区别

(google cloud platform - What is the difference between service account and service agent in GCP)

发布于 2020-12-01 14:09:14

说我有这种情况

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

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

  • 服务帐户代理-> 123456789@dataflow.gserviceaccount.com
  • 数据流转轮服务帐户-> dataflow-job-runner@MY-PROJECT-ID.iam.gserviceaccount.com

看到官方文件说了什么让我感到非常困惑

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

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

问题是

  • 我是否需要向服务帐户代理授予任何权限
  • 服务帐户代理实际上是做什么的,它必须访问什么资源?
Questioner
Roger Ray
Viewed
0
John Hanley 2020-12-03 11:55:46

几种Google Cloud服务(例如Cloud Dataflow)需要两组权限。

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

服务代理适用于服务的运行时。例如,当你在Cloud Dataflow上启动作业时,Cloud Dataflow需要启动VM才能在其上运行程序。你的程序未启动VM,服务已启动。因此,该服务需要其自己的一组权限。这就是服务代理的目的。

通过使用两个不同的服务帐户,可以实现特权分离