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

Posted

技术标签:

【中文标题】如何将 EBS 上 Rails 应用程序上的入站安全组限制为仅来自我的应用程序(在 S3 上)并防止其他服务器访问我的 API?【英文标题】:How do I limit inbound security group on Rails app on EBS to only come from my app (on S3) and prevent other servers from hitting my APIs? 【发布时间】:2019-03-21 15:16:35 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

这和你的 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

How to enable CORS in Rails 4 App

【讨论】:

CORs 阻止来自其他域的 JavaScript 访问我的 API,但我想阻止其他服务器访问我的后端。 所以,编辑您的问题并添加它,因为您的问题提到了 Angular 应用程序。 据我所知,这是不可能的; S3 是您文件的容器,对您的 API 的所有请求都来自您的用户 IP 地址。

以上是关于如何将 EBS 上 Rails 应用程序上的入站安全组限制为仅来自我的应用程序(在 S3 上)并防止其他服务器访问我的 API?的主要内容,如果未能解决你的问题,请参考以下文章

Pipeline的入站流程详解(netty源码死磕7)

云服务器上的数据库连接问题

防火墙中的入站规则仅适用于管理员权限

如何用命令查看防火强开启的入站规则端口号

在实例安全组的入站部分使用 VPC 的 CIDR 会阻止负载均衡器到达它

在c#中以编程方式查询网卡的入站/出站IPv4数据包计数统计