将对 Google 云平台服务帐户的访问限制为特定 Gmail 帐户
Limiting the access to Google Cloud Platform Service Account to specific Gmail Accounts
我最近制作了一个程序来侦听连接到 Gmail 帐户的 PUB/SUB 主题。我一切正常。当推送通知到达时,它将根据消息内容执行不同的任务。
问题是我使用服务帐户连接到我需要的 Google 云平台上的所有 API。服务帐户允许访问我们组织中的所有 Gmail 帐户。我需要以某种方式限制对特定 Gmail 帐户的访问。
我能找到的最接近这个问题的是这个问题。但是,那里提出的唯一解决方案是将我的项目变成我不想做的市场应用程序。
我已经尝试建立一个组织单位并试图以某种方式将范围限制在该范围内,但似乎有(我能找到的)方法来做到这一点。我确实尝试与 Google Cloud Platform 帮助交谈,但他们不知道答案,因为这不完全属于他们的专业领域,并将我推荐给另一个帮助小组,但我不符合他们的条件因为我不支付支持费用。
编辑:实际上我想做的事情似乎并不可行。我将回到 OAuth2 身份验证方法。
Understanding service accounts 解释了可能性:
Service accounts can be thought of as both a resource and as an identity.
When thinking of the service account as an identity, you can grant a role to a service account, allowing it to access a resource (such as a project).
When thinking of a service account as a resource, you can grant roles to other users to access or manage that service account.
现在试着把那个不切实际的意图放进去...
如果您需要限制服务帐户对用户特定资源的访问,这只能在应用程序级别而不是系统级别完成 - 因为服务帐户可以模拟任何用户身份;例如。为了不弄乱所有权,代表用户上传文件时。如果您希望 1 个用户身份访问 1 个用户特定的资源,为什么还要使用服务帐户?在使用服务帐户时,为什么不直接模拟正确的身份呢?如果只有 1 个用户身份,这甚至可以是硬编码的。但尽管如此,它只能在应用程序级别完成 - 而不能为服务帐户本身配置。
我最近制作了一个程序来侦听连接到 Gmail 帐户的 PUB/SUB 主题。我一切正常。当推送通知到达时,它将根据消息内容执行不同的任务。
问题是我使用服务帐户连接到我需要的 Google 云平台上的所有 API。服务帐户允许访问我们组织中的所有 Gmail 帐户。我需要以某种方式限制对特定 Gmail 帐户的访问。
我能找到的最接近这个问题的是这个问题
我已经尝试建立一个组织单位并试图以某种方式将范围限制在该范围内,但似乎有(我能找到的)方法来做到这一点。我确实尝试与 Google Cloud Platform 帮助交谈,但他们不知道答案,因为这不完全属于他们的专业领域,并将我推荐给另一个帮助小组,但我不符合他们的条件因为我不支付支持费用。
编辑:实际上我想做的事情似乎并不可行。我将回到 OAuth2 身份验证方法。
Understanding service accounts 解释了可能性:
Service accounts can be thought of as both a resource and as an identity.
When thinking of the service account as an identity, you can grant a role to a service account, allowing it to access a resource (such as a project).
When thinking of a service account as a resource, you can grant roles to other users to access or manage that service account.
现在试着把那个不切实际的意图放进去...
如果您需要限制服务帐户对用户特定资源的访问,这只能在应用程序级别而不是系统级别完成 - 因为服务帐户可以模拟任何用户身份;例如。为了不弄乱所有权,代表用户上传文件时。如果您希望 1 个用户身份访问 1 个用户特定的资源,为什么还要使用服务帐户?在使用服务帐户时,为什么不直接模拟正确的身份呢?如果只有 1 个用户身份,这甚至可以是硬编码的。但尽管如此,它只能在应用程序级别完成 - 而不能为服务帐户本身配置。