전체 IPv4 대역을 허용하는 보안 그룹

Ansible 보안 그룹의 인바운드·아웃바운드 규칙에서 전체 IPv4 대역을 허용하는 설정을 점검합니다.

설명

보안 그룹 규칙의 cidr_ip가 0.0.0.0/0이면 지정된 포트와 프로토콜에 대해 모든 IPv4 주소에서 들어오거나 모든 IPv4 주소로 나가는 통신을 허용합니다. 내부 애플리케이션이나 데이터베이스에 필요한 범위보다 넓은 접근을 허용하지 않도록 설정을 검토하세요.

인바운드 규칙은 들어오는 통신의 출발지를, 아웃바운드 규칙은 나가는 통신의 목적지를 제한합니다. 전체 대역을 허용한 아웃바운드 규칙만으로 외부에서 데이터베이스에 접속할 수 있는 것은 아닙니다. 인터넷에서 실제로 도달할 수 있는지는 공개 IP 주소, 라우팅, 포트 등도 함께 확인해야 합니다.

잠재적 영향

  • 외부에서 도달할 수 있는 서비스의 인바운드 범위가 넓으면 원치 않는 접속 시도를 받기 쉬워집니다. 데이터 접근 여부는 서비스 인증과 권한에도 좌우됩니다.
  • 아웃바운드 범위가 불필요하게 넓으면 침해된 워크로드가 외부 목적지와 통신할 수 있는 범위가 커질 수 있습니다.
  • 공개 웹 서비스 등 전체 대역 통신이 필요한 경우도 있으므로 포트, 방향, 업무 목적에 맞게 판단해야 합니다.

해결 방법

  • 인바운드 출발지와 아웃바운드 목적지를 구분해 필요한 CIDR, 포트, 프로토콜만 허용하세요.
  • 지원되는 경우 애플리케이션 서버의 보안 그룹을 참조하거나 관리용 고정 IP 범위를 지정하세요. 사설 대역 전체를 허용하는 것도 필요 이상으로 넓을 수 있습니다.
  • IPv6에서 전체 주소를 뜻하는 ::/0도 함께 검토하고, 변경 후 필요한 통신이 유지되는지 확인하세요.

예시

다음 예시는 통신 범위를 비교하기 위한 불완전한 구성입니다. vpc_id: 12345는 실제 VPC ID가 아니며 첫 예시의 eu-west-1a는 리전이 아닌 가용 영역입니다. RDS 설정과 보안 그룹의 실제 연결 관계도 환경에 맞게 확인해야 합니다. 그대로 배포하지 마세요.

변경 전

yaml
- name: create minimal aurora instance in default VPC and default subnet group
  community.aws.rds_instance:
    engine: aurora
    db_instance_identifier: ansible-test-aurora-db-instance
    instance_type: db.t2.small
    password: "{{ password }}"
    username: "{{ username }}"
    cluster_id: ansible-test-cluster
    db_security_groups: ["example"]

- name: example ec2 group
  ec2_group:
    name: example
    description: an example EC2 group
    vpc_id: 12345
    region: eu-west-1a
    rules:
      - proto: tcp
        from_port: 80
        to_port: 80
        cidr_ip: 0.0.0.0/0
      - proto: tcp
        from_port: 22
        to_port: 22
        cidr_ip: 10.0.0.0/8
    rules_egress:
      - proto: tcp
        from_port: 80
        to_port: 80
        cidr_ip: 0.0.0.0/0

변경 후

yaml
- name: example ec2 group
  ec2_group:
    name: example-db
    description: database access group
    vpc_id: 12345
    region: eu-west-1
    rules:
      - proto: tcp
        from_port: 3306
        to_port: 3306
        cidr_ip: 10.1.1.1/32
    rules_egress:
      - proto: tcp
        from_port: 443
        to_port: 443
        cidr_ip: 10.1.1.1/32

설명:

  • 변경 전: TCP 포트 80의 인바운드 출발지와 아웃바운드 목적지에 0.0.0.0/0을 지정했습니다. 실제 데이터베이스의 연결 대상 보안 그룹, 포트와 네트워크 경로는 별도로 확인해야 합니다.
  • 변경 후: 각 방향의 범위를 10.1.1.1/32로 좁혔습니다. 해당 IP와 포트가 실제 통신 요구에 맞는지는 별도로 확인해야 합니다.

참조