GCP 中的服务帐户和服务代理有什么区别
What is the difference between service account and service agent in GCP
假设我有这种情况
- 我必须运行一些数据流测试
- 在此数据流作业中,我需要访问一个 gcs 存储桶并将我的输出保存在那里。
- 我需要 运行 使用我自己的 SA 而不是默认 SA 的数据流作业。
我为 运行 我的数据流作业创建了一个 Google 服务帐户。但是在我启用数据流之后 API。结果我面前有2个SA。
- 服务帐号代理 -->
123456789@dataflow.gserviceaccount.com
- 数据流作业 运行ner 服务帐户 -->
dataflow-job-runner@MY-PROJECT-ID.iam.gserviceaccount.com
official document 说的让我很困惑
Some Google Cloud services have Google-managed service accounts that allow the services to access your resources. These service accounts are sometimes known as service agents.
如果我使用 dataflow-job-runner@MY-PROJECT-ID.iam.gserviceaccount.com
SA 创建到 运行 的数据流作业,我想我需要为其授予 roles/storage.objectAdmin
。
问题是
- 我是否需要向服务帐户代理授予任何权限?
- 服务帐户 agent 实际做什么,它必须做什么才能访问任何资源?
一些Google Cloud Dataflow 等云服务需要两组权限。
您编写的程序使用服务帐户。您授予此服务帐户 IAM 角色以访问需要您的程序所需授权的资源。例如,从 Cloud Storage 读取数据或向 BigQuery 发出查询。
服务代理申请服务的运行时间。例如,当您在 Cloud Dataflow 上启动作业时,Cloud Dataflow 需要启动 VM 以 运行 您的程序。您的程序没有启动虚拟机,而是服务。因此,该服务需要自己的一组权限。这就是服务代理的用途。
通过使用两个不同的服务帐户,实现了separation of privilege。
假设我有这种情况
- 我必须运行一些数据流测试
- 在此数据流作业中,我需要访问一个 gcs 存储桶并将我的输出保存在那里。
- 我需要 运行 使用我自己的 SA 而不是默认 SA 的数据流作业。
我为 运行 我的数据流作业创建了一个 Google 服务帐户。但是在我启用数据流之后 API。结果我面前有2个SA。
- 服务帐号代理 -->
123456789@dataflow.gserviceaccount.com
- 数据流作业 运行ner 服务帐户 -->
dataflow-job-runner@MY-PROJECT-ID.iam.gserviceaccount.com
official document 说的让我很困惑
Some Google Cloud services have Google-managed service accounts that allow the services to access your resources. These service accounts are sometimes known as service agents.
如果我使用 dataflow-job-runner@MY-PROJECT-ID.iam.gserviceaccount.com
SA 创建到 运行 的数据流作业,我想我需要为其授予 roles/storage.objectAdmin
。
问题是
- 我是否需要向服务帐户代理授予任何权限?
- 服务帐户 agent 实际做什么,它必须做什么才能访问任何资源?
一些Google Cloud Dataflow 等云服务需要两组权限。
您编写的程序使用服务帐户。您授予此服务帐户 IAM 角色以访问需要您的程序所需授权的资源。例如,从 Cloud Storage 读取数据或向 BigQuery 发出查询。
服务代理申请服务的运行时间。例如,当您在 Cloud Dataflow 上启动作业时,Cloud Dataflow 需要启动 VM 以 运行 您的程序。您的程序没有启动虚拟机,而是服务。因此,该服务需要自己的一组权限。这就是服务代理的用途。
通过使用两个不同的服务帐户,实现了separation of privilege。