我有两个Elastic Beanstalk应用程序“a”和“b”。任何人都应该能够通过http与(a)交谈,但只有(a)应该能够与(b)交谈。即。
internet -> a -> b
现在,如果两个应用程序都完全对互联网开放,那么一切正常。但是当我试图限制(b)ELB的安全组时,(a)似乎无法连接。
即。如果我允许(b)的负载均衡器安全组允许http:0.0.0.0/0,一切正常。但如果我将同一个安全组设置为仅允许http:[(a)的安全组],则(a)不能再与(b)通信。
两个应用都在同一个VPC中。我错过了什么?
- 编辑 -
明确:
工作:
App A的ELB安全组设置,允许任何人访问HTTP / S.
App A的EC2安全组,只允许从A的ELB访问(是的,我在这里缺少https,但现在可以了)
App B的ELB安全组,允许任何人访问
App B的EC2安全组,仅允许从B的ELB访问
不工作:
与上述相同,但将B的ELB安全组更改为仅允许从A的EC2组进行访问。哎呀,为了确定,我们将添加A的EC2和ELB。
App B的ELB安全组,仅允许从App A访问
答案 0 :(得分:2)
如果有人这样做(正如有些人声称的那样),我会对细节非常感兴趣。我注册了一个支持帐户,并在AWS上开了一张票,正式他们说这是不可能的:
在研究了更多您尝试实施的设置之后 不受支持。在它所述的安全组规则部分中 当在SG规则中引用安全组时,它允许访问 来自与源关联的实例的本地IP地址 小组,而不是他们的公共或弹性IP。以下是文档页面 有关该主题的更多信息。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#security-group-rules
要完成您想要做的事情,需要更多设置,但是 是可能的。
下面我已经包含了一个指向教程的链接 将EB环境部署到VPC中,私有实例 子网以及在AWS上设置NAT实例的过程。 使用它,它将允许您拥有您的私人EB应用程序 只能从公共EB应用程序访问的实例。
我建议考虑使用这种架构来设置新的VPC 而不是尝试修改现有的VPC。
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo-vpc-basic.html http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html#NATInstance
即。两个EB实例之间的流量来自A的公共IP地址,但安全组仅对私有IP地址起作用。我还没有完成阅读,但看起来解决方案是创建一个新的VPC并将两者一起NAT,所以所有请求看起来都是来自私有IP地址。
这有点粗糙,其中最重要的是创造所有新的VPC将是一个皇家的痛苦。如果其他人在没有这个的情况下工作那么非常好奇。