폴더의 특정 Virtual Private Cloud (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을 만듭니다.
myvpc
네트워크에 외부 IP 주소가 없는 VM을 만듭니다.
Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
인스턴스 만들기를 클릭합니다.
이름에
myvpc-vm
를 입력합니다.리전에서 us-central1(아이오와)을 선택합니다.
고급 옵션을 펼친 후 네트워킹을 펼칩니다.
네트워크 인터페이스 섹션에서 기존 네트워크 인터페이스를 확장하고 다음 구성 매개변수를 지정합니다.
- 네트워크:
myvpc
를 선택하세요. - 서브네트워크: subnet-1 IPv4(10.0.0.0/24)를 선택합니다.
- 외부 IPv4 주소: 없음을 선택합니다.
- 네트워크:
완료를 클릭합니다.
만들기를 클릭합니다.
test-vpc
네트워크에 VM 2개 만들기
외부 IP 주소가 없는 VM과 외부 IP 주소가 있는 VM 두 개를 만듭니다. 외부 IP 주소를 사용하여 VM을 만들 경우 시작 스크립트를 전달하여 해당 VM에 Apache 웹 서버를 설치하고 시작합니다.
외부 IP 주소 없이 VM을 만듭니다.
Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
인스턴스 만들기를 클릭합니다.
이름에
testvpc-vm
를 입력합니다.리전에서
us-central1 (Iowa)
을 선택합니다.고급 옵션을 펼친 후 네트워킹을 펼칩니다.
네트워크 인터페이스 섹션에서 기존 네트워크 인터페이스를 확장하고 다음 구성 매개변수를 지정합니다.
- 네트워크: test-vpc를 선택합니다.
- 서브네트워크: testvpc-subnet-1 IPv4(10.0.0.0/16)를 선택합니다.
- 외부 IPv4 주소: 없음을 선택합니다.
완료를 클릭합니다.
만들기를 클릭합니다.
임시 외부 IP 주소로 VM을 만들고 시작 스크립트를 전달하여 Apache 웹 서버를 설치하고 시작합니다.
- 인스턴스 만들기를 클릭합니다.
- 이름에
testvpc-apache-vm
를 입력합니다. - 리전에서
us-central1 (Iowa)
을 선택합니다. - 고급 옵션을 펼친 후 네트워킹을 펼칩니다.
- 네트워크 인터페이스 섹션에서 기존 네트워크 인터페이스를 확장하고 다음 구성 매개변수를 지정합니다.
- 네트워크: 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를 사용 설정하는 방화벽 규칙 추가
IAP가 test-folder
의 모든 VM에 연결할 수 있게 하려면 계층식 방화벽 정책에 다음 특성이 포함된 방화벽 규칙이 필요합니다.
- IAP TCP 전달을 사용하여 액세스할 수 있는
test-folder
의 모든 VM에 적용됩니다. - IP 주소 범위
35.235.240.0/20
에서의 인그레스 트래픽을 허용합니다. 이 범위에는 IAP가 TCP 전달에 사용하는 모든 IP 주소가 포함됩니다. - IAP TCP 전달을 사용하여 액세스할 수 있는 모든 포트에 대한 연결(예: SSH의 경우
22
포트)을 허용합니다.
방화벽 규칙을 추가하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
fw-egress-specific-vpc를 클릭한 다음 fw-egress-specific-vpc를 클릭합니다.
우선순위에
100
을 입력합니다.설명에
enable-iap
를 입력합니다.트래픽 방향으로 수신을 선택합니다.
일치 시 작업으로 허용을 선택합니다.
소스 섹션의 IP 범위에
35.235.240.0/20
을 입력합니다.프로토콜 및 포트 섹션에서 지정된 프로토콜 및 포트를 선택합니다.
TCP 체크박스를 선택하고 포트에
22
를 입력합니다.만들기를 클릭합니다.
test-vpc
네트워크에서 인그레스 트래픽을 허용하는 방화벽 규칙 추가
TCP 포트 80에서 test-vpc
네트워크의 모든 VM에 들어오는 HTTP 웹 트래픽을 허용하는 방화벽 규칙을 추가합니다.
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
fw-egress-specific-vpc를 클릭한 다음 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를 클릭한 다음 fw-egress-specific-vpc를 클릭합니다.
우선순위에
300
을 입력합니다.설명에
delegate-egress-myvpc
를 입력합니다.트래픽 방향에 대해 이그레스를 선택합니다.
일치 시 작업으로 다음으로 이동을 선택합니다.
타겟 섹션에서 네트워크 추가를 클릭합니다.
myvpc
가 포함된 테스트 프로젝트 이름을 선택하고myvpc
를 네트워크로 선택합니다.목적지 섹션의 IP 범위에 Apache 웹 서버를 실행하는 VM의 임시 외부 IP 주소를 입력합니다.
test-vpc
네트워크에서 2개의 VM 만들기 섹션에서 이 IP 주소를 확인했습니다.만들기를 클릭합니다.
다른 모든 VPC 네트워크에서 시작되는 이그레스 트래픽을 거부하는 방화벽 규칙 추가
마지막으로 test-folder
의 다른 모든 VPC 네트워크에서 이그레스되는 트래픽을 거부하는 방화벽 규칙을 추가합니다.
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
fw-egress-specific-vpc를 클릭한 다음 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
와의 연결 삭제 대화상자에서 삭제를 클릭합니다.삭제를 클릭합니다.
fw-egress-specific-vpc
삭제 대화상자에서 삭제를 클릭합니다.
VM 삭제
Google Cloud 콘솔로 이동합니다.
페이지 상단의 프로젝트 선택기에서 test-project를 선택합니다.
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
myvpc-vm, myvpc-vm, myvpc-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 가격 책정 참조하기