특정 VPC 네트워크의 이그레스 트래픽을 허용하도록 계층식 방화벽 정책 구성

폴더 내 특정 가상 프라이빗 클라우드(VPC) 네트워크에서 시작되는 이그레스 트래픽이 특정 IP 주소로 향하는 계층적 방화벽 정책을 만들고 구성하는 방법을 알아봅니다. 이 방화벽 정책은 폴더에서 시작되는 모든 기타 이그레스 트래픽을 차단합니다. 이 페이지에서는 VPC 네트워크 2개를 만들고, VPC 네트워크에 가상 머신(VM) 인스턴스를 만들고, 방화벽 규칙이 있는 계층식 방화벽 정책을 설정하고, 방화벽 정책을 테스트하는 예시를 살펴봅니다.

시작하기 전에

폴더 만들기

조직에 폴더를 만듭니다.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 폴더 만들기를 클릭합니다.

  3. 폴더 이름으로 test-folder를 입력합니다.

  4. 조직 목록에서 조직 리소스 이름을 선택합니다.

  5. 위치 필드에서 찾아보기를 클릭한 후 조직 리소스를 선택합니다.

  6. 만들기를 클릭합니다.

프로젝트 만들기

이전 섹션에서 만든 폴더에 프로젝트를 만듭니다.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 만들기를 클릭합니다.

  3. 프로젝트 이름test-project를 입력합니다.

  4. 프로젝트의 결제 계정을 선택합니다.

  5. 조직 목록에서 조직 리소스 이름을 선택합니다.

  6. 위치 필드에서 찾아보기를 클릭하고 조직 리소스 이름을 펼친 후 test-folder를 선택합니다.

  7. 만들기를 클릭합니다.

IPv4 서브넷으로 커스텀 VPC 네트워크 2개 만들기

이전 섹션에서 만든 프로젝트에 커스텀 모드 VPC 네트워크 두 개(IPv4 전용 서브넷이 있는 myvpc와 IPv4 전용 서브넷 두 개가 있는 test-vpc)를 만듭니다.

  1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 test-project를 선택합니다.

    프로젝트 선택기로 이동

  2. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  3. VPC 네트워크 만들기를 클릭합니다.

  4. 이름myvpc를 입력합니다.

  5. 서브넷 생성 모드커스텀을 선택합니다.

  6. 새 서브넷 섹션에서 서브넷에 다음 구성 파라미터를 지정합니다.

    • 이름myvpc-subnet-1를 입력합니다.
    • 리전: us-central1을 선택합니다.
    • IPv4 범위: 10.0.0.0/24를 입력합니다.
  7. 완료를 클릭한 후 만들기를 클릭합니다.

  8. 다른 VPC 네트워크를 만들려면 VPC 네트워크 만들기를 클릭합니다.

  9. 이름test-vpc를 입력합니다.

  10. 서브넷 생성 모드커스텀을 선택합니다.

  11. 새 서브넷 섹션에서 서브넷에 다음 구성 파라미터를 지정한 후 완료를 클릭합니다.

    • 이름testvpc-subnet-1를 입력합니다.
    • 리전: us-central1을 선택합니다.
    • IPv4 범위: 10.0.0.0/16을 입력합니다.
  12. test-vpc 네트워크에 다른 서브넷을 추가하려면 서브넷 추가를 클릭합니다.

  13. 새 서브넷 섹션에서 서브넷에 다음 구성 파라미터를 지정한 후 완료를 클릭합니다.

    • 이름testvpc-subnet-ext를 입력합니다.
    • 리전: us-central1을 선택합니다.
    • IPv4 범위: 192.168.1.0/24를 입력합니다.
  14. 만들기를 클릭합니다.

VM 만들기

이전 섹션에서 구성한 서브넷에 VM을 3개 만듭니다.

myvpc 네트워크에 VM 만들기

외부 IP 주소를 할당하지 않고 myvpc 네트워크에 VM을 만듭니다.

  1. Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

    인스턴스 만들기로 이동

  2. 머신 구성 창에서 다음을 수행합니다.

    1. 이름myvpc-vm를 입력합니다.
    2. 리전에서 us-central1 (Iowa)을 선택합니다.
  3. 탐색 메뉴에서 네트워킹을 클릭합니다.

    1. 네트워크 인터페이스 섹션에서 default를 클릭하고 다음 구성 파라미터를 지정합니다.
      • 네트워크: myvpc
      • 서브네트워크: subnet-1 IPv4 (10.0.0.0/24)
      • 외부 IPv4 주소: 없음
    2. 완료를 클릭합니다.
  4. 만들기를 클릭합니다.

test-vpc 네트워크에 VM 2개 만들기

하나는 외부 IP 주소를 할당하지 않고, 다른 하나는 외부 IP 주소를 할당하여 2개의 VM을 만듭니다. 외부 IP 주소를 할당하여 VM을 만들 때는 해당 VM에서 Apache 웹 서버를 설치하고 시작하는 시작 스크립트를 전달합니다.

외부 IP 주소를 할당하지 않고 VM을 만듭니다.

  1. Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

    인스턴스 만들기로 이동

  2. 머신 구성 창에서 다음을 수행합니다.

    1. 이름testvpc-vm를 입력합니다.
    2. 리전에서 us-central1 (Iowa)을 선택합니다.
  3. 탐색 메뉴에서 네트워킹을 클릭합니다.

    1. 네트워크 인터페이스 섹션에서 default를 클릭하고 다음 구성 파라미터를 지정합니다.
      • 네트워크: test-vpc
      • 서브네트워크: testvpc-subnet-1 IPv4 (10.0.0.0/16)
      • 외부 IPv4 주소: 없음
    2. 완료를 클릭합니다.
  4. 만들기를 클릭합니다.

임시 외부 IP 주소를 사용하여 VM을 만들고 Apache 웹 서버를 설치하고 시작하는 시작 스크립트를 전달합니다.

  1. Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

    인스턴스 만들기로 이동

  2. 머신 구성 창에서 다음을 수행합니다.

    1. 이름testvpc-apache-vm를 입력합니다.
    2. 리전에서 us-central1 (Iowa)을 선택합니다.
  3. 탐색 메뉴에서 네트워킹을 클릭합니다.

    1. 네트워크 인터페이스 섹션에서 default를 클릭하고 다음 구성 파라미터를 지정합니다.
      • 네트워크: test-vpc
      • 서브네트워크: testvpc-subnet-ext IPv4 (192.168.1.0/24)
      • 외부 IPv4 주소: 임시
    2. 완료를 클릭합니다.
  4. 탐색 메뉴에서 고급을 클릭하고 시작 스크립트 필드에 다음 스크립트를 입력합니다.

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    # Read VM network configuration:
    md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
    vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )"
    filter="{print \$NF}"
    vm_network="$(curl $md_vm/network-interfaces/0/network \
    -H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
    vm_zone="$(curl $md_vm/zone \
    -H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
    # Apache configuration:
    echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \
    tee /var/www/html/index.html
    systemctl restart apache2
    

    위의 스크립트는 이 VM에 Apache 웹 서버를 배포하고 시작합니다.

  5. 만들기를 클릭합니다.

  6. VM 인스턴스 페이지에서 이 VM에 할당된 임시 외부 IP 주소를 메모하세요. 이 외부 IP 주소는 나중에 필요합니다.

Cloud Router 및 Cloud NAT 게이트웨이 만들기

이전 섹션에서는 myvpc 네트워크에서 외부 IP 주소를 할당하지 않고 myvpc-vm VM을 만들었습니다. myvpc-vm VM이 공개 인터넷을 통해 testvpc-apache-vm에서 실행되는 Apache 웹 서버에 액세스할 수 있도록 하려면 myvpc-vm VM을 만들었던 것과 동일한 서브넷에 Cloud Router와 Cloud NAT 게이트웨이를 만듭니다.

  1. Google Cloud 콘솔에서 Cloud NAT 페이지로 이동합니다.

    Cloud NAT로 이동

  2. 시작하기 또는 Cloud NAT 게이트웨이 만들기를 클릭합니다.

    참고: Cloud NAT 게이트웨이를 처음 만드는 경우 시작하기를 클릭합니다. 기존 게이트웨이가 이미 있으면 Google Cloud에 Cloud NAT 게이트웨이 만들기 버튼이 표시됩니다. 다른 게이트웨이를 만들려면 Cloud NAT 게이트웨이 만들기를 클릭합니다.

  3. 게이트웨이 이름myvpc-gateway을 입력합니다.

  4. NAT 유형에서 Public 을 선택합니다.

  5. Cloud Router 선택 섹션에서 다음 구성 파라미터를 지정합니다.

    • 네트워크: myvpc를 선택합니다.
    • 리전: us-central1(아이오와)을 선택합니다.
    • Cloud Router: 새 라우터 만들기를 클릭합니다.
      1. 이름myvpc-router을 입력합니다.
      2. 만들기를 클릭합니다.
  6. 만들기를 클릭합니다.

계층적 방화벽 정책 만들기 및 방화벽 규칙 추가

계층적 방화벽 정책을 만들고 다음 방화벽 정책 규칙을 추가합니다.

  • test-folder의 모든 VM에 대해 IAP를 사용 설정하여 VM에 대한 관리 액세스를 사용 설정합니다.
  • test-vpc 네트워크의 모든 VM에 대해 인그레스 트래픽을 허용합니다.
  • myvpc 네트워크의 이그레스 트래픽을 계층 구조에서 다음 규칙인 VPC firewall implied IPv4 rule egress all 규칙에 위임합니다.
  • test-folder의 다른 모든 VPC 네트워크에서 시작하는 이그레스 트래픽을 거부합니다.

계층식 방화벽 정책을 만들려면 다음 단계를 수행하세요.

  1. Google Cloud 콘솔에서 프로젝트 선택기 페이지로 이동하고 test-folder를 선택합니다.

    프로젝트 선택기로 이동

  2. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  3. 방화벽 정책 만들기를 클릭합니다.

  4. 정책 구성 섹션의 정책 이름fw-egress-specific-vpc를 입력합니다.

  5. 설명example-firewall-policy를 입력합니다.

  6. 계속을 클릭합니다.

  7. 규칙 추가 섹션에서 계속을 클릭합니다. 이 빠른 시작의 이후 섹션에서 방화벽 규칙을 추가합니다.

  8. 리소스와 정책 연결 섹션에서 추가를 클릭합니다.

  9. 조직을 펼치고 test-folder를 선택한 후 추가를 클릭합니다.

  10. 만들기를 클릭합니다.

test-folder의 모든 VM에서 IAP를 사용 설정하는 방화벽 규칙 추가

test-folder의 모든 VM에 연결하도록 IAP를 사용 설정하려면 계층적 방화벽 정책에 다음 특성을 가진 방화벽 규칙이 필요합니다.

  • IAP TCP 전달을 사용하여 액세스하려는 test-folder에 있는 모든 VM에 적용됩니다.
  • IP 주소 범위 35.235.240.0/20에서의 인그레스 트래픽을 허용합니다. 이 범위에는 IAP가 TCP 전달에 사용하는 모든 IP 주소가 포함됩니다.
  • IAP TCP 전달을 사용하여 액세스할 수 있는 모든 포트에 대한 연결(예: SSH의 경우 22 포트)을 허용합니다.

방화벽 규칙을 추가하려면 다음 단계를 수행합니다.

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. fw-egress-specific-vpc를 클릭한 후 규칙 추가를 클릭합니다.

  3. 우선순위100을 입력합니다.

  4. 설명enable-iap를 입력합니다.

  5. 트래픽 방향으로 수신을 선택합니다.

  6. 일치 시 작업으로 허용을 선택합니다.

  7. 소스 섹션의 IP 범위35.235.240.0/20을 입력합니다.

  8. 프로토콜 및 포트 섹션에서 지정된 프로토콜 및 포트를 선택합니다.

  9. TCP 체크박스를 선택하고 포트22를 입력합니다.

  10. 만들기를 클릭합니다.

test-vpc 네트워크에서 인그레스 트래픽을 허용하는 방화벽 규칙 추가

test-vpc 네트워크의 모든 VM에 대해 TCP 포트 80으로 수신 HTTP 웹 트래픽을 허용하는 방화벽 규칙을 추가합니다.

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. fw-egress-specific-vpc를 클릭한 후 규칙 추가를 클릭합니다.

  3. 우선순위200을 입력합니다.

  4. 설명allow-ingress-testvpc를 입력합니다.

  5. 트래픽 방향으로 수신을 선택합니다.

  6. 일치 시 작업으로 허용을 선택합니다.

  7. 타겟 섹션에서 네트워크 추가를 클릭합니다.

  8. test-vpc 네트워크가 포함된 테스트 프로젝트를 선택한 후 test-vpc를 네트워크로 선택합니다.

  9. 소스 섹션의 IP 범위0.0.0.0/0을 입력합니다.

  10. 프로토콜 및 포트 섹션에서 지정된 프로토콜 및 포트를 선택합니다.

  11. TCP 체크박스를 선택하고 포트80를 입력합니다.

  12. 만들기를 클릭합니다.

myvpc 네트워크의 이그레스 트래픽을 계층의 다음 규칙에 위임하는 방화벽 규칙 추가

goto_next 작업을 사용하여 myvpc 네트워크의 이그레스 트래픽을 방화벽의 다음 규칙으로 위임하는 방화벽 규칙을 추가합니다. 이는 묵시적인 IPv4 이그레스 허용 VPC 방화벽 규칙입니다.

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. fw-egress-specific-vpc를 클릭한 후 규칙 추가를 클릭합니다.

  3. 우선순위300을 입력합니다.

  4. 설명delegate-egress-myvpc를 입력합니다.

  5. 트래픽 방향에 대해 이그레스를 선택합니다.

  6. 일치 시 작업으로 다음으로 이동을 선택합니다.

  7. 타겟 섹션에서 네트워크 추가를 클릭합니다.

  8. myvpc가 포함된 테스트 프로젝트 이름을 선택한 후 myvpc를 네트워크로 선택합니다.

  9. 목적지 섹션의 IP 범위에 Apache 웹 서버를 실행하는 VM의 임시 외부 IP 주소를 입력합니다. 이 IP 주소는 test-vpc 네트워크에 2개의 VM 만들기 섹션에서 기록한 주소입니다.

  10. 만들기를 클릭합니다.

다른 모든 VPC 네트워크에서 시작하는 이그레스 트래픽을 거부하는 방화벽 규칙 추가

마지막으로 test-folder의 다른 모든 VPC 네트워크에서 송신되는 트래픽을 거부하는 방화벽 규칙을 추가합니다.

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. fw-egress-specific-vpc를 클릭한 후 규칙 추가를 클릭합니다.

  3. 우선순위400을 입력합니다.

  4. 설명block-egress-all-traffic를 입력합니다.

  5. 트래픽 방향에 대해 이그레스를 선택합니다.

  6. 일치 시 작업거부를 선택합니다.

  7. 목적지 섹션의 IP 범위0.0.0.0/0을 입력합니다.

  8. 만들기를 클릭합니다.

계층적 방화벽 정책 테스트

계층적 방화벽 정책을 구성한 후 다음 단계에 따라 정책을 테스트합니다.

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  2. 페이지 상단의 프로젝트 선택기에서 VPC 네트워크를 만든 test-project를 선택합니다.

  3. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  4. myvpc-vm연결 열에서 SSH를 클릭합니다.

  5. 브라우저에서 SSH를 통해 연결 대화상자에서 승인을 클릭하고 연결이 설정될 때까지 기다립니다.

  6. myvpc에서 testvpc-apache-vm로 이그레스 트래픽이 허용되는지 확인하려면 다음 명령어를 실행합니다.

    curl <external_ephemeral_IP_testvpc_apache_vm> -m 2
    

    위 명령어는 Apache 웹 서버의 index.html 페이지에 지정한 콘텐츠를 반환합니다. 즉, myvpc의 이그레스 연결이 허용됩니다.

  7. 조직의 다른 VPC 네트워크에서 이그레스 트래픽이 차단되는지 확인하려면 다음을 수행합니다.

    1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

      VM 인스턴스로 이동

    2. testvpc-vm연결 열에서 SSH를 클릭합니다.

    3. 브라우저에서 SSH를 통해 연결 대화상자에서 승인을 클릭하고 연결이 설정될 때까지 기다립니다.

    4. testvpc-vm에서 testvpc-apache-vm으로의 이그레스 트래픽이 차단되었는지 확인하려면 다음 명령어를 실행합니다.

      curl <internal_IP_testvpc_apache_vm> -m 2
      

      myvpc를 제외하고 조직의 모든 VPC 네트워크에서 이그레스 트래픽을 거부하는 방화벽 규칙을 만들었기 때문에 예상한 대로 위 명령어는 Connection timed out 메시지를 반환합니다.

삭제

이 빠른 시작에 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 개별 리소스를 삭제한 후 프로젝트와 폴더를 삭제하세요.

이 빠른 시작에서 만든 리소스를 삭제하려면 다음 태스크를 완료합니다.

계층적 방화벽 정책 삭제

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  2. 페이지 상단의 프로젝트 선택기에서 이 빠른 시작의 리소스를 만든 test-folder를 선택합니다.

  3. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  4. 이 노드와 연결되었거나 노드에서 상속된 방화벽 정책 섹션에서 fw-egress-specific-vpc를 클릭합니다.

  5. 연결 탭을 클릭합니다.

  6. test-folder 체크박스를 선택하고 연결 삭제를 클릭합니다.

  7. test-folder 연결 삭제 대화상자에서 삭제를 클릭합니다.

  8. 삭제를 클릭합니다.

  9. fw-egress-specific-vpc 삭제 대화상자에서 삭제를 클릭합니다.

VM 삭제

  1. Google Cloud 콘솔로 이동합니다.

    Google Cloud 콘솔로 이동

  2. 페이지 상단의 프로젝트 선택기에서 test-project를 선택합니다.

  3. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  4. myvpc-vm, testvpc-vm, testvpc-apache-vm 체크박스를 선택합니다.

  5. 삭제를 클릭합니다.

  6. 인스턴스 3개 삭제 대화상자에서 삭제를 클릭합니다.

Cloud Router 및 Cloud NAT 게이트웨이 삭제

  1. Google Cloud 콘솔에서 Cloud Router 페이지로 이동합니다.

    Cloud Router로 이동

  2. myvpc-router 체크박스를 선택합니다.

  3. 삭제를 클릭합니다.

  4. myvpc-router 삭제 대화상자에서 삭제를 클릭합니다.

Cloud Router를 삭제하면 연결된 Cloud NAT 게이트웨이도 삭제됩니다.

VPC 네트워크 및 해당 서브넷 삭제

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 이름 열에서 myvpc를 클릭합니다.

  3. VPC 네트워크 삭제를 클릭합니다.

  4. 네트워크 삭제 대화상자에서 삭제를 클릭합니다.

    이와 비슷하게 test-vpc 네트워크를 삭제합니다.

VPC 네트워크를 삭제하면 해당 서브넷도 삭제됩니다.

프로젝트 삭제

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. If the project that you plan to delete is attached to an organization, expand the Organization list in the Name column.
  3. In the project list, select the project that you want to delete, and then click Delete.
  4. In the dialog, type the project ID, and then click Shut down to delete the project.

폴더 삭제

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 삭제하려는 폴더가 조직에 연결되어 있으면 이름 열에서 조직 목록을 확장합니다.

  3. 폴더 목록에서 test-folder를 선택한 후 삭제를 클릭합니다.

  4. 대화상자에서 폴더 ID를 입력한 후 무시하고 삭제를 클릭하여 프로젝트를 삭제합니다.

다음 단계