Google Secret Manager - 可以用于存储 API 用户的用户名和密码吗?

Posted

技术标签:

【中文标题】Google Secret Manager - 可以用于存储 API 用户的用户名和密码吗?【英文标题】:Google Secret Manager - Can it be used for storing usernames and passwords of API users? 【发布时间】:2020-07-16 03:21:07 【问题描述】:

考虑一个接收 HTTPS 请求并使用 HTTP 基本身份验证的 API。每当收到请求时,应用程序都需要检查标头中的用户名/密码组合是否有效。可能有成千上万的用户,每个用户都有自己的密钥。

我想知道 Google Secret Manager 是否适合这个用例。那就是:

我可以将每个 API 用户名/密码存储在 Secret Manager 中,使用用户名作为密钥 ID。 然后,每当有请求进入时,应用程序将:(1) 查找 Authorization 标头中存在的用户名的凭据,(2) 将标头密码与从 Secret Manager 检索到的密码进行比较,(3) 拒绝如果有不匹配的请求。

对于上述情况,Google Secret Manager 是否有效且可取?

【问题讨论】:

【参考方案1】:

这在技术上是可行的,因为 GCP 项目中的机密数量没有限制。但是,它可能很快变得昂贵。每个秘密是 0.06 美元/月。这意味着每个用户每年花费 0.72 美元。对于 100 万用户,这就是 72 万美元/年 + API 运营成本。

还有延迟需要考虑。您需要在用户请求的上下文中对 Secret Manager 进行 API 调用。这很容易使往返延迟加倍。您考虑的架构是正确的,但 Secret Manager 并不是真正的 LDAP 或身份验证服务器。

【讨论】:

谢谢。这可能应该放在一个单独的问题中,但是您对所描述的用例有什么建议吗?带有 Cloud Run 的 Cloud Endpoints 似乎很接近,但我不确定它的 API 密钥身份验证机制是否适用于管理可能成千上万的用户。 身份感知代理:cloud.google.com/iap。映射到 GSuite 用户或 Cloud Identity 用户:cloud.google.com/identity

以上是关于Google Secret Manager - 可以用于存储 API 用户的用户名和密码吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node.js 更新 Google Cloud Secret Manager 中的数据

Google Secret Manager:不要通过 Spring Boot 从中获得价值

在 Google Secret Manager 中存储二进制数据

Google Secret Manager - 可以用于存储 API 用户的用户名和密码吗?

为啥在由 Apache 运行时,来自 Google Secret Manager API 的 gRPC 调用会挂起?

如何使用 Spring Boot 将来自 Google Secret Manager 的秘密作为环境变量注入 Kubernetes Pod?