如何对网络应用的用户进行身份验证,以访问仅与他们相关的 GCP 数据?



我花了 3 天时间研究这个问题,但找不到显示如何解决问题的解决方案或类似用例,因此任何指示将不胜感激。

我正在创建一个使用Google Cloud Storage和Bigquery的网络应用程序。用户在 Web 应用程序上注册,然后可以将数据上传到云存储和大查询。两个用户可能来自同一家公司,因此应该能够查看相同的数据 - 即杰克和吉尔为公司A工作,如果杰克通过这个应用程序上传了大量的数据集,吉尔也应该能够稍后查看它。

另一种情况是我有两个完全独立的客户端,用户使用此 Web 应用程序。如果公司 A 的用户上传数据,则公司 B 的用户应该无法查看公司 A 的数据,反之亦然。但来自同一公司的用户应该能够查看其公司内的数据。

目前,我有一个适用于一家公司的应用程序。它有一个使用 Firebase 进行身份验证的 React 前端。用户登录后,他们可以使用向 Flask 后端发送 API 调用的应用程序,该后端执行一些错误检查和身份验证检查,然后触发对 GCP 的 API 调用。这使用服务帐户,密钥作为环境变量加载到运行 Flask 应用的环境中。

但是,如果公司 B 现在想使用该应用程序,则公司 A 和公司 B 都将能够查看彼此的数据并通过该应用程序将其可视化。此外,他们将共享一个项目(我想更改此设置以更轻松地分配计费,以便每个客户都有自己的项目)。

我最终希望将这个应用程序放到 Kubernetes 上,并确保每个公司彼此独立,但是,不希望为每个使用该应用程序的公司提供单独的 URL。另外,我想将 GCP 从客户端中抽象出来。我更愿意根据用户的登录凭据对用户进行身份验证,然后他们将相应地获得对其 GCP 项目的访问权限(通过我的前端)。

我想过可能为每个客户端使用单独的服务密钥,然后将服务密钥信息存储在 Firebase 中,同时使用各自的密钥进行 API 调用,但不确定这是最佳实践。然而,这是我能想到的唯一策略。

如果有人能提供一些帮助或指导,将不胜感激。这是我的第一个GCP项目,无法在GCP,SO,Google Groups,Slack或Medium上找到任何答案。

谢谢 泰杰

首先,欢迎加入 GCP!这是一个很棒的平台,非常强大和灵活。但不是魔法。

实际上,您描述的用例特定于您的业务逻辑。GCP 提供用于保护用户和虚拟机(通过服务帐户)的访问,但不为客户提供。在这里,您必须实现自己的自定义和授权逻辑,使用数据库(我不建议使用bigquery用于网站,延迟太高)列出三个用户,他们工作的公司,每个公司的blob......

没有什么是神奇的,而且您的用例是特定的。 如果您想讨论更多关于使用和启动哪个组件的信息,没问题。发表评论。

相关内容

最新更新