当您将服务帐号分配给 Cloud Run 服务时,到底会发生什么?

ANI*_*mes 4 security google-compute-engine docker google-cloud-platform google-cloud-run

我试图了解将服务帐户分配给 Cloud Run 服务实际上会做什么,以提高容器的安全性。我在 Cloud Run 服务中运行多个进程,但并非所有进程都需要访问项目资源。

我想到的一个更具体的问题是: 我是否能够创建多个用户并以无权访问服务帐户的用户身份运行某些进程,或者每个用户都有权访问服务帐户?

我在 VM 实例上运行了一个小实验(我猜这将与 Cloud Run 的情况类似),其中我创建了一个新用户,创建后,它无权使用该实例的服务帐户。但是,我不确定是否有办法对其进行授权,这会使我的方法不安全。

谢谢。

编辑

为了执行测试,我创建了一个新的操作系统用户,并使用新用户帐户中的“gcloud auth list”。但是,我应该发出一个curl请求,并且我将能够检索凭据,如下面的答案所指出的。

gui*_*ere 5

你的问题对我来说不是很清楚,但我会尽力为你提供一些意见。

当您在 Cloud Run 上运行服务时,您有 2 个选择来定义其身份

  • 要么是使用的计算引擎服务帐户(默认情况下,您什么也不指定)
  • 或者是您在部署时指定的服务帐户

此服务帐号对 Cloud Run 服务有效(每个项目最多可以有 1000 个不同的服务)。

现在,当您运行容器时,服务帐户并未真正加载到容器中(这与计算引擎相同),但有一个 API 可用于请求该服务帐户的身份验证数据。它的名称元数据服务器

它不限于用户(我不知道你如何在Compute Engine上执行测试!),一个简单的curl就足以获取数据。

例如,当您使用库并且使用“默认凭据”时,就会使用此元数据服务器。gcloud SDK 也使用它。

我希望你现在有更好的看法。如果没有,请在您的问题或评论中添加详细信息。

  • 它的名称是 ADC(应用程序默认凭据)。简而言之,当您使用 Google Cloud 时,Google Cloud 客户端库会检测到元数据服务器并使用此凭据。在本地,使用您的“gcloud auth application-default login”凭据(首选方式)。在非 GCP 环境(本地包含)上,您可以定义指向服务帐户密钥文件的文件名的“GOOGLE_APPLICATION_CREDENTIALS”环境变量。我不建议用于本地开发,但它确实有效。 (3认同)