与 API 网关 + Lambda 交互的静态网站的简单轻量级授权方案

Simple lightweight authorization scheme for static website interacting with API Gateway + Lambda

我有一个简单的控制面板作为静态网站托管在 AWS s3 上。它只包含向 API 网关/Lambda 端点发出 AJAX POST 请求然后显示响应的按钮。此 Lambda 函数有权通过 SSM 启动新的 EC2 实例、终止某些实例和 运行 现有实例上的脚本,因此此控制面板以某种方式受密码保护很重要。

请注意,实际上没有传输任何敏感数据,因此我不认为严格要求使用 TLS(而且我什至不确定您如何在 s3 上做到这一点?)。但是 API 请求需要某种授权令牌。

我不太确定在这里做什么 -- 像 JWT 这样的解决方案似乎太过分了。我只想要一个可以给我的朋友的单一静态密码,这样他们就可以访问这个控制面板并提出有效的请求。无需用户/注册。

我认为简单地保护站点本身并不是解决方案,因为 API 网关端点仍然是 public(尽管可能不是——我可以将 API 设置为仅接受 来自 s3 站点的请求?)。需要与 POST 请求一起发送一些令牌来授权每个单独的请求,并且令牌需要更改以防止重放攻击。

谢谢,

两个选项可轻松保护 Api 网关:

  • 简单 Api 密钥:我们可以设置一个 Api Key 并以此保护 api。我们只需要将此密钥作为 X-API-Key 传递给所有 api 调用。我们可以让用户输入这个。
  • 使用 Basic Auth 的自定义授权方以保护 Api 网关。然后用户将需要输入用户名和密码,这将作为授权 header 传递并由该自定义授权方验证。

我们可以同时做这两个,或者两者之一。