セキュリティグループの受信アクセス範囲の見直し

セキュリティグループの受信アドレス範囲が必要なクライアントの範囲を超えていないか確認し、アクセスを最小限にしてください。

説明

セキュリティグループで必要以上に広い送信元CIDRを許可すると、意図しないホストからもサービスへの接続試行を受ける可能性があります。広いプライベート範囲でも信頼境界を越えるアクセスを許す場合があるため、プライベートアドレスという理由だけですべてのホストを信頼しないでください。

適切な範囲は、関連付けたリソースと承認済みのクライアントによって異なります。小さいCIDRにも不要なクライアントが含まれる場合があります。実際の接続には、ポート、プロトコル、ルーティング、ほかのセキュリティグループ、サービスの認証も影響します。

想定される影響

  • アクセスが不要なホストによるサービスの探索やログイン試行を許す可能性があります。
  • 複数のリソースでグループを共有していると、一つの広すぎるルールが複数のサービスに影響する場合があります。

対処方法

  • 関連付けたリソースと必要な通信を確認し、承認済みの送信元、ポート、プロトコルだけを許可してください。対応する環境ではセキュリティグループの参照を使用してください。
  • リソースに適用されるすべてのグループを確認し、不要な範囲を削除してください。CIDRの大きさだけで適切かどうかを判断しないでください。
  • Ansibleのpurge_rulesが既存ルールに与える影響を確認し、維持する受信ルールをすべて定義してください。変更後に必要な接続と拒否すべき接続をテストしてください。

例

vpc_id変数に実際のVPCを指定し、実行環境でAWS認証を構成してください。二つは同じグループを管理する別々の構成案で、TCPポート80のアクセス範囲だけを比較しています。実際のサービスのポートと承認済みクライアントのアドレスに合わせて変更してください。

変更前

yaml
- name: example ec2 group
  amazon.aws.ec2_security_group:
    name: example
    description: an example EC2 group
    vpc_id: "{{ vpc_id }}"
    region: eu-west-1
    rules:
      - proto: tcp
        from_port: 80
        to_port: 80
        cidr_ip: 0.0.0.0/0

すべてのIPv4アドレスからTCPポート80への受信接続を許可します。

変更後

yaml
- name: example ec2 group2
  amazon.aws.ec2_security_group:
    name: example
    description: an example EC2 group
    vpc_id: "{{ vpc_id }}"
    region: eu-west-1
    rules:
      - proto: tcp
        from_port: 80
        to_port: 80
        cidr_ip: 10.1.1.1/32

送信元を10.1.1.1/32に限定します。承認済みクライアントの実際のアドレスかを確認し、同じリソースに適用されるほかのグループも点検してください。

参考資料