1. 소개
안녕하세요. Cloud Armor 사전 구성된 WAF 규칙 Codelab에 오신 것을 환영합니다.
Google Cloud Armor는 Google의 엔터프라이즈 에지 네트워크 보안 솔루션으로, DDoS 보호, WAF 규칙 적용, 대규모 적응형 관리 기능을 제공합니다.
Cloud Armor는 사전 구성된 WAF 규칙 세트를 확장하여 OWASP 상위 10개 웹 애플리케이션 보안 취약점을 완화합니다. 이 규칙 세트는 OWASP Modsecurity Core Rule Set 버전 3.0.2를 기반으로 하며, 로컬 파일 포함 (lfi), 원격 파일 포함 (rfi), 원격 코드 실행 (rce) 등 가장 일반적인 웹 애플리케이션 보안 위험으로부터 보호합니다.
이 Codelab에서는 Google Cloud Armor의 WAF 규칙을 사용하여 일부 일반적인 취약점을 완화하는 방법을 알아봅니다.
학습할 내용
- 서비스를 지원하기 위해 인스턴스 그룹과 전역 부하 분산기를 설정하는 방법
- 사전 구성된 WAF 규칙으로 Cloud Armor 보안 정책을 구성하여 lfi, rce, 스캐너, 프로토콜 공격, 세션 고정으로부터 보호하는 방법
- 로그를 관찰하여 Cloud Armor가 공격을 완화했는지 확인하는 방법
필요한 항목
- Google Compute Engine에 대한 기본 지식 ( 코드랩)
- 기본 네트워킹 및 TCP/IP 지식
- 기본 Unix/Linux 명령줄 지식
- Google Cloud의 네트워킹을 통해 GCP의 네트워킹을 둘러보는 것이 좋습니다.
- (선택사항) Cloudnet20 Cloud Armor 실습을 완료하여 SQL 삽입, IP 기반, 지역 기반 규칙으로 워크로드를 보호하는 방법을 알아보세요.
Codelab 토폴로지 및 사용 사례

그림 1 - Cloud Armor WAF 규칙 Codelab 토폴로지
OWASP Juice Shop 애플리케이션은 OWASP 상위 10개 보안 취약점을 의도적으로 각각 하나씩 포함하고 있어, 보안 교육과 인식 제고에 유용합니다. 공격자는 테스트 목적으로 이 취약점을 악용해 볼 수 있습니다. 이 Codelab에서는 이 애플리케이션을 사용하여 몇 가지 애플리케이션 공격을 시연한 다음 Cloud Armor WAF 규칙으로 애플리케이션을 보호하는 방법을 살펴보겠습니다. 애플리케이션에는 Google Cloud 부하 분산기가 배치되며 여기에는 Cloud Armor 보안 정책과 규칙이 적용됩니다. 공개 인터넷에서 제공되므로 거의 모든 곳에서 연결할 수 있으며 Cloud Armor 및 VPC 방화벽 규칙을 사용하여 보호됩니다.
2. 설정 및 요구사항
자습형 환경 설정
- Cloud 콘솔에 로그인하고 새 프로젝트를 만들거나 기존 프로젝트를 다시 사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.



모든 Google Cloud 프로젝트에서 고유한 이름인 프로젝트 ID를 기억하세요(위의 이름은 이미 사용되었으므로 사용할 수 없습니다). 이 ID는 나중에 이 Codelab에서 PROJECT_ID라고 부릅니다.
- 그런 후 Google Cloud 리소스를 사용할 수 있도록 Cloud Console에서 결제를 사용 설정해야 합니다.
이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 가이드를 마친 후 비용이 결제되지 않도록 리소스 종료 방법을 알려주는 '삭제' 섹션의 안내를 따르세요. Google Cloud 신규 사용자에게는 미화$300 상당의 무료 체험판 프로그램에 참여할 수 있는 자격이 부여됩니다.
Cloud Shell 시작
Google Cloud를 노트북에서 원격으로 실행할 수 있지만, 이 Codelab에서는 Cloud에서 실행되는 명령줄 환경인 Google Cloud Shell을 사용합니다.
GCP 콘솔에서 오른쪽 상단 툴바의 Cloud Shell 아이콘을 클릭합니다.

환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 완료되면 다음과 같이 표시됩니다.

가상 머신에는 필요한 개발 도구가 모두 들어있습니다. 영구적인 5GB 홈 디렉토리를 제공하고 Google Cloud에서 실행되므로 네트워크 성능과 인증이 크게 개선됩니다. 이 실습의 모든 작업은 브라우저만으로 수행할 수 있습니다.
시작하기 전에
Cloud Shell 내에 프로젝트 ID가 설정되어 있는지 확인합니다.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
API 사용 설정
필요한 모든 서비스 사용 설정
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. VPC 네트워크 만들기
VPC 네트워크 만들기
Cloud Shell 사용
gcloud compute networks create ca-lab-vpc --subnet-mode custom
출력
Created NAME SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 ca-lab-vpc CUSTOM REGIONAL
서브넷 만들기
Cloud Shell 사용
gcloud compute networks subnets create ca-lab-subnet \
--network ca-lab-vpc --range 10.0.0.0/24 --region us-central1
출력
Created NAME REGION NETWORK RANGE ca-lab-subnet us-central1 ca-lab-vpc 10.0.0.0/24
VPC 방화벽 규칙 만들기
VPC와 서브넷을 만든 후 몇 가지 방화벽 규칙을 설정합니다. 첫 번째 방화벽 규칙은 모든 IP가 포트 3000에서 테스트 애플리케이션 웹사이트의 외부 IP에 액세스하도록 허용하는 데 사용됩니다. 두 번째 방화벽 규칙은 부하 분산기의 소스 IP에서 상태 점검을 허용하는 데 사용됩니다.
Cloud Shell 사용
gcloud compute firewall-rules create allow-js-site --allow tcp:3000 --network ca-lab-vpc
출력
Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED allow-js-site ca-lab-vpc INGRESS 1000 tcp:3000 False
Google 상태 점검 범위에서 상태 점검을 허용하는 FW 규칙을 만듭니다.
Cloud Shell 사용
gcloud compute firewall-rules create allow-health-check \
--network=ca-lab-vpc \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-healthcheck \
--rules=tcp
출력
Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED allow-health-check ca-lab-vpc INGRESS 1000 tcp False
4. 테스트 애플리케이션 설정
다음 단계는 테스트 애플리케이션을 만드는 것입니다. 이 경우 OWASP Juice Shop 웹 서버입니다.
컴퓨팅 인스턴스를 만들 때 컨테이너 이미지를 사용하여 서버에 적절한 서비스가 있는지 확인합니다. 이 서버는 us-central1-c에 배포되며 상태 점검을 허용하는 네트워크 태그가 있습니다.
OWASP Juice Shop 애플리케이션 만들기
잘 알려진 오픈소스 OWASP Juice Shop 애플리케이션을 취약한 애플리케이션으로 사용합니다. 또한 이 애플리케이션을 사용하여 웹사이트를 통해 OWASP 보안 테스트를 수행할 수 있습니다.
Cloud Shell 사용
gcloud compute instances create-with-container owasp-juice-shop-app --container-image bkimminich/juice-shop \
--network ca-lab-vpc \
--subnet ca-lab-subnet \
--private-network-ip=10.0.0.3 \
--machine-type n1-standard-2 \
--zone us-central1-c \
--tags allow-healthcheck
출력
NAME ZONE MACHINE_TYPE PREEMPTIBLE owasp-juice-shop-app us-central1-c n1-standard-2 INTERNAL_IP EXTERNAL_IP STATUS 10.0.0.3 <public IP> RUNNING
Cloud 부하 분산기 구성요소 설정: 인스턴스 그룹
비관리형 인스턴스 그룹을 만듭니다.
Cloud Shell 사용
gcloud compute instance-groups unmanaged create juice-shop-group \
--zone=us-central1-c
출력
NAME LOCATION SCOPE NETWORK MANAGED INSTANCES juice-shop-group us-central1-c zone 0
Juice Shop GCE 인스턴스를 비관리형 인스턴스 그룹에 추가합니다.
Cloud Shell 사용
gcloud compute instance-groups unmanaged add-instances juice-shop-group \
--zone=us-central1-c \
--instances=owasp-juice-shop-app
출력
Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].
이름이 지정된 포트를 해당 Juice Shop 애플리케이션으로 설정합니다.
Cloud Shell 사용
gcloud compute instance-groups unmanaged set-named-ports \ juice-shop-group \ --named-ports=http:3000 \ --zone=us-central1-c
출력
Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].
비관리형 인스턴스 그룹을 만들었으니 이제 상태 점검, 백엔드 서비스, URL 맵, 대상 프록시, 전달 규칙을 만듭니다.
Cloud 부하 분산기 구성요소 설정: 상태 점검
Juice Shop 서비스 포트에 대한 상태 점검을 만듭니다.
Cloud Shell 사용
gcloud compute health-checks create tcp tcp-port-3000 \
--port 3000
출력
Created NAME PROTOCOL tcp-port-3000 TCP
Cloud 부하 분산기 구성요소 설정: 백엔드 서비스
백엔드 서비스 매개변수를 만듭니다.
Cloud Shell 사용
gcloud compute backend-services create juice-shop-backend \
--protocol HTTP \
--port-name http \
--health-checks tcp-port-3000 \
--enable-logging \
--global
출력
NAME BACKENDS PROTOCOL juice-shop-backend HTTP
Juice Shop 인스턴스 그룹을 백엔드 서비스에 추가합니다.
Cloud Shell 사용
gcloud compute backend-services add-backend juice-shop-backend \
--instance-group=juice-shop-group \
--instance-group-zone=us-central1-c \
--global
출력
Updated [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/backendServices/juice-shop-backend].
Cloud 부하 분산기 구성요소 설정: URL 맵
백엔드로 전송할 URL 맵을 만듭니다.
Cloud Shell 사용
gcloud compute url-maps create juice-shop-loadbalancer \
--default-service juice-shop-backend
출력
NAME DEFAULT_SERVICE juice-shop-loadbalancer backendServices/juice-shop-backend
Cloud 부하 분산기 구성요소 설정: 대상 프록시
URL 맵을 앞에 배치할 대상 프록시를 만듭니다.
Cloud Shell 사용
gcloud compute target-http-proxies create juice-shop-proxy \
--url-map juice-shop-loadbalancer
출력
NAME URL_MAP juice-shop-proxy juice-shop-loadbalancer
Cloud 부하 분산기 구성요소 설정: 전달 규칙
부하 분산기의 전달 규칙을 만듭니다.
Cloud Shell 사용
gcloud compute forwarding-rules create juice-shop-rule \
--global \
--target-http-proxy=juice-shop-proxy \
--ports=80
출력
Created [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/forwardingRules/juice-shop-rule].
Juice Shop 서비스가 온라인 상태인지 확인
Cloud Shell 사용
PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule --global --format="value(IPAddress)")"
Cloud Shell 사용
echo $PUBLIC_SVC_IP
출력
<public VIP of service>
몇 분 정도 기다린 후 계속 진행합니다. 그렇지 않으면 HTTP/1.1 404 Not Found 응답이 반환될 수도 있습니다.
Cloud Shell 사용
curl -Ii http://$PUBLIC_SVC_IP
출력
HTTP/1.1 200 OK <...>
브라우저로 이동하여 Juice Shop을 볼 수도 있습니다.

이제 Juice Shop의 취약점과 Cloud Armor WAF 규칙 세트로 취약점을 방지하는 방법을 살펴볼 준비가 되었습니다.
5. 알려진 취약점 시연
시간을 절약하기 위해 Cloud Armor WAF 규칙이 전파되기 전과 후의 상태를 간략한 단계로 보여줍니다.
LFI 취약점 관찰: 경로 순회
로컬 파일 포함은 요청에 대한 입력 검증이 부족한 취약점을 악용하여 서버에 있는 파일을 관찰하고 잠재적으로 민감한 정보를 노출하는 프로세스입니다. 다음 예시는 경로 순회가 가능함을 보여줍니다. 브라우저 또는 curl을 사용하여 애플리케이션에서 제공하는 기존 경로를 관찰합니다.
Cloud Shell 사용
curl -Ii http://$PUBLIC_SVC_IP/ftp
출력
HTTP/1.1 200 OK <...>
경로 순회도 작동하는지 확인합니다.
Cloud Shell 사용
curl -Ii http://$PUBLIC_SVC_IP/ftp/../
출력
HTTP/1.1 200 OK <...>
RCE 취약점 관찰
원격 코드 실행에는 다양한 UNIX 및 Windows 명령어 삽입 시나리오가 포함됩니다. 이러한 시나리오에서는 공격자가 일반적으로 권한이 있는 사용자에게만 허용된 OS 명령어를 실행할 수 있습니다. 다음은 간단한 ls 명령어를 전달하여 실행하는 경우를 보여줍니다.
Cloud Shell 사용
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
출력
HTTP/1.1 200 OK <...>
curl 플래그를 삭제하여 전체 출력을 관찰할 수 있습니다.
잘 알려진 스캐너의 액세스 관찰
상업용 및 오픈소스 스캔 애플리케이션은 취약점 스캔 등 다양한 목적으로 사용됩니다. 이러한 도구는 잘 알려진 사용자 에이전트 및 기타 헤더를 사용합니다. curl이 잘 알려진 사용자 에이전트 헤더와 함께 작동하는지 확인합니다.
Cloud Shell 사용
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
출력
HTTP/1.1 200 OK <...>
프로토콜 공격 관찰: HTTP 분할
일부 웹 애플리케이션은 사용자 입력을 사용하여 응답의 헤더를 생성합니다. 애플리케이션이 입력을 제대로 필터링하지 않으면 공격자가 %0d%0a 시퀀스 (서로 다른 줄을 구분하는 데 사용되는 CRLF 시퀀스)로 입력 파라미터를 오염시킬 수 있습니다. 그러면 응답을 파싱하는 중간 프록시 서버와 같은 구성요소는 하나의 응답을 두 개의 응답으로 잘못 해석하여 후속 요청에서 잘못된 콘텐츠를 제공할 수 있습니다. 입력 파라미터에 %0d%0a 시퀀스를 삽입하면 잘못된 페이지가 제공될 수 있습니다.
Cloud Shell 사용
curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"
출력
HTTP/1.1 200 OK <...>
세션 고정 관찰
Cloud Shell 사용
curl -Ii http://$PUBLIC_SVC_IP -H session_id=X
출력
HTTP/1.1 200 OK <...>
6. Cloud Armor WAF 규칙 정의
사전 구성된 WAF 규칙을 나열합니다.
Cloud Shell 사용
gcloud compute security-policies list-preconfigured-expression-sets
출력
EXPRESSION_SET
Sqli-canary
RULE_ID
owasp-crs-v030001-id942110-sqli
owasp-crs-v030001-id942120-sqli
<...>
Cloud Armor 보안 정책 만들기
Cloud Shell에서 다음을 실행합니다.
gcloud compute security-policies create block-with-modsec-crs \
--description "Block with OWASP ModSecurity CRS"
보안 정책 기본 규칙 업데이트
기본 규칙 우선순위의 숫자 값은 2147483647입니다.
Cloud Shell에서 다음을 실행합니다.
gcloud compute security-policies rules update 2147483647 \
--security-policy block-with-modsec-crs \
--action "deny-403"
기본 규칙이 작업 거부로 구성되어 있으므로 IP에서 액세스를 허용해야 합니다. 공개 IP를 찾습니다 (curl, ipmonkey, whatismyip 등).
Cloud Shell에서 다음을 실행합니다.
MY_IP=$(curl ifconfig.me)
사용자의 IP에서 액세스할 수 있도록 하는 첫 번째 규칙을 추가합니다 (아래에 IP 삽입)
Cloud Shell에서 다음을 실행합니다.
gcloud compute security-policies rules create 10000 \
--security-policy block-with-modsec-crs \
--description "allow traffic from my IP" \
--src-ip-ranges "$MY_IP/32" \
--action "allow"
보안 정책을 업데이트하여 LFI 공격 차단
로컬 파일 포함을 위한 경로 순회를 방지하는 OWASP ModSecurity Core Rule Set를 적용합니다.
Cloud Shell에서 다음을 실행합니다.
gcloud compute security-policies rules create 9000 \
--security-policy block-with-modsec-crs \
--description "block local file inclusion" \
--expression "evaluatePreconfiguredExpr('lfi-stable')" \
--action deny-403
보안 정책을 업데이트하여 원격 코드 실행 (rce) 차단
OWASP ModSecurity Core Rule Set에 따라 명령어 삽입을 포함한 rce를 찾는 규칙을 적용합니다. 일반적인 OS 명령이 감지되고 차단됩니다.
Cloud Shell에서 다음을 실행합니다.
gcloud compute security-policies rules create 9001 \
--security-policy block-with-modsec-crs \
--description "block rce attacks" \
--expression "evaluatePreconfiguredExpr('rce-stable')" \
--action deny-403
보안 정책을 업데이트하여 보안 스캐너 차단
OWASP ModSecurity Core Rule Set를 적용하여 잘 알려진 보안 스캐너, 스크립팅 HTTP 클라이언트, 웹 크롤러를 차단합니다.
Cloud Shell에서 다음을 실행합니다.
gcloud compute security-policies rules create 9002 \
--security-policy block-with-modsec-crs \
--description "block scanners" \
--expression "evaluatePreconfiguredExpr('scannerdetection-stable')" \
--action deny-403
보안 정책을 업데이트하여 프로토콜 공격 차단
OWASP ModSecurity Core Rule Set에 따라 캐리지 리턴 (CR) %0d 및 라인피드 (LF) %0a 문자, HTTP 요청 스머글링과 같은 기타 유형의 프로토콜 공격을 찾는 규칙을 적용합니다.
Cloud Shell에서 다음을 실행합니다.
gcloud compute security-policies rules create 9003 \
--security-policy block-with-modsec-crs \
--description "block protocol attacks" \
--expression "evaluatePreconfiguredExpr('protocolattack-stable')" \
--action deny-403
보안 정책을 업데이트하여 세션 고정 차단
OWASP ModSecurity Core Rule Set에 따라 다음을 수행하는 규칙을 적용합니다.
Cloud Shell에서 다음을 실행합니다.
gcloud compute security-policies rules create 9004 \
--security-policy block-with-modsec-crs \
--description "block session fixation attacks" \
--expression "evaluatePreconfiguredExpr('sessionfixation-stable')" \
--action deny-403
백엔드 서비스에 보안 정책 연결
Cloud Shell에서 다음을 실행합니다.
gcloud compute backend-services update juice-shop-backend \
--security-policy block-with-modsec-crs \
--global
규칙이 전파되는 데 시간이 걸릴 수 있습니다(10분 이내). 충분한 시간이 지났다고 판단되면 이전에 시연한 취약점을 테스트하여 다음 단계에서 Cloud Armor WAF 규칙 적용을 확인합니다.
7. OWASP ModSecurity Core Rule Set로 Cloud Armor 보호 관찰
LFI 취약점이 완화되었는지 확인
Cloud Shell 사용
curl -Ii http://$PUBLIC_SVC_IP/?a=../
출력
HTTP/1.1 403 Forbidden <...>
RCE 공격이 완화되었는지 확인
Cloud Shell 사용
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
출력
HTTP/1.1 403 Forbidden <..>
잘 알려진 스캐너 탐지 확인하기
Cloud Shell 사용
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
출력
HTTP/1.1 403 Forbidden <..>
프로토콜 공격이 완화되었는지 확인
OWASP ModSecurity Core Rule Set 버전 3.0.2에 따라 프로토콜 공격은 다음을 통해 완화됩니다.
Cloud Shell 사용
curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"
출력
HTTP/1.1 403 Forbidden <..>
세션 고정 시도가 차단되었는지 확인
Cloud Shell 사용
curl -Ii http://$PUBLIC_SVC_IP/?session_id=a
출력
HTTP/1.1 403 Forbidden <..>
8. Cloud Armor 보안 규칙 검토
보안 정책을 만들었으므로 이제 어떤 규칙이 구성되었는지 살펴보겠습니다.

규칙은 우선순위에 따라 평가됩니다. 숫자가 낮을수록 먼저 평가되며, 일단 트리거되면 우선순위 값이 더 높은 규칙은 처리되지 않습니다.
- 우선순위 9000 - LFI (로컬 파일 포함) 차단
- 우선순위 9001 - RCE (원격 코드 실행/명령어 삽입) 차단
- 우선순위 9002 - 스캐너 감지됨 차단
- 우선순위 9003 - HTTP 분할 및 HTTP 스머글링과 같은 프로토콜 공격 차단
- 우선순위 9004 - 세션 고정 공격 차단
- 우선순위 10000 - IP가 웹사이트에 액세스하도록 허용
- 우선순위 기본값 - 거부
*사이트에 대한 액세스를 허용하기 위해 'IP 허용' 규칙은 가장 높은 우선순위 번호로 구성되어 있지만, 모든 공격은 차단됩니다.
9. Cloud Armor 보안 정책 로그 관찰
Cloud Armor 콘솔 페이지에서 보안 정책의 세부정보를 확인하고 Logs 탭을 클릭한 다음 View policy logs 링크를 클릭하여 Cloud Logging 페이지로 이동합니다. 관심 있는 보안 정책(예: resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs))을 기준으로 자동으로 필터링됩니다. 403 오류 응답 코드를 관찰하고 로그 세부정보를 확장하여 시행된 보안 정책의 이름, 일치하는 필드 값, 사전 구성된 표현식 ID(또는 서명 ID)를 관찰합니다. 다음 스크린샷은 이 Codelab에서 구성되고 적용된 보안 정책의 로그 예시입니다.
LFI 로그

RCE 로그

스캐너 탐지 로그

프로토콜 공격 로그

세션 고정 로그

10. 실습 정리
실습을 완료했으므로 리소스를 정리합니다.
다음 명령어를 실행하여 Cloud Armor 보안 정책, 부하 분산기, 인스턴스, 방화벽 규칙, VPC 네트워크를 삭제합니다.
백엔드 서비스에서 Cloud Armor 보안 정책 삭제
gcloud -q compute backend-services update juice-shop-backend --security-policy "" --global
Cloud Armor 보안 정책 삭제
보안 정책을 삭제하면 연결된 규칙도 자동으로 삭제됩니다.
gcloud -q compute security-policies delete block-with-modsec-crs
부하 분산기 리소스 삭제
삭제할 부하 분산기 리소스에는 전달 규칙, target-http-proxies, url-maps, backend, health-checks, instance group이 포함됩니다.
gcloud -q compute forwarding-rules delete juice-shop-rule --global
gcloud -q compute target-http-proxies delete juice-shop-proxy
gcloud -q compute url-maps delete juice-shop-loadbalancer
gcloud -q compute backend-services delete juice-shop-backend \
--global
gcloud -q compute health-checks delete tcp-port-3000
gcloud -q compute instance-groups unmanaged delete juice-shop-group --zone=us-central1-c
인스턴스 삭제
gcloud -q compute instances delete owasp-juice-shop-app --zone us-central1-c
방화벽 규칙, 서브넷, VPC 삭제
gcloud -q compute firewall-rules delete allow-health-check gcloud -q compute firewall-rules delete allow-js-site gcloud -q compute networks subnets delete ca-lab-subnet --region us-central1 gcloud -q compute networks delete ca-lab-vpc
11. 수고하셨습니다
Cloud Armor 사전 구성된 WAF 규칙 Codelab을 완료하셨습니다.
학습한 내용
- 인스턴스 그룹과 전역 Cloud 부하 분산기를 설정하는 방법
- 사전 구성된 WAF 규칙으로 Cloud Armor 보안 정책을 구성하여 lfi, rce, 스캐너, 프로토콜 공격, 세션 고정으로부터 보호하는 방법
- 로그를 통해 Cloud Armor가 OWASP 상위 10개 공격 중 일부를 완화했는지 확인하는 방법
다음 단계
- Cloud Armor 사전 구성된 WAF 규칙으로 OWASP 상위 10개 취약점으로부터 애플리케이션 보호
- 민감도 수준에 따라 규칙 미세 조정
- 커스텀 규칙 언어 참조를 사용하여 더 구체적인 보안을 적용하세요.