1. 소개
Google Cloud HTTP(S) 부하 분산은 전 세계 Google 접속 지점 (POP)의 Google 네트워크 에지에 배포됩니다. HTTP(S) 부하 분산기로 전달된 사용자 트래픽은 사용자에게 가장 가까운 POP로 유입되고, 이어서 Google의 글로벌 네트워크를 통해 사용 가능한 용량이 충분한 가장 가까운 백엔드로 부하가 분산됩니다.
Cloud Armor는 Google의 분산 서비스 거부 및 웹 애플리케이션 방화벽 (WAF) 감지 시스템입니다. Cloud Armor는 Google Cloud HTTP 부하 분산기와 긴밀하게 결합되어 원치 않는 요청을 위해 수신 트래픽을 조사할 수 있습니다. 이 서비스의 비율 제한 기능을 사용하면 요청량을 기준으로 백엔드 리소스에 대한 트래픽을 줄이고 원치 않는 트래픽이 Virtual Private Cloud (VPC) 네트워크의 리소스를 소비하는 것을 방지할 수 있습니다.
이 실습에서는 아래 다이어그램에 나타난 것과 같이 전역 백엔드가 있는 HTTP 부하 분산기를 구성합니다. 그런 다음 부하 분산기에 부하 테스트를 실행하여 백엔드 리소스에 도달하는 트래픽을 제한하는 Cloud Armor 비율 제한 정책을 추가합니다.
학습할 내용
- 적절한 상태 점검으로 HTTP 부하 분산기를 설정하는 방법
- Cloud Armor 비율 제한 정책을 만드는 방법
- VM에서 스트레스 테스트를 실행할 때 비율 제한 정책이 트래픽을 차단하고 있는지 확인하는 방법
필요한 항목
- 기본 네트워킹 및 HTTP 지식
- 기본 Unix/Linux 명령줄 지식
2. 설정 및 요구사항
자습형 환경 설정
- Google Cloud Console에 로그인하여 새 프로젝트를 만들거나 기존 프로젝트를 재사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.
- 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
- 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유해야 하며, 변경할 수 없습니다(설정된 후에는 변경할 수 없음). Cloud Console은 고유한 문자열을 자동으로 생성합니다. 일반적으로 신경 쓰지 않아도 됩니다. 대부분의 Codelab에서는 프로젝트 ID를 참조해야 하며(일반적으로
PROJECT_ID
로 식별됨), 마음에 들지 않는 경우 임의로 다시 생성하거나 직접 지정해서 사용할 수 있는지 확인하세요. 프로젝트가 생성되면 프로젝트 ID가 '고정'됩니다. - 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참조하세요.
- 다음으로 Cloud 리소스/API를 사용하려면 Cloud Console에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼을 마친 후 비용이 결제되지 않도록 리소스를 종료하려면 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. 백엔드에 HTTP 트래픽을 허용하도록 방화벽 규칙 구성
Google Cloud 상태 점검 및 부하 분산기에서 백엔드로의 HTTP 트래픽을 허용하도록 방화벽 규칙을 구성합니다.
프로젝트에서 생성된 default VPC 네트워크를 사용합니다. 백엔드에 HTTP 트래픽을 허용하는 방화벽 규칙을 만듭니다. 상태 점검을 통해 새 연결을 수신할 수 있는 부하 분산기 인스턴스를 판별합니다. HTTP 부하 분산의 경우 130.211.0.0/22 및 35.191.0.0/16 범위 내의 주소에서 부하 분산된 인스턴스의 상태 점검 프로브를 가져옵니다. VPC 방화벽 규칙에서 이 연결을 허용해야 합니다. 또한 부하 분산기는 동일한 IP 범위에서 백엔드와 통신합니다.
- Cloud 콘솔에서 탐색 메뉴 ( ) > VPC 네트워크 > 방화벽.
- 기존 ICMP, 내부, RDP, SSH 방화벽 규칙을 확인합니다.각 Google Cloud 프로젝트는 기본 네트워크와 이러한 방화벽 규칙으로 시작합니다.
- 방화벽 규칙 만들기를 클릭합니다.
- 다음 값을 설정하고 나머지 값은 모두 기본값으로 유지합니다.
속성 | 값 (지정된 대로 값 입력 또는 옵션 선택) |
이름 | default-allow-health-check |
네트워크 | 기본값 |
대상 | 지정된 대상 태그 |
대상 태그 | http-server |
소스 필터 | IP 범위 |
소스 IP 범위 | 130.211.0.0/22, 35.191.0.0/16 |
프로토콜 및 포트 | 지정된 프로토콜 및 포트, TCP를 체크 |
- 만들기를 클릭합니다.
또는 gcloud 명령줄을 사용하는 경우입니다. 다음은 명령어입니다.
gcloud compute firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=http-server
4. 인스턴스 템플릿 구성 및 관리형 인스턴스 그룹 만들기
관리형 인스턴스 그룹에서는 인스턴스 템플릿을 사용하여 동일한 인스턴스 그룹을 만들 수 있습니다. 이를 사용하여 HTTP 부하 분산기의 백엔드를 만듭니다.
인스턴스 템플릿 구성
인스턴스 템플릿은 VM 인스턴스 및 관리형 인스턴스 그룹을 만드는 데 사용하는 API 리소스입니다. 인스턴스 템플릿은 머신 유형과 부팅 디스크 이미지, 서브넷, 라벨, 기타 인스턴스 속성을 정의합니다. us-east1을 위한 인스턴스 템플릿 하나와 europe-west1을 위한 인스턴스 템플릿을 하나씩 만듭니다.
- Cloud 콘솔에서 탐색 메뉴 ( ) > Compute Engine 인스턴스 템플릿을 선택한 다음 인스턴스 템플릿 만들기를 클릭합니다.
- 이름에 us-east1-template을 입력합니다.
- 시리즈에서 N1을 선택합니다.
- 네트워킹, 디스크, 보안, 관리 , 단독 테넌시를 클릭합니다.
- 관리 섹션으로 이동합니다.
- 메타데이터에서 항목 추가를 클릭하고 다음과 같이 지정합니다.
키 | 값 |
startup-script-url | gs://cloud-training/gcpnet/httplb/startup.sh |
- 네트워킹을 클릭합니다.
- 다음 값을 설정하고 나머지 값은 모두 기본값으로 유지합니다.
속성 | 값 (지정된 대로 값 입력 또는 옵션 선택) |
네트워크 (네트워크 인터페이스 아래) | 기본값 |
서브넷 (네트워크 인터페이스 아래) | 기본값 (us-east1) |
네트워크 태그 | http-server |
- 만들기를 클릭합니다.
- 인스턴스 템플릿이 생성될 때까지 기다립니다.
이제 us-east1-template을 복사하여 subnet-b에 대한 또 다른 인스턴스 템플릿을 만듭니다.
- us-east1-template을 클릭한 다음 상단에서 복사 옵션을 클릭합니다.
- 이름에 europe-west1-template을 입력합니다.
- 네트워킹, 디스크, 보안, 관리 , 단독 테넌시를 클릭합니다.
- 네트워킹을 클릭합니다.
- 네트워크 인터페이스에서 기본 인터페이스를 수정합니다. 서브넷에서 기본값 (europe-west1)을 선택합니다.
- 만들기를 클릭합니다.
관리형 인스턴스 그룹 만들기
us-east1과 europe-west1에 관리형 인스턴스 그룹을 하나씩 만듭니다.
- 아직 Compute Engine에 있는 상태로 왼쪽 메뉴의 인스턴스 그룹을 클릭합니다
- 인스턴스 그룹 만들기를 클릭합니다. 새 관리형 인스턴스 그룹(스테이트리스(Stateless))을 선택합니다.
- 다음 값을 설정하고 나머지 값은 모두 기본값으로 유지합니다.
속성 | 값 (지정된 대로 값 입력 또는 옵션 선택) |
이름 | us-east1-mig |
위치 | 다중 영역 |
지역 | us-east1 |
인스턴스 템플릿 | us-east1-템플릿 |
자동 확장 > 자동 확장 정책 > 연필 아이콘 >을 클릭합니다. 측정항목 유형 | CPU 사용률 |
대상 CPU 사용률 | 80, '완료'를 클릭합니다. |
대기 기간 | 45 |
최소 인스턴스 수 | 1 |
최대 인스턴스 수 | 5 |
- 만들기를 클릭합니다.
동일한 절차를 반복하여 europe-west1의 europe-west1-mig에 대한 두 번째 인스턴스 그룹을 만듭니다.
- 인스턴스 그룹 만들기를 클릭합니다.
- 다음 값을 설정하고 나머지 값은 모두 기본값으로 유지합니다.
속성 | 값 (지정된 대로 값 입력 또는 옵션 선택) |
이름 | europe-west1-mig |
위치 | 다중 영역 |
리전 | europe-west1 |
인스턴스 템플릿 | europe-west1-template |
자동 확장 > 자동 확장 정책 > 연필 아이콘 >을 클릭합니다. 측정항목 유형 | CPU 사용률 |
대상 CPU 사용률 | 80, '완료'를 클릭합니다. |
대기 기간 | 45 |
최소 인스턴스 수 | 1 |
최대 인스턴스 수 | 5 |
- 만들기를 클릭합니다.
5. HTTP 부하 분산기 구성
네트워크 다이어그램에서 볼 수 있듯이 두 백엔드(us-east1의 us-east1-mig와 europe-west1의 europe-west1-mig) 간에 트래픽을 분산하도록 HTTP 부하 분산기를 구성합니다.
구성 시작
- Cloud 콘솔에서 탐색 메뉴 ( ) >를 클릭합니다. 네트워크 서비스를 클릭합니다. 부하 분산을 클릭하고 부하 분산기 만들기를 클릭합니다.
- HTTP(S) 부하 분산에서 구성 시작을 클릭합니다.
- 인터넷 트래픽을 VM으로 분산, 기본 HTTP(S) 부하 분산기를 선택하고 계속을 클릭합니다.
- 이름을 http-lb로 설정합니다.
백엔드 구성
백엔드 서비스는 수신 트래픽을 하나 이상의 연결된 백엔드에 전달합니다. 각 백엔드는 인스턴스 그룹과 추가 제공 용량 메타데이터로 구성됩니다.
- 백엔드 구성을 클릭합니다.
- 백엔드 서비스 및 백엔드 버킷에서 백엔드 서비스 만들기를 클릭합니다.
- 다음 값을 설정하고 나머지 값은 모두 기본값으로 유지합니다.
속성 | 값 (지정된 대로 옵션 선택) |
이름 | http-backend |
인스턴스 그룹 | us-east1-mig |
포트 번호 | 80 |
분산 모드 | Rate |
최대 RPS | 50개 (인스턴스당) |
용량 | 100 |
- 완료를 클릭합니다.
- 백엔드 추가를 클릭합니다.
- 다음 값을 설정하고 나머지 값은 모두 기본값으로 유지합니다.
속성 | 값 (지정된 대로 옵션 선택) |
인스턴스 그룹 | europe-west1-mig |
포트 번호 | 80 |
분산 모드 | Utilization |
최대 백엔드 사용률 | 80 |
용량 | 100 |
- 완료를 클릭합니다.
- 상태 점검에서 상태 점검 만들기를 선택합니다.
- 다음 값을 설정하고 나머지 값은 모두 기본값으로 유지합니다.
속성 | 값 (지정된 대로 옵션 선택) |
이름 | http-health-check |
프로토콜 | TCP |
포트 | 80 |
- 저장을 클릭합니다.
- 로깅 사용 설정 체크박스를 선택합니다.
- 샘플링 레이트를 1로 설정합니다.
- 만들기를 클릭하여 백엔드 서비스를 만듭니다.
프런트엔드 구성
호스트 및 경로 규칙은 트래픽의 전달 방식을 결정합니다. 예를 들어 동영상 트래픽을 한 백엔드에 전달하고 정적 트래픽을 다른 백엔드에 전달할 수 있습니다. 그러나 이 실습에서는 호스트 및 경로 규칙을 구성하지 않습니다.
- 프런트엔드 구성을 클릭합니다.
- 다음을 지정하고 나머지 값은 모두 기본값으로 유지합니다.
속성 | 값 (지정된 대로 값 입력 또는 옵션 선택) |
프로토콜 | HTTP |
IP 버전 | IPv4 |
IP 주소 | 임시 |
포트 | 80 |
- 완료를 클릭합니다.
- 프런트엔드 IP 및 포트 추가를 클릭합니다.
- 다음을 지정하고 나머지 값은 모두 기본값으로 유지합니다.
속성 | 값 (지정된 대로 값 입력 또는 옵션 선택) |
프로토콜 | HTTP |
IP 버전 | IPv6 |
IP 주소 | 임시 |
포트 | 80 |
- 완료를 클릭합니다.
HTTP 부하 분산기 검토 및 만들기
- 검토 및 완료를 클릭합니다.
- 백엔드 서비스와 프런트엔드를 검토합니다.
- 만들기를 클릭합니다.
- 부하 분산기가 생성될 때까지 기다립니다.
- 부하 분산기 이름(http-lb)을 클릭합니다.
- 다음 작업을 위해 부하 분산기의 IPv4 및 IPv6 주소를 확인합니다. 각각 [LB_IP_v4] 및 [LB_IP_v6]라고 합니다.
6. HTTP 부하 분산기 테스트
백엔드의 HTTP 부하 분산기를 만들었으므로 트래픽이 백엔드 서비스로 전달되는지 확인합니다.
HTTP 부하 분산기에 액세스
HTTP 부하 분산기에 대한 IPv4 액세스를 테스트하려면 브라우저에서 새 탭을 열고 http://[LB_IP_v4]로 이동합니다. [LB_IP_v4] 를 부하 분산기의 IPv4 주소로 바꿔야 합니다.
로컬 IPv6 주소가 있는 경우, http://[LB_IP_v6]으로 이동하여 HTTP 부하 분산기의 IPv6 주소를 사용해 봅니다. [LB_IP_v6] 를 부하 분산기의 IPv6 주소로 바꿔야 합니다.
HTTP 부하 분산기 부하 테스트
siege를 사용하여 HTTP 부하 분산기에서 부하를 시뮬레이션할 새 VM을 만듭니다. 그런 다음 부하가 클 때 트래픽이 두 백엔드에 분산되는지 확인합니다.
- 콘솔에서 탐색 메뉴 ( ) > Compute Engine VM 인스턴스.
- 인스턴스 만들기를 클릭합니다.
- 다음 값을 설정하고 나머지 값은 모두 기본값으로 유지합니다.
속성 | 값 (지정된 대로 값 입력 또는 옵션 선택) |
이름 | siege-vm |
지역 | us-west1 |
영역 | us-west1-c |
시리즈 | N1 |
- 만들기를 클릭합니다.
- siege-vm 인스턴스가 만들어질 때까지 기다립니다.
- siege-vm에서 SSH를 클릭해 터미널을 실행하고 연결합니다.
- 다음 명령어를 실행하여 siege를 설치합니다.
sudo apt-get -y install siege
- HTTP 부하 분산기의 IPv4 주소를 환경 변수에 저장하려면 다음 명령어에서 [LB_IP_v4] 를 IPv4 주소로 대체하여 실행합니다.
export LB_IP=[LB_IP_v4]
- 부하를 시뮬레이션하려면 다음 명령어를 실행합니다.
siege -c 250 http://$LB_IP
출력은 다음과 같아야 합니다(출력 예시이므로 복사하지 마세요).
New configuration template added to /home/student/.siege Run siege -C to view the current settings in that file ** SIEGE 4.0.4 ** Preparing 250 concurrent users for battle. The server is now under siege...
- Cloud 콘솔에서 탐색 메뉴 ( )를 클릭하고 네트워크 서비스 > 부하 분산.
- http-lb를 클릭합니다.
- 모니터링 탭을 클릭합니다. 북미와 두 백엔드 간의 트래픽을 2~3분 동안 모니터링합니다.
처음에는 트래픽이 us-east1-mig로만 전달되지만 RPS가 증가함에 따라 트래픽은 europe-west1-mig로도 전달됩니다.
이를 통해 기본적으로 트래픽은 가장 가까운 백엔드로 전달되지만 부하가 매우 크면 백엔드 간에 트래픽이 분산되기도 함을 알 수 있습니다.
- siege-vm의 SSH 터미널로 돌아갑니다.
- Ctrl+C를 눌러 siege를 중지합니다.
7. Cloud Armor 비율 제한 정책 만들기
이 섹션에서는 Cloud Armor를 사용하여 비율 제한 정책을 설정하여 siege-vm이 HTTP 부하 분산기에 액세스하는 것을 거부합니다.
- Cloud Shell('설정 및 요구사항'의 'Cloud Shell 시작'에서 Cloud Shell 사용 방법 안내 참조)에서 gcloud를 통해 보안 정책을 만듭니다.
gcloud compute security-policies create rate-limit-siege \ --description "policy for rate limiting"
- 다음으로 다음과 같이 비율 제한 규칙을 추가합니다.
gcloud beta compute security-policies rules create 100 \ --security-policy=rate-limit-siege \ --expression="true" \ --action=rate-based-ban \ --rate-limit-threshold-count=50 \ --rate-limit-threshold-interval-sec=120 \ --ban-duration-sec=300 \ --conform-action=allow \ --exceed-action=deny-404 \ --enforce-on-key=IP
- 백엔드 서비스 http-backend에 보안 정책을 연결합니다.
gcloud compute backend-services update http-backend \ --security-policy rate-limit-siege –-global
- 콘솔에서 탐색 메뉴 > 네트워크 보안 > Cloud Armor
- Click Rate-limit-siege 다음과 유사한 정책이 표시됩니다.
보안 정책 확인하기
- siege-vm의 SSH 터미널로 돌아갑니다.
- LB IP에 대해 curl을 실행하여 여전히 연결할 수 있는지 확인합니다. 200 응답이 표시되는지 확인합니다.
curl http://$LB_IP
- siege-vm의 SSH 터미널에서 부하를 시뮬레이션하려면 다음 명령어를 실행합니다.
siege -c 250 http://$LB_IP
출력은 다음과 같이 표시됩니다 (출력 예시이므로 복사하지 마세요).
** SIEGE 4.0.4 ** Preparing 250 concurrent users for battle. The server is now under siege...
- 보안 정책 로그를 살펴보고 이 트래픽도 차단되는지 확인합니다.
- 콘솔에서 탐색 메뉴 > 네트워크 보안 > Cloud Armor입니다.
- rate-limit-siege를 클릭합니다.
- 로그를 클릭합니다.
- 정책 로그 보기를 클릭합니다.
- 로깅 페이지에서 쿼리 미리보기의 모든 텍스트를 지웁니다.
- 리소스를 Cloud HTTP 부하 분산기 > http-lb-forwarding-rule > http-lb를 입력한 다음 추가를 클릭합니다. 또는 아래에 MQL(모니터링 쿼리 언어) 쿼리가 나와 있습니다. 이 쿼리를 복사하여 쿼리 편집기에 붙여넣을 수 있습니다.
resource.type="http_load_balancer" resource.labels.forwarding_rule_name="http-lb-forwarding-rule" resource.labels.url_map_name="http-lb"
- 이제 쿼리 실행을 클릭합니다.
- 쿼리 결과에서 로그 항목을 펼칩니다.
- httpRequest를 펼칩니다. 요청은 siege-vm IP 주소에서 온 것이어야 합니다. 그렇지 않은 경우 다른 로그 항목을 펼칩니다.
- jsonPayload를 펼칩니다.
- FontStyleSecurityPolicy를 펼칩니다.
configurationAction이 rate-limit-siege라는 이름과 함께 RATE_BASED_BAN으로 설정되어 있습니다.
- 추가로 확인하려면 탐색 메뉴 ( )로 이동하여 네트워크 서비스를 클릭합니다. 부하 분산. http-lb를 클릭합니다. 모니터링 탭을 클릭합니다.
그래프에서 siege 트래픽을 확인할 수 있습니다. 또한 비율 제한 트래픽은 백엔드에 도달하지 않으며 Cloud Armor 정책에 의해 차단됩니다.
수고하셨습니다. Cloud Armor로 비율 제한에 대한 실습을 완료했습니다.
©2020 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.
8. 실습 정리
- Network Security(네트워크 보안) >> Cloud Armor >> %POLICY NAME%을(를) 클릭하고 삭제를 선택합니다.
- 네트워킹 >>으로 이동합니다. 네트워크 서비스 >> 부하 분산. 생성된 부하 분산기를 선택하고 삭제를 클릭합니다.
삭제할 추가 리소스로 백엔드 서비스 및 상태 점검을 선택합니다.
- 탐색 메뉴 ( ) >로 이동합니다. Compute Engine 인스턴스 그룹. 관리형 인스턴스 그룹을 모두 선택하고 삭제를 클릭합니다.
삭제하려면 '삭제'를 입력하세요. 을 입력합니다.
관리형 인스턴스 그룹이 삭제될 때까지 기다립니다. 이렇게 하면 그룹의 인스턴스도 삭제됩니다. 인스턴스 그룹이 삭제된 후에만 템플릿을 삭제할 수 있습니다.
- 왼쪽 창에서 인스턴스 템플릿으로 이동합니다**.** 인스턴스 템플릿을 모두 선택하고 삭제를 클릭합니다.
- 왼쪽 창에서 VM 인스턴스로 이동합니다**.** siege-vm 인스턴스 옆에 있는 줄임표를 선택하고 삭제를 클릭합니다.
- 탐색 메뉴 ( ) >로 이동합니다. VPC 네트워크 > 방화벽. default-allow-health-check를 선택하고 삭제를 클릭합니다.
9. 축하합니다.
Cloud Armor로 비율 제한을 구현했습니다. 백엔드가 us-east1 및 europe-west1에 있는 HTTP 부하 분산기를 구성했습니다. 그런 다음 VM으로 부하 분산기에 부하 테스트를 실행하여 Cloud Armor로 비율 제한을 통해 IP 주소를 차단했습니다. 보안 정책 로그를 살펴보고 트래픽이 차단된 이유를 확인할 수 있었습니다.
학습한 내용
- 인스턴스 템플릿을 설정하고 관리형 인스턴스 그룹을 만드는 방법
- HTTP 부하 분산기를 설정하는 방법
- Cloud Armor 비율 제한 정책을 만드는 방법
- 비율 제한 정책이 의도한 대로 작동하는지 확인하는 방법
다음 단계
- 소스 IP 범위를 기반으로 비율 제한 정책을 설정해 보세요. 아래 샘플 명령어 -
gcloud alpha compute security-policies rules create 105 \ --security-policy sec-policy \ --src-ip-ranges "1.2.3.0/24" \ --action throttle \ --rate-limit-threshold-count 100 \ --rate-limit-threshold-interval-sec 60 \ --conform-action allow \ --exceed-action deny-429 \ --enforce-on-key IP
- 지역 코드를 기반으로 비율 제한 정책을 설정해 보세요. 아래 샘플 명령어 -
gcloud alpha compute security-policies rules create 101 \ --security-policy sec-policy \ --expression "origin.region_code == 'US'" \ --action rate-based-ban \ --rate-limit-threshold-count 10 \ --rate-limit-threshold-interval-sec 60 \ --ban-duration-sec 300 \ --ban-threshold-count 1000 \ --ban-threshold-interval-sec 600 \ --conform-action allow \ --exceed-action deny-403 \ --enforce-on-key IP