如何保护网站和移动应用程序中的API网关?

时间:2018-11-24 13:18:03

标签: amazon-web-services security aws-api-gateway

我们正在使用React创建一个无服务器网站,并将为其创建Mobile App。 我们正在使用API​​网关访问AWS服务,并且每个人都将使用我们的网站,而无需登录或任何安全性。我有两个有关如何保护此API的问题

  1. 对于网站,我仅从我们的网站设置了API的跨域访问。这足以保证安全性吗?我还有其他方法可以确保这一点吗?
  2. 对于移动应用程序,这是我的难处,我如何确保将由随机用户使用的移动应用程序的API安全。

2 个答案:

答案 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授权者。