首页 > 解决方案 > 如何将 EBS 上 Rails 应用程序上的入站安全组限制为仅来自我的应用程序(在 S3 上)并防止其他服务器访问我的 API?

问题描述

我的 Rails 后端 (api.mydomain.com) 托管在 EBS 中。EC2 主机有一个 VPC 安全组。VPC 安全组的入站规则只允许 HTTP 上对应的负载均衡器安全组。负载均衡器安全组允许0.0.0.0/0HTTP 和 HTTPS。我想限制访问我的 Rails 后端的 API 调用只能来自我在 S3 (mydomain.com) 中托管的 Angular 应用程序。这可能吗?

我想防止其他服务器访问我的 API。

标签: amazon-s3amazon-ec2amazon-elastic-beanstalkaws-security-group

解决方案


它与你的 AWS 安全无关;您应该为您的后端 API 设置 CORS 设置,并将您的 API 设置为仅接受来自您的域的请求。

在此处输入图像描述

了解 CORS

同源策略是 Web 浏览器实现的一个重要的安全概念,以防止 Javascript 代码针对与其提供服务的源不同的源(例如,不同的域)发出请求。尽管同源策略可以有效地防止来自不同来源的资源,但它也可以防止服务器与已知和可信来源的客户端之间的合法交互。

跨域资源共享 (CORS) 是一种放宽同源策略的技术,允许网页上的 Javascript 使用从不同来源提供的 REST API。

有关更多信息,请阅读以下文档:

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

https://www.html5rocks.com/en/tutorials/cors/

https://en.wikipedia.org/wiki/Cross-origin_resource_sharing

以及这些关于 CORS 和 Rails 的文档

https://demisx.github.io/rails-api/2014/02/18/configure-accept-headers-cors.html

https://til.hashrocket.com/posts/4d7f12b213-rails-5-api-and-cors

如何在 Rails 4 应用程序中启用 CORS


推荐阅读