1. 소개
안녕하세요. Cloud Armor 사전 구성된 WAF 규칙 Codelab에 오신 것을 환영합니다.
Google Cloud Armor는 Google의 엔터프라이즈 에지 네트워크 보안 솔루션으로, DDoS 보호, WAF 규칙 적용, 적응형 관리 기능을 대규모로 제공합니다.
Cloud Armor는 OWASP 상위 10개 웹 애플리케이션 보안 취약점을 완화하기 위해 사전 구성된 WAF 규칙 세트를 확장했습니다. 이 규칙 세트는 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 규칙으로 애플리케이션을 보호합니다. 애플리케이션은 Cloud Armor 보안 정책 및 규칙이 적용되는 Google Cloud 부하 분산기에 의해 프런트엔드됩니다. 공개 인터넷에서 제공되므로 거의 모든 곳에서 액세스할 수 있으며 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 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
클라우드 부하 분산기 구성요소: 대상 프록시 설정
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 취약점 관찰
원격 코드 실행에는 공격자가 권한이 있는 사용자에게만 일반적으로 제한된 OS 명령어를 실행할 수 있는 다양한 UNIX 및 Windows 명령어 삽입 시나리오가 포함됩니다. 다음은 전달된 간단한 ls 명령어 실행을 보여줍니다.
Cloud Shell 사용
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
출력
HTTP/1.1 200 OK <...>
전체 출력을 확인하려면 curl 플래그를 삭제하세요.
잘 알려진 스캐너의 액세스 관찰
상용 및 오픈소스 스캔 애플리케이션은 취약점 스캔을 비롯한 다양한 용도로 사용됩니다. 이러한 도구는 잘 알려진 사용자 에이전트와 기타 헤더를 사용합니다. curl이 잘 알려진 User-Agent 헤더와 함께 작동하는지 확인합니다.
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 핵심 규칙 집합을 적용합니다.
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 핵심 규칙 세트에 따라 명령어 삽입을 비롯한 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 핵심 규칙 세트에 따라 다음 규칙을 적용합니다.
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 핵심 규칙 세트로 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 Load Balancer를 설정하는 방법
- 사전 구성된 WAF 규칙으로 Cloud Armor 보안 정책을 구성하여 lfi, rce, 스캐너, 프로토콜 공격, 세션 고정으로부터 보호하는 방법
- 로그를 통해 Cloud Armor가 OWASP 상위 10개 공격 중 일부를 완화했는지 확인하는 방법
다음 단계
- Cloud Armor 사전 구성된 WAF 규칙으로 OWASP 상위 10개 취약점으로부터 애플리케이션 보호
- 민감도 수준에 따라 규칙 미세 조정
- 커스텀 규칙 언어 참조를 사용하여 보다 구체적인 보안을 적용하세요.