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

问题描述 投票:0回答:1

假设我在Big Query上有3个数据集-数据集A,数据集B和数据集C。

此外,我有3个客户端-客户端A,客户端B和客户端C。

[而且,我在App Engine中部署了一个简单的Web应用,带有API,例如'/ weather'。API只需使用Big Query API从客户端的输入中编写查询,然后在数据集上进行读写操作,然后返回结果。

客户端A,B和C具有自己的API密钥,因此他们可以使用天气API。

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

但是,如果客户端A也要访问数据集B,我也希望能够轻松地授予客户端A对数据集B的访问权限,而不必重新部署我的应用程序。

我已经对Cloud Endpoints,App Engine和Big Query进行了大量阅读,但是我找不到真正的解决方案。

希望在Cloud Endpoints级别或App Engine级别或Big Query级别实现这一目标的最佳方法是什么?如果没有,则在后端Python级别(我正在使用Flask)

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

但是那将是一个相当昂贵的操作,我想在GCP级别或后端python级别上解决这个问题。

[请让我知道GCP上是否有任何功能可以帮助我实现这一目标。

google-cloud-platform google-bigquery google-cloud-endpoints api-key
1个回答
0
投票

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

如果要使用弱认证密钥(API密钥)保护API,则Cloud Endpoint是一个很好的解决方案。我wrote an article on this

[这里,您的3个客户将只对3个项目进行身份验证(no USERS, only PROJECTS)。您还可以在查询参数中使用API​​key值。但这是仅身份验证

如果您想要授权层,比如说[[谁有权访问WHAT,在这里,客户端A只能访问数据集A,您必须自己进行编码。

在我公司中,我们将这些数据保存在Firestore中:无服务器,快速,免费(每天最多读取5万次)
© www.soinside.com 2019 - 2024. All rights reserved.