Google Cloud Api Gateway 是不是提供请求签名和验证 sdk,例如使用 Signature 4 签署 AWS API Gateway 请求?

Posted

技术标签:

【中文标题】Google Cloud Api Gateway 是不是提供请求签名和验证 sdk,例如使用 Signature 4 签署 AWS API Gateway 请求?【英文标题】:Does Google Cloud Api Gateway provide request signing and verification sdk like signing AWS API Gateway requests using Signature 4?Google Cloud Api Gateway 是否提供请求签名和验证 sdk,例如使用 Signature 4 签署 AWS API Gateway 请求? 【发布时间】:2021-10-25 00:20:23 【问题描述】:

在 Google Cloud documentation 上,它提到了已签名的请求,但没有提供任何进一步的信息。有谁知道 Google Cloud Api Gateway 是否提供这样的功能?

该 API 可供未登录用户使用,因此我无法使用 JWT 授权。

【问题讨论】:

AFAIK,不,只允许使用 API 密钥或基于身份的令牌 (jwt)。然而,一个 JWT 被签名,但它不是 AWS SigV4 @guillaumeblaquiere 我明白了。您知道保护未登录用户可用的 API 的任何好方法吗? 如果用户不知道/未登录,您所说的“安全”是什么意思?您要针对什么保护您的应用 @guillaumeblaquiere 保护我们的 API 或资源不被脚本轻易滥用 您可以使用API​​ Keys,只有知道密钥的系统才能访问API。您还可以使用 API 密钥和 API 网关设置速率限制。这是每个 API 密钥。 【参考方案1】: 使用签名的签名请求只能用于访问云 通过 XML API 端点存储资源。签名(使用 V4 签名)是一种验证发送到 云存储 XML API。例如,在工作时使用签名 带有签名的 URL、签名的请求和 html 表单。这里是 documentation 与此相关的链接。 然而,API 网关仅使用 API 密钥、服务帐户和 JWT 作为 在传递之前验证传入请求的身份验证方法 正如 guillaume blaquiere 所提到的,将它们发送到您的 API 后端。这是 documentation 链接。 API 网关使用JWT、Firebase、Auth0、Okta 和 Google ID Token 对用户进行身份验证。 除了验证最终用户请求之外,您可能还需要 authenticate services(非人类用户)请求 你的 API。我们可以使用 : - 使用私钥文件创建服务帐户 调用服务用于签署 JWT。 - 为您的网关创建一个API config,您指定一个 网关用来与之交互的服务帐户 其他服务。为了启用服务帐户 调用网关的服务的身份验证,修改 API 配置中的 security requirement object 和 security definitions object。 我们还可以保护 API 网关和后端之间的访问 服务。您可以阻止对您的后端管理的公共访问 通过此documentation 链接提供服务

如果您担心主要由 API 网关用于身份验证的 API 密钥的安全性,您也可以通过多种方式使用这些密钥restrict API access。但是,始终建议将使用签名的 JWT 或令牌作为最佳实践,因为 API 密钥通常可供客户端访问,从而使某人很容易窃取 API 密钥。密钥一旦被盗,就不会过期,因此可以无限期使用,除非项目所有者撤销或重新生成密钥。

【讨论】:

以上是关于Google Cloud Api Gateway 是不是提供请求签名和验证 sdk,例如使用 Signature 4 签署 AWS API Gateway 请求?的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud 线上课堂 | Kubernetes 网络演进,GKE Gateway API 打开新篇章

Google Cloud 线上课堂 | Kubernetes 网络演进,GKE Gateway API 打开新篇章

spring api gateway 不会将我重定向到 keycloak 提供的 spring-cloud-gateway-client url

Spring Cloud Gateway 找不到 Fluent Java Routes API

用于复合 API 调用的 Spring Cloud Gateway?

使用 Spring Cloud Gateway 实现微服务 API 网关