Graphql 针对100%公开、未经验证的API的AppSync安全最佳做法';s
我们目前正在使用无服务器AppSync插件和无服务器框架(自然)部署到AppSync 我们的API是100%公开且未经验证的。所有查询和突变基本上都是公开的,因为此时我们不需要用户(例如通过Cognito池) 我们已经使用api密钥添加了第一层安全性,但这毫无疑问并不多,因为api密钥与前端源代码一样包含在其中。我们希望添加额外的障碍,使恶意用户更难滥用前端API 我想到了几件事:Graphql 针对100%公开、未经验证的API的AppSync安全最佳做法';s,graphql,aws-appsync,Graphql,Aws Appsync,我们目前正在使用无服务器AppSync插件和无服务器框架(自然)部署到AppSync 我们的API是100%公开且未经验证的。所有查询和突变基本上都是公开的,因为此时我们不需要用户(例如通过Cognito池) 我们已经使用api密钥添加了第一层安全性,但这毫无疑问并不多,因为api密钥与前端源代码一样包含在其中。我们希望添加额外的障碍,使恶意用户更难滥用前端API 我想到了几件事: 速率限制(AppSync目前不支持,但我已经读到它正在进行中)。例如,我不想在Lambda中使用定制的解决方案来实
我正在考虑切换到Apollo Server,因为此解决方案似乎更开放、更可配置…我建议使用AppSync的IAM auth选项,然后使用向您的客户端应用程序提供临时AWS凭据。标识池(与用户池相反)提供临时AWS凭据,这些凭据假定您选择的角色具有访问权限。配置标识池时,可以定义对AppSync API具有完全访问权限的角色,也可以选择性地提供访问权限。在客户端应用程序中,您可以使用临时凭据对到AppSync的请求进行签名,AppSync将只允许执行具有有效签名的请求。临时凭证还提供了一个额外的安全层,因为即使它们被破坏,每个凭证也只能在允许的最长时间内提供访问
我还要补充一点,您可以在AppSync API中同时使用多个身份验证模式。这允许您保护上述所有字段,然后有选择地标记特定的其他字段,以便通过用户池或OIDC等其他机制对其进行授权。我建议使用AppSync的IAM auth选项,然后使用向您的客户端应用程序提供临时AWS凭据。标识池(与用户池相反)提供临时AWS凭据,这些凭据假定您选择的角色具有访问权限。配置标识池时,可以定义对AppSync API具有完全访问权限的角色,也可以选择性地提供访问权限。在客户端应用程序中,您可以使用临时凭据对到AppSync的请求进行签名,AppSync将只允许执行具有有效签名的请求。临时凭证还提供了一个额外的安全层,因为即使它们被破坏,每个凭证也只能在允许的最长时间内提供访问 我还要补充一点,您可以在AppSync API中同时使用多个身份验证模式。这允许您保护上面提到的所有字段,然后有选择地标记特定的其他字段,以便通过一些其他机制(如用户池或OIDC)对其进行授权