自引用AWS安全组

时间:2018-07-27 20:49:39

标签: amazon-web-services aws-security-group

我的应用程序在Web组件层中具有ELB,NGNIX和ECS,并且将它们全部分组到一个安全组中,并且ELB,NGNIX和ECS之间存在内部通信。我想为这三个之间的通信创建自我参照端口,我是否必须编写自我入口规则或自我出口规则,以便该通信是这三个入站或出站之间的内部通信?

3 个答案:

答案 0 :(得分:4)

默认的 Outbound 安全组允许所有流量,因此除非您有特定的网络要求(例如,强制执行其他限制以满足合规性),否则请不要更改它们。

您可以配置安全组以允许来自其自身的 Inbound 连接(即,该安全组具有自己的ID作为入站连接的源)。这将使与安全组关联的任何Amazon EC2实例都可以与在给定端口上与同一安全组关联的任何其他Amazon EC2实例进行通信。

要注意的重要一点是,安全组是在实例级别强制执行的,而不是在网络级别工作的传统防火墙。因此,不存在多个实例位于“安全组内部”的概念。而是将安全组应用于进入每个实例的流量。因此,需要允许来自“自身”的传入连接。

答案 1 :(得分:0)

当然,您将需要一个带有应用程序正在侦听的端口的入口规则。

默认情况下,安全组的所有出口都是允许的,并且sg是有状态的,因此您不需要入口规则即可使出站流量返回

答案 2 :(得分:0)

可以创建一个安全组以允许其自身发出流量,但是,SecurityGroup资源及其入口规则需要分开,以避免循环依赖。例如;

ConsumerSG:
Type: 'AWS::EC2::SecurityGroup'
Properties:
  VpcId: !ImportValue EnvVpc
  GroupDescription: !Sub 'Security group which grants access to consuming apps'


ConsumerSGIngress:
    Type: 'AWS::EC2::SecurityGroupIngress'
    DependsOn: ConsumerSG
    Properties:
      GroupId: !Ref ConsumerSG
      IpProtocol: tcp
      FromPort: '5000'
      ToPort: '5000'
      SourceSecurityGroupId: !Ref ConsumerSG

这将创建一个安全组,该安全组允许通过其自身在端口5000上进行访问