为了提高容器的安全性,我试图了解将服务帐户分配给云运行服务实际上是做什么的。我在云运行服务中运行了多个进程,并不是所有进程都需要访问项目资源。
我想到的一个更具体的问题是:,我是否能够创建多个用户并以没有访问服务帐户或每个用户都可以访问服务帐户的用户的身份运行某些进程?
我在VM实例上运行了一个小实验(我想这将是一个类似于Cloud的例子),在这个例子中,我创建了一个新用户,在创建之后,它没有被授权使用实例的服务帐户。但是,我不确定是否有一种方法可以使我的方法不安全。
谢谢。
编辑
为了执行测试,我创建了一个新os用户,并使用了新用户帐户中的"gcloud auth list“。然而,我应该提出一个卷曲请求,我可以检索凭据,如下面的答复所指出的那样。
发布于 2020-04-27 20:36:28
你的问题不是很清楚,但我会尝试提供几个投入。
当您在Cloud上运行一个服务时,您有两个选择来定义它的身份
这个服务帐户对于云运行服务是有效的(每个项目最多可以有1000个不同的服务)。
现在,当您运行容器时,服务帐户并没有真正加载到容器中(对于计算引擎来说是一样的),但是有一个API可以请求这个服务帐户的身份验证数据。它叫元数据服务器
它不限于用户(我不知道您如何在Compute Engine上执行测试!),一个简单的卷曲就足以获得数据。
例如,在使用库和使用“默认凭据”时使用此元数据服务器。gcloud也使用它。
我希望你现在有个更好的视野。如果没有,请在问题或评论中添加详细信息。
发布于 2020-04-28 04:34:39
纪尧姆回答中缺少的关键字是“权限”。
具体来说,如果不分配服务帐户,云运行将使用计算引擎默认服务帐户。
这个默认帐户在您的项目中具有Editor
角色(换句话说,它可以在您的GCP项目上执行几乎任何事情,除非创建新的服务帐户并给予它们访问权限,或者删除GCP项目)。如果您使用默认服务帐户,并且您的容器被破坏,您可能会遇到麻烦。⚠️
但是,如果您指定了一个新的--service-account
,默认情况下它没有权限。您必须绑定它的角色或权限(例如、PubSub Publisher.)你的应用程序需要。
https://stackoverflow.com/questions/61461409
复制相似问题