【问题标题】:How to restrict access to URL deployed through google cloud run?如何限制对通过谷歌云运行部署的 URL 的访问?
【发布时间】:2020-11-05 05:18:08
【问题描述】:

我已经通过 google cloud run 部署了一个应用程序。如何限制用户访问正在访问的 URL?我只希望一组特定的用户能够使用该 URL。有没有办法做到这一点?

【问题讨论】:

  • 定义一组用户的含义。您使用什么进行用户身份验证?更多细节将有助于生成一个好的答案。
  • 用户是如何认证的?他们的身份提供者是什么?

标签: google-cloud-platform google-cloud-run


【解决方案1】:

您正在寻找的是在人类浏览器中进行的“最终用户身份验证”。

所以,IAM 不会帮你解决这个问题。

如果您希望构建一个带有“Google 登录”按钮的应用,您可以按照https://cloud.google.com/run/docs/authenticating/end-users 的指南进行操作。但是,您需要验证用户的真实性(从 Firebase 身份验证传给您的 JWT 令牌)并查看他们是否“被授权”查看该页面。

如果您希望让“代理”为您处理身份验证,则应使用 Cloud IAP,但在撰写本文时,启用 IAP 的 Cloud Load Balancer 尚不支持 Cloud Run。使用 IAP,您可以说“这些用户/组可以访问此 URL”。

另一种选择是运行开源代理/中间件(类似于 IAP),例如 Pomerium.io,以处理用户身份验证并将流量代理到实际后端。为此,请参阅Authorizing end users in Cloud Run with Pomerium。这可以提供比 Cloud IAP 更大的灵活性(例如,支持非 Google 身份提供商)。

【讨论】:

    【解决方案2】:

    限制用户访问 Cloud Run 的方法有很多:

    1. 每服务 IAM 权限:部署/编辑服务时,您可以选择“仅允许经过身份验证的请求”。这基本上会做两件事,一是限制对项目的 IAM 权限列表中列出的用户的访问。其次,您可以授予电子邮件地址和/或电子邮件域的调用权限。当访问应用程序的用户集不大或他们在同一域下都有电子邮件时,此选项特别有用。文档here

    2. Firebase 身份验证:当用户群拥有多个电子邮件域并且服务进行某种“帐户注册”时,使用联合身份验证服务(如 Firebase Auth)可能会很有用。它几乎是一个即插即用的选项,允许多种签名方法,从经典的电子邮件和密码验证到 Google 或 Github 登录。这里要注意的一件事是,您需要为项目启用 Firebase 并设置一些代码以使其工作。 Cloud Run documentation 中列出了此选项和下一个选项。

    3. Identity Platform:此选项与 Firebase Auth 大体相同,提供多种用户身份验证和一套 SDK 来实现该流程。值得一提的是,这比 Firebase Auth 要复杂一些。 Docs.

    虽然上述所有方法都可用于实现您的目标,但它们在身份验证的完成方式、配置所需的内容等方面有所不同。因此,建议评估应用程序的需求以对专业人士进行有意义的比较/缺点。


    编辑: 正如 AhmetB 指出的那样,Cloud IAP 仍然无法用于 Cloud Run。把这部分答案留在这里:

    1. Identity Aware Proxy:Identity aware proxy 提供了一个身份验证层,大致用作每个服务的 IAM 权限。使用它,您必须通过 IAP 设置授予对电子邮件/域的访问权限。此选项的一个区别在于,Google 提供的特殊标头附加到每个传入请求,可用于获取调用者的电子邮件并以编程方式验证其身份验证。

    【讨论】:

    【解决方案3】:

    首先,您需要将这些用户引入您的 GCP 组织。将他们添加为您组织的成员。他们的电子邮件 ID 足以带来组织。接下来,您可以分配查看云运行的权限。 在https://cloud.google.com/run/docs/securing/managing-access查看管理访问权限的步骤

    【讨论】:

    • ???不确定您是否解决了这个问题,它在 Cloud Run 上,而不是 Cloud Functions 上!
    • 哦。我更改了云运行的链接。
    • 问题是关于最终用户身份验证(即浏览器),因此 IAM 不会在这里提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2018-01-04
    • 2021-10-09
    • 2021-05-13
    • 1970-01-01
    • 2017-02-23
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多