如何在 GCP 上管理/设计 API 访问?



假设我在大查询上有 3 个数据集——数据集 A、数据集 B 和数据集 C。

另外,我有 3 个客户端——客户端 A、客户端 B 和客户端 C。

而且,我在App Engine中部署了一个简单的Web应用程序,其中包含API,例如"/weather"。 API 只是从客户端的输入写入查询,并使用大查询 API 读取和写入数据集,并返回结果。

客户端 A、B 和 C 有自己的 API 密钥,以便它们可以使用天气 API。

但我想限制 API 访问,以便客户端 A 只能访问数据集 A,客户端 B 只能访问数据集B,客户端 C 只能访问数据集 C。

但是,如果客户端 A 也想访问数据集 B,我还希望能够轻松授予客户端 A 对数据集 B 的访问权限,而无需重新部署我的应用。

我已经阅读了很多关于Cloud Endpoints,App Engine和Big Query的书籍,但我真的找不到任何解决方案。

希望在云端点级别、App Engine 级别或大查询级别实现这一目标的最佳方法是什么?如果没有,在后端 Python 级别(我正在使用 Flask(

我能想到的最后一种手段是,我必须在数据库中创建一个简单的字典,其中键是 API 密钥,值是它可以访问的数据集列表。因此,当客户端使用自己的 API 密钥命中端点时,我必须检查并查看客户端是否有权访问数据集。

但这将是一个非常昂贵的操作,我想在 GCP 级别或后端 python 级别处理这个问题。

如果 GCP 上有任何功能可以帮助我实现这一目标,请告诉我。

执行访问控制时,您有 2 个部分:身份验证和授权。

如果要使用弱身份验证机密(API 密钥(保护 API,Cloud Endpoint 是一个很好的解决方案。我为此写了一篇文章。

在这里,对于您的 3 个客户端,您将仅验证 3 个项目(没有用户,只有项目(。查询参数中还有 APIkey 值。但这只是身份验证

如果你想要一个授权层,比如说谁可以访问什么,在这里,客户端A只能访问数据集A,你必须自己编码。

在我的公司中,我们将这些数据保存到Firestore中:无服务器,快速,免费(每天最多读取50k(

最新更新