使本地托管服务器仅由AWS托管实例访问

时间:2016-01-13 23:57:36

标签: security amazon-web-services

我们的系统有3个主要组成部分:

  • 在AWS中运行的一组微服务,它们共同构成一个webapp。
  • 一个非常大的单片应用程序,托管在我们的网络中,由几个其他Web应用程序组成,并公开AWS实例使用的公共API。
  • 本地托管(非常大)的数据库。

这一切都适用于制作。

我们还有一个外部无法访问的整体测试版本。

我希望能够启动AWS环境的任意数量的副本,以进行测试或演示,以便访问monolith的演示测试版本。但是,因为它是一个测试系统,所以它需要保持对公众的不公平性。我知道如何使用AWS轻松实现这一点(安全组等),但我如何保护整体,以便只能通过AWS中运行的任意数量的动态创建实例访问它(假设IP地址是动态的,可以因此不被列入白名单?)

我现在唯一的想法是使用访问令牌,但我不确定它有多安全。

编辑 - 我的微服务都在EC2实例上运行。

1 个答案:

答案 0 :(得分:0)

假设您在EC2上运行微服务,如果您希望来自AWS中运行的应用程序服务器的API调用来自已知的IP / IP,则可以使用NAT实例或代理来完成此操作。这种方式即使您的应用程序服务器是动态的,请求的明显来源也不是。

对于NAT,您可以在私有子网中运行EC2实例,并将它们配置为通过具有常量IP的NAT实例发送所有Internet流量。使用代理服务器或代理服务器队列可以大致相同的方式完成,但需要将微服务应用程序配置为使用它。

更好的方法是不通过公共互联网将流量发送到您的微服务。

这可以通过建立从公司网络到您的VPC的VPN来实现。或者,您可以建立直接连接以桥接网络。

旁注,如果您的微服务实际上在AWS Lambda中运行,则此答案不适用。