我们正在使用React创建一个无服务器网站,并将为其创建Mobile App。 我们正在使用API网关访问AWS服务,并且每个人都将使用我们的网站,而无需登录或任何安全性。我有两个有关如何保护此API的问题
答案 0 :(得分:2)
由于需要公开公开网站和API,因此我建议它通过AWS CloudFront公开同一来源的Web应用程序和API(您可以将/ API映射到API Gateway以及到S3的其余路径如果您将React应用存储在S3中)。
在安全性方面获得的优势是,您可以将AWS WAF配置为AWS Cloudfront,从而可以预防多种常见威胁。
注意:将API网关集成到CloudFront时,请确保使用CloudFront中的API密钥(在原始标头中使用API密钥)访问API网关,以防止从外部直接访问API网关。
答案 1 :(得分:0)
仅设置交叉原点是好的,但还不够。
您可以使用AWS Signature V4保护API网关端点。签名版本4是将身份验证信息添加到HTTP发送的AWS请求的过程。 简而言之,它用于验证发送到您的API的请求。
您可以使用yaml或通过控制台设置AWS Signature V4。在前端的网站上,您可以使用AWS Amplify库对请求进行签名。 查看this article,了解如何使用前端的AWS Amplify使用AWS Signature V4签名API网关请求。
除了AWS Signature V4,您还可以设置自定义授权方来验证请求。请查看this article的IAM许可和客户授权者部分,以了解如何为您的API配置AWS_IAM或Lambda授权者。