为什么启用 Cloud 运行 API 会创建这么多服务帐户?为什么他们有这么多特权?

Why does enabling the Cloud Run API create so many service accounts? Why do they have so many privileges?

启用云运行 API(开发控制台→云运行→启用)创建五个服务帐户。我想了解他们的目的。我需要知道我是否有责任将它们配置为最低权限访问。

Default compute service account 具有 Editor 角色。这就是Cloud Run runtime service account。它的目的很明确,我知道我有责任将它配置为最低权限访问。

App Engine default service account 具有 Editor 角色。这与 Cloud Functions runtime service account 的描述相符。鉴于 Cloud 运行 运行时服务帐户的存在,其目的尚不清楚。我不知道是否有责任将其配置为最低权限访问。

Google Container Registry Service AgentEditor角色)和Google Cloud Run Service AgentCloud Run Service Agent角色)都是Google-managed service accounts"used to access the APIs of Google Cloud Platform services":

我希望看到 Google- 托管服务帐户配置为最低权限访问。我还希望能够在 GCP 控制台的 IAM 部分过滤 Google-托管服务帐户。也就是说,我知道我应该忽略它们。

未命名的 {project-number}{at}cloudbuild.gserviceaccount.com 服务帐户具有 Cloud Build Service Account 角色。此服务帐户 "can perform builds" 但未出现在云中 运行 Building Containers docs. It's used for Continuous Deployment — 但如果没有额外的用户配置则无法做到这一点。它不是 Google 托管服务帐户,但它不会像运行时服务帐户那样出现在 GCP 控制台的“服务帐户”部分中。其目的不明。我不知道是否有责任将其配置为最低权限访问。

云运行下午:

  1. 是的,完全正确。
  2. 如果您仅使用 运行,我们可能不应该创建它(并且可能不启用 App Engine API,这就是创建它的原因)。在 Alpha 期间,这是运行时服务帐户,很可能没有清理。
  3. 我感觉它卡住了 Editor,因为它访问了云存储,而云存储在 "non Editor access" 时出现了奇怪的故障(我仍在尝试找出确切的问题,但看起来与需要它的遗留 Editor 角色有关。
  4. 从它的角度来看已经是 "least privileged",因为它只有 运行 需要做的事情的权限才能代表您设置资源。
  5. 这是 Cloud Build 的运行时服务帐户,与 1,2 属于同一类别。如果您需要将构建部署到云 运行,您必须授予此帐户类似 Cloud Run Deployer 的权限(加上允许构建服务帐户充当您的运行时服务帐户的附加步骤,以防止[或至少承认] 权限升级)。

我也想要更好地过滤 "Google created" 和 "Google managed",并且一直在与 Cloud IAM 团队讨论这个问题。