我们的系统有3个主要组成部分:
这一切都适用于制作。
我们还有一个外部无法访问的整体测试版本。
我希望能够启动AWS环境的任意数量的副本,以进行测试或演示,以便访问monolith的演示测试版本。但是,因为它是一个测试系统,所以它需要保持对公众的不公平性。我知道如何使用AWS轻松实现这一点(安全组等),但我如何保护整体,以便只能通过AWS中运行的任意数量的动态创建实例访问它(假设IP地址是动态的,可以因此不被列入白名单?)
我现在唯一的想法是使用访问令牌,但我不确定它有多安全。
编辑 - 我的微服务都在EC2实例上运行。
答案 0 :(得分:0)
假设您在EC2上运行微服务,如果您希望来自AWS中运行的应用程序服务器的API调用来自已知的IP / IP,则可以使用NAT实例或代理来完成此操作。这种方式即使您的应用程序服务器是动态的,请求的明显来源也不是。
对于NAT,您可以在私有子网中运行EC2实例,并将它们配置为通过具有常量IP的NAT实例发送所有Internet流量。使用代理服务器或代理服务器队列可以大致相同的方式完成,但需要将微服务应用程序配置为使用它。
更好的方法是不通过公共互联网将流量发送到您的微服务。
这可以通过建立从公司网络到您的VPC的VPN来实现。或者,您可以建立直接连接以桥接网络。
旁注,如果您的微服务实际上在AWS Lambda中运行,则此答案不适用。