【发布时间】:2020-08-25 00:54:03
【问题描述】:
背景
我创建了多个具有云功能和云运行的微服务。现在,使用 Cloud Endpoints,我可以使用 API 密钥安全地触发我的所有服务。但是,我希望能够控制允许每个 API 密钥访问哪些微服务。我只想让用户使用一个 API 密钥。
示例
假设我正在构建一个交易 API,出于安全考虑,当客户创建 API 密钥时,他可以选择 API 密钥是否只允许读取数据(例如:观察市场价格)或同时读取和写入数据(例如:观察市场价格然后下订单)。用户可以轻松更改其 API 密钥权限。
我没有构建任何像交易 API 那样敏感的东西,但这是我正在尝试做的一个很好的例子。
研究
我见过similar post。接受的答案提出了两种解决方案:
使用 Auth0 并以编程方式检查用户授权 我需要监控每个 API 密钥的 API 端点的使用情况。此外,API 密钥安全性足以满足我的用例。
API 密钥我设法限制我的 API 密钥访问我的 Cloud Endpoints API,但是,我没有看到任何选项允许我的密钥仅访问云的某些路径端点 API。
我也相信像 Apigee 这样的服务可以满足我的需要,但我的预算 (POC) 很低,所以我认为它不适合我,我更愿意只使用 GCP 产品。
问题
Cloud Endpoints 是否针对我的用例提出了开箱即用的解决方案?如果是这样,我该怎么办?
如果没有,是否可以:
使用 Cloud Functions 创建另一个代理,以检查 Firestore 数据库是否允许 API 密钥访问请求的方法?逻辑如下:使用 Google 提供的 API 密钥的用户请求 -> Cloud Endpoints 批准 -> 自定义代理功能批准 -> 微服务执行
自定义 ESP 以满足我的用例
自己管理所有 API 身份验证(看起来工作量很大)
【问题讨论】:
标签: authentication google-cloud-functions google-cloud-endpoints