외부 IP가 구성된 Compute Engine 인스턴스

외부 IP가 필요한 VM인지 확인하고 방화벽, 관리 경로와 서비스 인증을 제한하세요.

설명

Compute Engine VM의 외부 IP는 인터넷에서 연결할 수 있는 경로를 제공할 수 있습니다. 실제 접근에는 방화벽 허용, 네트워크 경로와 실행 중인 서비스가 필요하며, 외부 IP 자체가 익명 접근 권한을 부여하지는 않습니다. 내부용 VM에는 외부 IP를 할당하지 않고 필요한 관리·통신 경로를 별도로 구성하세요.

잠재적 영향

  • 방화벽까지 넓게 허용하면 외부 클라이언트가 관리 포트나 애플리케이션에 연결을 시도할 수 있습니다.
  • 노출된 서비스의 취약점이나 유출된 인증 정보가 악용되면 데이터 조회·변경과 서비스 중단으로 이어질 수 있습니다.

해결 방법

  1. 외부 IP의 업무상 필요성을 확인하고 불필요한 주소를 제거하세요. 관리에는 IAP 또는 VPN 등 승인된 경로를 구성하고, 필요한 외부 통신은 Cloud NAT 등의 방식을 검토하세요.
  2. 방화벽의 출발지·대상·포트를 최소화하고 서비스 인증과 권한을 점검하세요.
  3. google.cloud 1.14.0의 gcp_compute_instance는 기존 VM의 network_interfaces를 갱신하지 않습니다. 기존 외부 IP는 지원되는 Console, gcloud 또는 API 작업으로 제거한 뒤 관리와 애플리케이션 연결을 시험하세요.

예시

새 VM의 네트워크 설정을 비교하는 발췌입니다. 실제 프로젝트, 인증, 머신 유형, 부팅 디스크와 네트워크 입력은 별도로 준비해야 합니다.

변경 전

yaml
- name: 인스턴스 생성
  google.cloud.gcp_compute_instance:
    name: test-object
    network_interfaces:
      - network: "{{ network }}"
        access_configs:
          - name: External NAT
            nat_ip: "{{ address }}"
            type: ONE_TO_ONE_NAT
    zone: us-central1-a
    project: "{{ project_id }}"
    auth_kind: serviceaccount
    state: present

access_configs가 외부 IPv4 주소를 구성합니다. 연결 가능 여부는 방화벽과 서비스 설정도 함께 확인해야 합니다.

변경 후

yaml
- name: 인스턴스 생성
  google.cloud.gcp_compute_instance:
    name: test-object
    network_interfaces:
      - network: "{{ network }}"
    zone: us-central1-a
    project: "{{ project_id }}"
    auth_kind: serviceaccount
    state: present

새 VM에 외부 IPv4 주소를 요청하지 않습니다. 기존 VM에 이 작업을 다시 실행하는 것만으로 외부 IP가 제거되지는 않습니다.

참조