Network ACL ルールのポート範囲が重複

Network ACL の重複するポート範囲を、CIDR、通信方向、プロトコル、ルールの順序と併せて確認してください。

説明

Network ACL のポート範囲が重なっていても、対象の通信が異なれば競合しません。同じ NACL の同じ方向で、CIDR とプロトコルも該当するルールが複数ある場合は、番号の小さいルールが先に適用されます。

広い許可ルールの後に具体的な拒否を置くと、意図した拒否が適用されないことがあります。一方、意図した例外や異なるネットワーク向けの許可では、ポート範囲の重複が適切な場合もあります。重複だけを理由に削除しないでください。

想定される影響

  • 順序の誤解により、必要な遮断が適用されなかったり、正当な通信が途絶えたりする可能性があります。
  • 重複したルールや不明確な目的は、変更の影響を把握しにくくします。

対処方法

  • NACL と通信方向ごとに、CIDR、プロトコル、ポート範囲、適用順序をまとめて確認してください。
  • 優先する例外には小さい番号を指定し、不要な重複だけを整理してください。
  • 変更前後に必要な通信と応答経路をテストしてください。範囲を縮小すると、それまで許可されていた接続が切れることがあります。

例

MyNacl と残りのルールは省略しています。以下のルールは異なる CIDR を対象とするため、ポートの重複だけで競合する例ではありません。

変更前

yaml
Resources:
  AllowRangeOne:
    Type: AWS::EC2::NetworkAclEntry
    Properties:
      NetworkAclId: !Ref MyNacl
      RuleNumber: 100
      Protocol: 6
      RuleAction: allow
      CidrBlock: 172.16.0.0/24
      PortRange:
        From: 13
        To: 22

  AllowRangeTwo:
    Type: AWS::EC2::NetworkAclEntry
    Properties:
      NetworkAclId: !Ref MyNacl
      RuleNumber: 110
      Protocol: 6
      RuleAction: allow
      CidrBlock: 173.20.0.0/24
      PortRange:
        From: 20
        To: 25

ポート 20–22 が重複していますが、それぞれ異なるクライアント範囲を許可しています。

変更後

yaml
Resources:
  AllowRangeOne:
    Type: AWS::EC2::NetworkAclEntry
    Properties:
      NetworkAclId: !Ref MyNacl
      RuleNumber: 100
      Protocol: 6
      RuleAction: allow
      CidrBlock: 172.16.0.0/24
      PortRange:
        From: 13
        To: 19

  AllowRangeTwo:
    Type: AWS::EC2::NetworkAclEntry
    Properties:
      NetworkAclId: !Ref MyNacl
      RuleNumber: 110
      Protocol: 6
      RuleAction: allow
      CidrBlock: 173.20.0.0/24
      PortRange:
        From: 20
        To: 25

最初の CIDR について、このルールによるポート 20–22 の許可を取り除きます。その接続が不要と確認できた場合にだけ変更してください。

参考資料