私のアプリケーションでは、WebコンポーネントレイヤーにELB、NGNIX、ECSがあり、それらすべてを1つのセキュリティグループにグループ化しており、ELB、NGNIX、ECS間に内部通信があります。これら3つの間の通信用の自己参照ポートを作成したかったのですが、この通信の内部進入ルールまたは自己出力ルールを作成する必要がありますか?
デフォルトのOutboundセキュリティグループはすべてのトラフィックを許可するため、特定のネットワーク要件(コンプライアンスを満たすために追加の制限を適用するなど)がない限り、それらを変更しないでください。
自身からのInbound接続を許可するようにセキュリティグループを構成できます(つまり、セキュリティグループには、インバウンド接続のソースとして独自のIDがあります)。これにより、セキュリティグループに関連付けられているすべてのAmazon EC2インスタンスが、(指定されたポートで)同じセキュリティグループに関連付けられている他のAmazon EC2インスタンスと通信できるようになります。
注意すべき重要な点は、セキュリティグループはネットワークレベルで機能する従来のファイアウォールではなく、インスタンスレベルで適用であることです。したがって、複数のインスタンスが「セキュリティグループ内」にあるという概念はありません。むしろ、セキュリティグループは、トラフィックが各インスタンスに入るときにトラフィックに対して適用されます。したがって、「自分」からの着信接続を許可する必要があります。
セキュリティグループは、それ自体からのトラフィックを許可するように作成できますが、循環依存を回避するには、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での自身からのアクセスを許可するセキュリティグループが作成されます。
確かに、アプリがリッスンしているポートの上りルールが必要です。
デフォルトでは、セキュリティグループの下りはすべて許可され、sgはステートフルであるため、発信トラフィックが戻るための上りルールは必要ありません