모든 IPv4 또는 IPv6 주소를 지정한 보안 그룹 규칙

보안 그룹의 전체 주소 허용이 필요한지 검토하고 인바운드와 아웃바운드 접근을 각각 제한하세요.

설명

보안 그룹의 0.0.0.0/0과 ::/0은 각각 모든 IPv4·IPv6 주소를 뜻합니다. 인바운드에서는 출발지 전체를, 아웃바운드에서는 목적지 전체를 허용합니다. 포트와 프로토콜은 별도 설정이며, 공개 웹 서비스처럼 전체 출발지 허용이 필요한 경우도 있습니다.

AWS 기본 보안 그룹의 초기 인바운드 규칙은 같은 그룹의 리소스 간 통신을 허용합니다. 초기 아웃바운드는 전체 IPv4를 허용하며 VPC에 IPv6 CIDR이 있으면 전체 IPv6도 허용합니다. 업무상 필요한 범위인지 확인하세요.

잠재적 영향

  • 불필요한 인바운드 허용은 네트워크 경로가 연결된 서비스에 원치 않는 접속 시도를 허용할 수 있습니다.
  • 넓은 아웃바운드 허용은 리소스가 불필요한 외부 목적지로 통신할 수 있는 범위를 늘립니다.

해결 방법

  • 필요한 출발지·목적지, 포트와 프로토콜을 정하고 불필요한 전체 주소 규칙을 제거하세요. 의도적인 공개 서비스도 필요한 포트로 제한하세요.
  • 연결된 모든 그룹을 확인하고 공유 그룹 변경의 영향을 검토하세요. 기본 그룹 대신 용도별 그룹을 명시적으로 연결하는 방안도 검토하세요.
  • 아웃바운드를 제한하려면 rules_egress를 명시하세요. 생략과 빈 배열의 차이, purge_rules와 purge_rules_egress가 기존 규칙을 제거하는 범위를 확인하세요. 보안 그룹은 상태를 추적하므로 허용된 요청의 응답은 반대 방향 규칙과 무관하게 허용될 수 있습니다.

예시

실제 VPC와 승인된 IPv4·IPv6 출발지 CIDR을 변수로 제공하고 실행 환경에 AWS 인증을 구성하세요. 두 예시는 같은 그룹의 대안 구성으로 TCP 10050의 인바운드만 비교하며, 아웃바운드 제한은 별도로 설정해야 합니다.

변경 전

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: 10050
        to_port: 10050
        cidr_ip:
          - 0.0.0.0/0

모든 IPv4 주소에서 TCP 10050으로 들어오는 연결을 허용합니다.

변경 후

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: 10050
        to_port: 10050
        cidr_ip: "{{ allowed_ipv4_cidr }}"
        cidr_ipv6: "{{ allowed_ipv6_cidr }}"

승인된 출발지 범위만 지정합니다. 두 CIDR이 실제 필요한 범위인지 검토하고 적용되는 다른 그룹과 함께 연결 결과를 시험하세요.

참조