我们当前正在使用无服务器应用同步插件和无服务器框架(自然)部署到AppSync。
我们的API是100%公开且未经身份验证的。所有查询和变异基本上都是公开的,因为此时我们不需要用户(例如,通过Cognito池)。
我们使用api密钥添加了第一层安全性,但这无疑不多,因为api密钥按原样包含在前端源中。我们希望添加更多的障碍,以使恶意用户更难以滥用该前端API。
我想到了一些事情:
我正在考虑切换到Apollo Server,因为此解决方案似乎更加开放和可配置...
答案 0 :(得分:0)
我建议使用AppSync的IAM身份验证选项,然后使用Amazon Cognito Identity Pools向您的客户端应用程序出售临时AWS凭证。身份池(与用户池相对)出售临时的AWS凭证,这些凭证假定已访问您选择的角色。配置身份池时,您可以定义对AppSync API具有完全访问权限的角色,也可以有选择地提供访问权限。在客户端应用程序中,您可以使用临时凭据使用SigV4对AppSync的请求进行签名,并且AppSync仅允许执行具有有效签名的请求。临时证书还提供了额外的安全性,即使它们被破坏了,每个证书也只能提供最长允许的访问时间。
我还要补充一点,您可以通过AppSync API一次使用多种身份验证模式。这样,您就可以如上所述保护所有字段,然后有选择地标记特定的其他字段,以便通过用户池或OIDC等其他机制对它们进行授权。