Ruby on rails 保护Heroku应用程序的公共可用RDS后端

Ruby on rails 保护Heroku应用程序的公共可用RDS后端,ruby-on-rails,amazon-web-services,heroku,rds,Ruby On Rails,Amazon Web Services,Heroku,Rds,我们目前有一个RoR应用程序托管在Heroku,带有AWS RDS后端。目前,RDS实例可供所有入站流量使用。要仅允许来自Heroku应用程序的流量,我可以在此处列出适用的IP块: …或者像Proximo或QuotaGard这样的附加组件是我唯一的选择吗 此外,在RDS实例受密码保护的情况下,让所有传入流量都能使用RDS实例是否存在安全问题?正如Jarmod的评论所建议的,不建议将您的数据库公开给外界,即使它受密码保护且通信加密。并不是说您的数据完全公开,而是在处理敏感信息时,建议控制除了用户

我们目前有一个RoR应用程序托管在Heroku,带有AWS RDS后端。目前,RDS实例可供所有入站流量使用。要仅允许来自Heroku应用程序的流量,我可以在此处列出适用的IP块:

…或者像Proximo或QuotaGard这样的附加组件是我唯一的选择吗


此外,在RDS实例受密码保护的情况下,让所有传入流量都能使用RDS实例是否存在安全问题?

正如Jarmod的评论所建议的,不建议将您的数据库公开给外界,即使它受密码保护且通信加密。并不是说您的数据完全公开,而是在处理敏感信息时,建议控制除了用户/密码授权之外,谁可以请求访问数据

不幸的是,当你在Heroku上运行时,你没有太多的选择。即使是Heroku自己的Postgresql数据库,如果您知道它的url/端点,也可以公开访问

如果要提高安全性,有两种选择:

1) 使用出站代理插件 正如您所建议的,您可以使用代理插件(如Proximo或Fixie)并将AWS安全组配置为仅接受来自代理静态IP的连接

我已经在我的回复中详细说明了这种方法的缺点:“

2) 将应用程序从Heroku迁移到AWS 根据您公司的规模和产品的成熟度,考虑从Helku迁移到AWS是一个好主意。 当应用程序的堆栈完全在AWS中运行时,您将对安全性有更多的控制,并可以决定要保护数据的程度

我帮助一些客户进行了类似的迁移,安全性是从Heroku迁移到AWS的三大原因之一


希望这会有所帮助。

理想情况下,无论密码保护如何,您都不应该将数据库公开给外界,甚至不应该公开给(非常广泛的)EC2 IP范围。你能在Heroku中为你的应用程序获得一个固定的静态IP,然后你就可以在你的RDS安全组中加入白名单吗?(话题之外,但是)RDS后端与Heroku配合得好吗?考虑到我们自己的行动。