폴더 내 특정 가상 프라이빗 클라우드(VPC) 네트워크에서 시작되는 이그레스 트래픽이 특정 IP 주소로 향하는 계층적 방화벽 정책을 만들고 구성하는 방법을 알아봅니다. 이 방화벽 정책은 폴더에서 시작되는 모든 기타 이그레스 트래픽을 차단합니다. 이 페이지에서는 VPC 네트워크 2개를 만들고, VPC 네트워크에 가상 머신(VM) 인스턴스를 만들고, 방화벽 규칙이 있는 계층식 방화벽 정책을 설정하고, 방화벽 정책을 테스트하는 예시를 살펴봅니다.
시작하기 전에
- 조직 리소스에 대한 액세스 권한이 있는지 확인합니다.
- 다음 Identity and Access Management(IAM) 역할이 있는지 확인합니다.
-
조직 관리자 역할
(roles/resourcemanager.organizationAdmin)
-
폴더 관리자 역할
(roles/resourcemanager.folderAdmin)
-
프로젝트 생성자 역할
(roles/resourcemanager.projectCreator)
-
프로젝트 삭제자 역할
(roles/resourcemanager.projectDeleter)
-
Compute 네트워크 관리자 역할 (
roles/compute.networkAdmin
) -
Compute 조직 방화벽 정책 관리자 역할 (
roles/compute.orgFirewallPolicyAdmin
)
-
조직 관리자 역할
-
Enable the Compute Engine and Identity-Aware Proxy (IAP) APIs.
폴더 만들기
조직에 폴더를 만듭니다.
Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
폴더 만들기를 클릭합니다.
폴더 이름으로
test-folder
를 입력합니다.조직 목록에서 조직 리소스 이름을 선택합니다.
위치 필드에서 찾아보기를 클릭한 후 조직 리소스를 선택합니다.
만들기를 클릭합니다.
프로젝트 만들기
이전 섹션에서 만든 폴더에 프로젝트를 만듭니다.
Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
프로젝트 만들기를 클릭합니다.
프로젝트 이름에
test-project
를 입력합니다.프로젝트의 결제 계정을 선택합니다.
조직 목록에서 조직 리소스 이름을 선택합니다.
위치 필드에서 찾아보기를 클릭하고 조직 리소스 이름을 펼친 후 test-folder를 선택합니다.
만들기를 클릭합니다.
IPv4 서브넷으로 커스텀 VPC 네트워크 2개 만들기
이전 섹션에서 만든 프로젝트에 커스텀 모드 VPC 네트워크 두 개(IPv4 전용 서브넷이 있는 myvpc
와 IPv4 전용 서브넷 두 개가 있는 test-vpc
)를 만듭니다.
Google Cloud 콘솔의 프로젝트 선택기 페이지에서 test-project를 선택합니다.
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
VPC 네트워크 만들기를 클릭합니다.
이름에
myvpc
를 입력합니다.서브넷 생성 모드에 커스텀을 선택합니다.
새 서브넷 섹션에서 서브넷에 다음 구성 파라미터를 지정합니다.
- 이름 —
myvpc-subnet-1
를 입력합니다. - 리전: us-central1을 선택합니다.
- IPv4 범위:
10.0.0.0/24
를 입력합니다.
- 이름 —
완료를 클릭한 후 만들기를 클릭합니다.
다른 VPC 네트워크를 만들려면 VPC 네트워크 만들기를 클릭합니다.
이름에
test-vpc
를 입력합니다.서브넷 생성 모드에 커스텀을 선택합니다.
새 서브넷 섹션에서 서브넷에 다음 구성 파라미터를 지정한 후 완료를 클릭합니다.
- 이름 —
testvpc-subnet-1
를 입력합니다. - 리전: us-central1을 선택합니다.
- IPv4 범위:
10.0.0.0/16
을 입력합니다.
- 이름 —
test-vpc
네트워크에 다른 서브넷을 추가하려면 서브넷 추가를 클릭합니다.새 서브넷 섹션에서 서브넷에 다음 구성 파라미터를 지정한 후 완료를 클릭합니다.
- 이름 —
testvpc-subnet-ext
를 입력합니다. - 리전: us-central1을 선택합니다.
- IPv4 범위:
192.168.1.0/24
를 입력합니다.
- 이름 —
만들기를 클릭합니다.
VM 만들기
이전 섹션에서 구성한 서브넷에 VM을 3개 만듭니다.
myvpc
네트워크에 VM 만들기
외부 IP 주소를 할당하지 않고 myvpc
네트워크에 VM을 만듭니다.
Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
머신 구성 창에서 다음을 수행합니다.
- 이름에
myvpc-vm
를 입력합니다. - 리전에서
us-central1 (Iowa)
을 선택합니다.
- 이름에
탐색 메뉴에서 네트워킹을 클릭합니다.
- 네트워크 인터페이스 섹션에서
default
를 클릭하고 다음 구성 파라미터를 지정합니다.- 네트워크:
myvpc
- 서브네트워크:
subnet-1 IPv4 (10.0.0.0/24)
- 외부 IPv4 주소: 없음
- 네트워크:
- 완료를 클릭합니다.
- 네트워크 인터페이스 섹션에서
만들기를 클릭합니다.
test-vpc
네트워크에 VM 2개 만들기
하나는 외부 IP 주소를 할당하지 않고, 다른 하나는 외부 IP 주소를 할당하여 2개의 VM을 만듭니다. 외부 IP 주소를 할당하여 VM을 만들 때는 해당 VM에서 Apache 웹 서버를 설치하고 시작하는 시작 스크립트를 전달합니다.
외부 IP 주소를 할당하지 않고 VM을 만듭니다.
Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
머신 구성 창에서 다음을 수행합니다.
- 이름에
testvpc-vm
를 입력합니다. - 리전에서
us-central1 (Iowa)
을 선택합니다.
- 이름에
탐색 메뉴에서 네트워킹을 클릭합니다.
- 네트워크 인터페이스 섹션에서
default
를 클릭하고 다음 구성 파라미터를 지정합니다.- 네트워크:
test-vpc
- 서브네트워크:
testvpc-subnet-1 IPv4 (10.0.0.0/16)
- 외부 IPv4 주소: 없음
- 네트워크:
- 완료를 클릭합니다.
- 네트워크 인터페이스 섹션에서
만들기를 클릭합니다.
임시 외부 IP 주소를 사용하여 VM을 만들고 Apache 웹 서버를 설치하고 시작하는 시작 스크립트를 전달합니다.
Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
머신 구성 창에서 다음을 수행합니다.
- 이름에
testvpc-apache-vm
를 입력합니다. - 리전에서
us-central1 (Iowa)
을 선택합니다.
- 이름에
탐색 메뉴에서 네트워킹을 클릭합니다.
- 네트워크 인터페이스 섹션에서
default
를 클릭하고 다음 구성 파라미터를 지정합니다.- 네트워크:
test-vpc
- 서브네트워크:
testvpc-subnet-ext IPv4 (192.168.1.0/24)
- 외부 IPv4 주소: 임시
- 네트워크:
- 완료를 클릭합니다.
- 네트워크 인터페이스 섹션에서
탐색 메뉴에서 고급을 클릭하고 시작 스크립트 필드에 다음 스크립트를 입력합니다.
#! /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 웹 서버를 배포하고 시작합니다.
만들기를 클릭합니다.
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 게이트웨이를 만듭니다.
Google Cloud 콘솔에서 Cloud NAT 페이지로 이동합니다.
시작하기 또는 Cloud NAT 게이트웨이 만들기를 클릭합니다.
참고: Cloud NAT 게이트웨이를 처음 만드는 경우 시작하기를 클릭합니다. 기존 게이트웨이가 이미 있으면 Google Cloud에 Cloud NAT 게이트웨이 만들기 버튼이 표시됩니다. 다른 게이트웨이를 만들려면 Cloud NAT 게이트웨이 만들기를 클릭합니다.
게이트웨이 이름에
myvpc-gateway
을 입력합니다.NAT 유형에서 Public 을 선택합니다.
Cloud Router 선택 섹션에서 다음 구성 파라미터를 지정합니다.
- 네트워크: myvpc를 선택합니다.
- 리전: us-central1(아이오와)을 선택합니다.
- Cloud Router: 새 라우터 만들기를 클릭합니다.
- 이름에
myvpc-router
을 입력합니다. - 만들기를 클릭합니다.
- 이름에
만들기를 클릭합니다.
계층적 방화벽 정책 만들기 및 방화벽 규칙 추가
계층적 방화벽 정책을 만들고 다음 방화벽 정책 규칙을 추가합니다.
test-folder
의 모든 VM에 대해 IAP를 사용 설정하여 VM에 대한 관리 액세스를 사용 설정합니다.test-vpc
네트워크의 모든 VM에 대해 인그레스 트래픽을 허용합니다.myvpc
네트워크의 이그레스 트래픽을 계층 구조에서 다음 규칙인VPC firewall implied IPv4 rule egress all
규칙에 위임합니다.test-folder
의 다른 모든 VPC 네트워크에서 시작하는 이그레스 트래픽을 거부합니다.
계층식 방화벽 정책을 만들려면 다음 단계를 수행하세요.
Google Cloud 콘솔에서 프로젝트 선택기 페이지로 이동하고 test-folder를 선택합니다.
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
방화벽 정책 만들기를 클릭합니다.
정책 구성 섹션의 정책 이름에
fw-egress-specific-vpc
를 입력합니다.설명에
example-firewall-policy
를 입력합니다.계속을 클릭합니다.
규칙 추가 섹션에서 계속을 클릭합니다. 이 빠른 시작의 이후 섹션에서 방화벽 규칙을 추가합니다.
리소스와 정책 연결 섹션에서 추가를 클릭합니다.
조직을 펼치고 test-folder를 선택한 후 추가를 클릭합니다.
만들기를 클릭합니다.
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
포트)을 허용합니다.
방화벽 규칙을 추가하려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
fw-egress-specific-vpc를 클릭한 후 규칙 추가를 클릭합니다.
우선순위에
100
을 입력합니다.설명에
enable-iap
를 입력합니다.트래픽 방향으로 수신을 선택합니다.
일치 시 작업으로 허용을 선택합니다.
소스 섹션의 IP 범위에
35.235.240.0/20
을 입력합니다.프로토콜 및 포트 섹션에서 지정된 프로토콜 및 포트를 선택합니다.
TCP 체크박스를 선택하고 포트에
22
를 입력합니다.만들기를 클릭합니다.
test-vpc
네트워크에서 인그레스 트래픽을 허용하는 방화벽 규칙 추가
test-vpc
네트워크의 모든 VM에 대해 TCP 포트 80으로 수신 HTTP 웹 트래픽을 허용하는 방화벽 규칙을 추가합니다.
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
fw-egress-specific-vpc를 클릭한 후 규칙 추가를 클릭합니다.
우선순위에
200
을 입력합니다.설명에
allow-ingress-testvpc
를 입력합니다.트래픽 방향으로 수신을 선택합니다.
일치 시 작업으로 허용을 선택합니다.
타겟 섹션에서 네트워크 추가를 클릭합니다.
test-vpc
네트워크가 포함된 테스트 프로젝트를 선택한 후 test-vpc를 네트워크로 선택합니다.소스 섹션의 IP 범위에
0.0.0.0/0
을 입력합니다.프로토콜 및 포트 섹션에서 지정된 프로토콜 및 포트를 선택합니다.
TCP 체크박스를 선택하고 포트에
80
를 입력합니다.만들기를 클릭합니다.
myvpc
네트워크의 이그레스 트래픽을 계층의 다음 규칙에 위임하는 방화벽 규칙 추가
goto_next
작업을 사용하여 myvpc
네트워크의 이그레스 트래픽을 방화벽의 다음 규칙으로 위임하는 방화벽 규칙을 추가합니다. 이는 묵시적인 IPv4 이그레스 허용 VPC 방화벽 규칙입니다.
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
fw-egress-specific-vpc를 클릭한 후 규칙 추가를 클릭합니다.
우선순위에
300
을 입력합니다.설명에
delegate-egress-myvpc
를 입력합니다.트래픽 방향에 대해 이그레스를 선택합니다.
일치 시 작업으로 다음으로 이동을 선택합니다.
타겟 섹션에서 네트워크 추가를 클릭합니다.
myvpc
가 포함된 테스트 프로젝트 이름을 선택한 후myvpc
를 네트워크로 선택합니다.목적지 섹션의 IP 범위에 Apache 웹 서버를 실행하는 VM의 임시 외부 IP 주소를 입력합니다. 이 IP 주소는
test-vpc
네트워크에 2개의 VM 만들기 섹션에서 기록한 주소입니다.만들기를 클릭합니다.
다른 모든 VPC 네트워크에서 시작하는 이그레스 트래픽을 거부하는 방화벽 규칙 추가
마지막으로 test-folder
의 다른 모든 VPC 네트워크에서 송신되는 트래픽을 거부하는 방화벽 규칙을 추가합니다.
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
fw-egress-specific-vpc를 클릭한 후 규칙 추가를 클릭합니다.
우선순위에
400
을 입력합니다.설명에
block-egress-all-traffic
를 입력합니다.트래픽 방향에 대해 이그레스를 선택합니다.
일치 시 작업에 거부를 선택합니다.
목적지 섹션의 IP 범위에
0.0.0.0/0
을 입력합니다.만들기를 클릭합니다.
계층적 방화벽 정책 테스트
계층적 방화벽 정책을 구성한 후 다음 단계에 따라 정책을 테스트합니다.
Google Cloud 콘솔로 이동합니다.
페이지 상단의 프로젝트 선택기에서 VPC 네트워크를 만든
test-project
를 선택합니다.Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
myvpc-vm
의 연결 열에서 SSH를 클릭합니다.브라우저에서 SSH를 통해 연결 대화상자에서 승인을 클릭하고 연결이 설정될 때까지 기다립니다.
myvpc
에서testvpc-apache-vm
로 이그레스 트래픽이 허용되는지 확인하려면 다음 명령어를 실행합니다.curl <external_ephemeral_IP_testvpc_apache_vm> -m 2
위 명령어는 Apache 웹 서버의
index.html
페이지에 지정한 콘텐츠를 반환합니다. 즉,myvpc
의 이그레스 연결이 허용됩니다.조직의 다른 VPC 네트워크에서 이그레스 트래픽이 차단되는지 확인하려면 다음을 수행합니다.
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
testvpc-vm
의 연결 열에서 SSH를 클릭합니다.브라우저에서 SSH를 통해 연결 대화상자에서 승인을 클릭하고 연결이 설정될 때까지 기다립니다.
testvpc-vm
에서testvpc-apache-vm
으로의 이그레스 트래픽이 차단되었는지 확인하려면 다음 명령어를 실행합니다.curl <internal_IP_testvpc_apache_vm> -m 2
myvpc
를 제외하고 조직의 모든 VPC 네트워크에서 이그레스 트래픽을 거부하는 방화벽 규칙을 만들었기 때문에 예상한 대로 위 명령어는Connection timed out
메시지를 반환합니다.
삭제
이 빠른 시작에 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 개별 리소스를 삭제한 후 프로젝트와 폴더를 삭제하세요.
이 빠른 시작에서 만든 리소스를 삭제하려면 다음 태스크를 완료합니다.
계층적 방화벽 정책 삭제
Google Cloud 콘솔로 이동합니다.
페이지 상단의 프로젝트 선택기에서 이 빠른 시작의 리소스를 만든
test-folder
를 선택합니다.Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
이 노드와 연결되었거나 노드에서 상속된 방화벽 정책 섹션에서 fw-egress-specific-vpc를 클릭합니다.
연결 탭을 클릭합니다.
test-folder 체크박스를 선택하고 연결 삭제를 클릭합니다.
test-folder
연결 삭제 대화상자에서 삭제를 클릭합니다.삭제를 클릭합니다.
fw-egress-specific-vpc
삭제 대화상자에서 삭제를 클릭합니다.
VM 삭제
Google Cloud 콘솔로 이동합니다.
페이지 상단의 프로젝트 선택기에서 test-project를 선택합니다.
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
myvpc-vm, testvpc-vm, testvpc-apache-vm 체크박스를 선택합니다.
삭제를 클릭합니다.
인스턴스 3개 삭제 대화상자에서 삭제를 클릭합니다.
Cloud Router 및 Cloud NAT 게이트웨이 삭제
Google Cloud 콘솔에서 Cloud Router 페이지로 이동합니다.
myvpc-router 체크박스를 선택합니다.
삭제를 클릭합니다.
myvpc-router
삭제 대화상자에서 삭제를 클릭합니다.
Cloud Router를 삭제하면 연결된 Cloud NAT 게이트웨이도 삭제됩니다.
VPC 네트워크 및 해당 서브넷 삭제
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
이름 열에서 myvpc를 클릭합니다.
VPC 네트워크 삭제를 클릭합니다.
네트워크 삭제 대화상자에서 삭제를 클릭합니다.
이와 비슷하게
test-vpc
네트워크를 삭제합니다.
VPC 네트워크를 삭제하면 해당 서브넷도 삭제됩니다.
프로젝트 삭제
- In the Google Cloud console, go to the Manage resources page.
- If the project that you plan to delete is attached to an organization, expand the Organization list in the Name column.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
폴더 삭제
Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
삭제하려는 폴더가 조직에 연결되어 있으면 이름 열에서 조직 목록을 확장합니다.
폴더 목록에서 test-folder를 선택한 후 삭제를 클릭합니다.
대화상자에서 폴더 ID를 입력한 후 무시하고 삭제를 클릭하여 프로젝트를 삭제합니다.
다음 단계
- 방화벽 정책 개념은 방화벽 정책 개요 참조하기
- 방화벽 정책 규칙 개념은 방화벽 정책 규칙 개요 참조하기
- VPC 방화벽 규칙을 생성, 업데이트, 모니터링, 삭제하려면 VPC 방화벽 규칙 사용 참조하기
- 비용을 확인하려면 Cloud NGFW 가격 책정 참조하기