首页 > 解决方案 > 将 Google Cloud Platform 服务帐户的访问权限限制为特定的 Gmail 帐户

问题描述

我最近制作了一个程序,用于监听连接到 Gmail 帐户的 PUB/SUB 主题。我一切正常。当推送通知到达时,它将根据消息内容执行不同的任务。

问题是我使用服务帐户连接到 Google Cloud Platform 上我需要的所有 API。服务帐户允许访问我们组织中的所有 Gmail 帐户。我需要以某种方式限制对特定 Gmail 帐户的访问。

我能找到的最接近这个问题的是这个问题Impersonating list of users with Google Service Account。然而,那里提出的唯一解决方案是将我的项目变成我不想做的市场应用程序。

我曾尝试建立一个组织单位并试图以某种方式将范围限制在此范围内,但似乎有已知的方法(我可以找到)来做到这一点。我确实尝试与 Google Cloud Platform 帮助交谈,但他们不知道答案,因为它不完全属于他们的专业领域,并将我转介到另一个帮助小组,但我没有资格参加他们,因为我不知道t 支付支持费用。

编辑:实际上我想做的事情似乎并不可能。我将回到 OAuth2 身份验证方法。

标签: google-cloud-platformauthorizationservice-accountsorganizational-unit

解决方案


了解服务帐户解释了可能性:

服务帐户既可以被认为是一种资源,也可以被认为是一种身份。

  • 当将服务帐户视为身份时,您可以将角色授予服务帐户,允许其访问资源(例如项目)。

  • 将服务帐户视为资源时,您可以向其他用户授予角色以访问或管理该服务帐户。

现在尝试将那种不切实际的意图融入其中......

如果您需要限制服务帐户对用户特定资源的访问,这只能在应用程序级别完成,而不是系统级别 - 因为服务帐户可以模拟任何用户身份;例如。为了不搞乱所有权,代表用户上传文件时。如果您希望 1 个用户身份访问 1 个用户特定资源,为什么还要使用服务帐户?并且在使用服务帐户时,为什么不直接冒充正确的身份呢?如果它只有 1 个用户身份,它甚至可以是硬编码的。但是,它只能在应用程序级别完成 - 但不能为服务帐户本身进行配置。


推荐阅读