JINIers
[Qwiklabs] HTTP Load Balancer with Cloud Armor 본문
Cloud Armor가 포함된 http 부하분산기
cloud armor ip allow list / deny list를 사용하면 google cloud 엣지에서 사용자 및 악성 트래픽에 대해 최대한 가까운 http(s) 로드밸런서에 대한 액세스를 제한하거나 허용할 수 있음
→ 이러면 악의적인 사용자나 트래픽이 리소스를 소비하거나 VPC 네트워크에 들어가는 것을 방지할 수 있음
이거라는데 어.... 그래요... 해보라니까 해볼게...
[목표]
- http 및 상태 확인 방화벽 규칙 만들기
- 두 개의 인스턴스 템플릿 구성
- 관리형 인스턴스 그룹 2개 만들기
- IPv4 및 IPv6을 사용하여 http 로드밸런서 구성
- http 로드밸런서 스트레스 테스트
- http 로드밸런서에 대한 액세스를 제한하기 위해 ip 주소 거부
[체크포인트]
1. http 및 상태 확인 방화벽 규칙 구성
2. 인스턴스 템플릿 및 인스턴스 그룹 구성
3. http 로드 밸런서 구성
4. siege-vm 블랙리스트
1. http 및 상태 확인 방화벽 규칙 구성
[http 방화벽 규칙 만들기]
gcloud compute firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
[상태 확인 방화벽 규칙 만들기]
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
2. 인스턴스 템플릿 구성 및 인스턴스 그룹 생성
[인스턴스 템플릿 구성]
compute engine > instance templates > create
조건
- name : us-east1-template
- metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh
- machine-type=n1-standard-1
- network interface > subnetwork : us-east1
- tags=http-server
* network-tags 'http-server'는 HTTP and Health Check 방화벽 규칙이 인스턴스에 적용되도록 한다.
> create similar > create
- name : europe-west1-template
- network interface > subnetwork : default(europe-west1)
[관리형 인스턴스 그룹 만들기]
1. us.ver
조건
- Name : us-east1-mig
- Location : Multiple zones
- Region : us-east1
- Instance template : us-east1-template
- Autoscaling > Autoscaling metrics > Click dropdown > Metric type CPU utilization
- Target CPU : utilization 80, click Done.
- Cool-down period : 45
- Minimum number of instances : 1
- Maximum number of instances : 5
shell >
gcloud beta compute instance-groups managed create us-east1-mig --project=qwiklabs-gcp-01-6225c9b339d2 --base-instance-name=us-east1-mig --size=1 --template=us-east1-template --zones=us-east1-b,us-east1-c,us-east1-d --target-distribution-shape=EVEN
gcloud beta compute instance-groups managed set-autoscaling us-east1-mig --project=qwiklabs-gcp-01-6225c9b339d2 --region=us-east1 --cool-down-period=45 --max-num-replicas=5 --min-num-replicas=1 --mode=on --target-cpu-utilization=0.8
2. eu.ver
조건
- Name : europe-west1-mig
- Location : Multiple zones
- Region : europe-west1
- Instance template : europe-west1-template
- Autoscaling > Autoscaling metrics > Click dropdown > Metric type CPU utilization
- Target CPU : utilization 80, click Done.
- Cool-down period : 45
- Minimum number of instances : 1
- Maximum number of instances : 5
shell >
gcloud beta compute instance-groups managed create europe-west1-mig --project=qwiklabs-gcp-01-6225c9b339d2 --base-instance-name=europe-west1-mig --size=1 --template=europe-west1-template --zones=europe-west1-b,europe-west1-d,europe-west1-c --target-distribution-shape=EVEN
gcloud beta compute instance-groups managed set-autoscaling europe-west1-mig --project=qwiklabs-gcp-01-6225c9b339d2 --region=europe-west1 --cool-down-period=45 --max-num-replicas=5 --min-num-replicas=1 --mode=on --target-cpu-utilization=0.8
[백엔드 확인]
us-east1-mig external ip 클릭
클라이언트 ip, host name, server location이 표시되어야한다.
3. http 로드밸런서 구성
network service > load balancing > create load balancer > http load balancing 선택 > From Internet to my VMs or serverless services 선택 후 컨티뉴
[백엔드 구성]
backend configuration > create a backend service
조건
- Name : http-backend
- Instance group : us-east1-mig
- Port numbers : 80
- Balancing mode : Rate
- Maximum RPS : 50
- Capacity : 100
done > add backend
조건
- Instance group : europe-west1-mig
- Port numbers : 80
- Balancing mode : Utilization
- Maximum backend utilization : 80
- Capacity : 100
done > health check > create health check > save
조건
- name : http-health-check
- Protocol : TCP
- Port : 80
enable logging 체크 > rate : 1 > create
[프런트엔드 구성]
조건
- Protocol HTTP
- IP version IPv4
- IP address Ephemeral
- Port 80
done > add fronted ip and port
조건
- Protocol HTTP
- IP version IPv6
- IP address Ephemeral
- Port 80
done > 검토 > create
lb 4 : 34.117.176.134:80
4. http 로드밸런서 테스트
[http 로드 밸런서에 액세스]
http://34.117.176.134:80
[HTTP 로드 밸런서 스트레스 테스트]
조건
- Name siege-vm
- Region us-west1
- Zone us-west1-c
- Series N1
siege-vm ssh >
sudo apt-get -y install siege
export LB_IP=34.111.194.53:80
siege -c 250 http://$LB_IP
network service > LB > http-lb 눌러 > 모니터링 탭 확인
5. siege-vm 거부
SIEGE_IP : 34.127.52.153
network security > cloud armor > create policy
조건
- Name denylist-siege
- Default rule action : Allow
next step > add rule >
- Condition : Enter the SIEGE_IP
- Action : Deny
- Deny status : 403 (Forbidden)
- Priority : 1000
next step > target
- type : Load balancer backend service
- target : http-backend
생성!!
[보안정책 확인]
siege-vm ssh >
curl http://$LB_IP
<!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
이 떠야함!! 좀 걸린다!!
siege -c 250 http://$LB_IP
network security > cloud armor > denylist-siege 클릭 > log 클릭 > view policy logs
쿼리 >
resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(denylist-siege)
resource.type="http_load_balancer"
resource.labels.forwarding_rule_name="http-lb-forwarding-rule"
resource.labels.url_map_name="http-lb"
후 run query
뒤에 httpRequest를 확장하고 어쩌고 있는데 찾지도 못했고 siege가 계속되어 이상현상 발생으로 인해 꺼짐
하지만 그 전에 체크포인트를 전부 완성해서 실습은 완료로 표시되었다.
'GCP > Qwiklabs' 카테고리의 다른 글
[Qwiklabs] Google Cloud Packet Mirroring with OpenSource IDS (0) | 2022.03.03 |
---|---|
Create an Internal Load Balancer (0) | 2022.03.02 |
[Qwiklabs] VPC Networks - Controlling Access (0) | 2022.02.28 |
[PCK] Configure Secure RDP using a Windows Bastion Host(미완) (0) | 2022.02.28 |
[Qwiklabs]Networking in Google Cloud _User Authentication: Identity-Aware Proxy (0) | 2022.02.28 |