1. บทนำ
รายการที่อยู่ IP ที่มีชื่อของ Google Cloud Armor ช่วยให้คุณอ้างอิงรายการที่อยู่ IP และช่วง IP ที่ผู้ให้บริการบุคคลที่สามดูแลได้ คุณกำหนดค่ารายการที่อยู่ IP ที่มีชื่อภายในนโยบายความปลอดภัยได้ คุณไม่จำเป็นต้องระบุที่อยู่ IP หรือช่วง IP แต่ละรายการด้วยตนเอง
สิ่งที่คุณจะได้เรียนรู้
- ประโยชน์ของรายการที่อยู่ IP ที่มีชื่อของ Cloud Armor
- สร้างนโยบายความปลอดภัยของ Cloud Armor
- ติดตั้งใช้งานรายการที่อยู่ IP ที่มีชื่อของ Cloud Armor
- สร้างตัวจัดสรรภาระงานส่วนกลาง
- สร้างกลุ่มอินสแตนซ์ที่มีการจัดการด้วยแอปพลิเคชันทดสอบตัวอย่าง
สิ่งที่คุณต้องมี
- ประสบการณ์เกี่ยวกับนโยบายความปลอดภัยและตัวจัดสรรภาระงาน
2. อนุญาตการเข้าชมจากผู้ให้บริการบุคคลที่สามที่ได้รับอนุญาตเท่านั้น
กรณีการใช้งานทั่วไปคือการสร้างรายการที่อนุญาตซึ่งมีที่อยู่ IP ของพาร์ทเนอร์บุคคลที่สามที่ได้รับอนุญาต เพื่อให้มั่นใจว่าเฉพาะการรับส่งข้อมูลจากพาร์ทเนอร์รายนี้เท่านั้นที่จะเข้าถึงตัวจัดสรรภาระงานและแบ็กเอนด์ได้
ตัวอย่างเช่น ผู้ให้บริการ CDN ต้องดึงเนื้อหาจากเซิร์ฟเวอร์ต้นทางเป็นระยะๆ เพื่อกระจายไปยังแคชของตนเอง การเป็นพาร์ทเนอร์กับ Google ช่วยให้ผู้ให้บริการ CDN เชื่อมต่อกับ Edge ของเครือข่าย Google ได้โดยตรง ผู้ใช้ CDN ใน Google Cloud สามารถใช้การเชื่อมต่อโดยตรงนี้ในระหว่างการดึงข้อมูลจากต้นทาง ในกรณีนี้ ผู้ใช้ CDN อาจต้องการสร้างนโยบายความปลอดภัยที่อนุญาตเฉพาะการรับส่งข้อมูลที่มาจากผู้ให้บริการ CDN รายนั้นๆ
ในตัวอย่างนี้ ผู้ให้บริการ CDN จะเผยแพร่รายการที่อยู่ IP 23.235.32.0/20, 43.249.72.0/22, ⋯ ผู้ใช้ CDN จะกำหนดค่ากฎความปลอดภัยที่อนุญาตเฉพาะการรับส่งข้อมูลที่มาจากที่อยู่ IP เหล่านี้ ด้วยเหตุนี้ ระบบจึงอนุญาตให้ใช้จุดเข้าถึงของผู้ให้บริการ CDN 2 ราย (23.235.32.10 และ 43.249.72.10) และอนุญาตให้ใช้การเข้าชมของผู้ให้บริการดังกล่าว ระบบบล็อกการเข้าชมจากจุดเข้าถึงที่ไม่ได้รับอนุญาต 198.51.100.1

ที่อยู่ IP ที่มีชื่อของ Google Cloud Armor
3. ลดความซับซ้อนในการกำหนดค่าและการจัดการโดยใช้กฎที่กำหนดค่าไว้ล่วงหน้า
ผู้ให้บริการ CDN มักใช้ที่อยู่ IP ที่เป็นที่รู้จักกันดีและผู้ใช้ CDN จำนวนมากจำเป็นต้องใช้ รายการเหล่านี้จะเปลี่ยนแปลงไปตามกาลเวลา เนื่องจากผู้ให้บริการจะเพิ่ม นำออก และอัปเดตที่อยู่ IP
การใช้รายการที่อยู่ IP ที่มีชื่อในกฎนโยบายความปลอดภัยจะช่วยลดความซับซ้อนของกระบวนการกำหนดค่าและจัดการที่อยู่ IP เนื่องจาก Google Cloud Armor จะซิงค์ข้อมูลจากผู้ให้บริการ CDN โดยอัตโนมัติทุกวัน ซึ่งช่วยลดกระบวนการที่กินเวลาและมีข้อผิดพลาดได้ง่ายในการดูแลรายการที่อยู่ IP ขนาดใหญ่ด้วยตนเอง
ผู้ให้บริการรายการที่อยู่ IP
Google Cloud Armor รองรับผู้ให้บริการรายการที่อยู่ IP ในตารางต่อไปนี้ ผู้ให้บริการ CDN เหล่านี้เป็นพาร์ทเนอร์กับ Google โดยจะเผยแพร่รายการที่อยู่ IP ผ่าน URL สาธารณะแต่ละรายการ
พาร์ทเนอร์เหล่านี้จะแสดงรายการที่อยู่ IPv4 และที่อยู่ IPv6 แยกกัน Google Cloud Armor ใช้ URL ที่ระบุเพื่อดึงข้อมูลรายการ จากนั้นจะแปลงรายการเป็นรายการที่อยู่ IP ที่มีชื่อ คุณอ้างอิงรายการตามชื่อในตาราง

หรือจะใช้ Cloud Shell เพื่อรับรายการที่อยู่ IP ที่มีชื่อซึ่งกำหนดค่าไว้ล่วงหน้าก็ได้
เข้าสู่ระบบ Cloud Shell และตั้งค่า projectid
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
จาก Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
ซึ่งจะแสดงผลดังนี้
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. โทโพโลยี Codelab

5. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี)



โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีผู้ใช้แล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud
การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย โปรดทำตามวิธีการในส่วน "การล้างข้อมูล" ซึ่งจะแนะนำวิธีปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะใช้งาน Google Cloud จากระยะไกลจากแล็ปท็อปได้ แต่ใน Codelab นี้คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานในระบบคลาวด์
จาก GCP Console ให้คลิกไอคอน Cloud Shell ในแถบเครื่องมือด้านขวาบน

การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมจะใช้เวลาเพียงไม่กี่นาที เมื่อเสร็จแล้ว คุณควรเห็นข้อความคล้ายกับตัวอย่างต่อไปนี้

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานทั้งหมดในห้องทดลองนี้ได้โดยใช้เพียงเบราว์เซอร์
6. สร้างเครือข่าย VPC
เครือข่าย VPC
จาก Cloud Shell
gcloud compute networks create
named-list-vpc
--subnet-mode custom
สร้างซับเน็ต
จาก Cloud Shell
gcloud compute networks subnets create named-ip-subnet \
--network
named-list-vpc
--range 10.0.0.0/24 --region us-east1
สร้างกฎไฟร์วอลล์
จาก Cloud Shell
gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16
สร้างตัวจัดสรรภาระงาน
สร้างเทมเพลตอินสแตนซ์
จาก Cloud Shell
gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any
สร้างกลุ่มอินสแตนซ์ที่มีการจัดการ
จาก Cloud Shell
gcloud compute --project=$projectid instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b
7. ยืนยันแบ็กเอนด์
ตรวจสอบว่ามีการสร้างอินสแตนซ์ VM ในทั้ง 2 ภูมิภาคและเข้าถึงเว็บไซต์ HTTP ของอินสแตนซ์
- ขณะที่ยังอยู่ใน Compute Engine ให้คลิกอินสแตนซ์ VM ในเมนูด้านซ้าย
- สังเกตอินสแตนซ์ที่ขึ้นต้นด้วย us-east1-mig อินสแตนซ์เหล่านี้เป็นส่วนหนึ่งของกลุ่มอินสแตนซ์ที่มีการจัดการ
- คลิก IP ภายนอกของอินสแตนซ์ us-east1-mig คุณควรเห็น IP ของไคลเอ็นต์ (ที่อยู่ IP ของคุณ) ชื่อโฮสต์ (ขึ้นต้นด้วย us-east1-mig)
กำหนดค่าตัวจัดสรรภาระงาน HTTP
- ใน Cloud Console ให้คลิกเมนูการนำทาง (
) > คลิกบริการเครือข่าย > การจัดสรรภาระงาน แล้วคลิกสร้างตัวจัดสรรภาระงาน - คลิกเริ่มการกำหนดค่าในส่วนการจัดสรรภาระงาน HTTP(S)

- เลือกจากอินเทอร์เน็ตไปยัง VM ของฉัน แล้วคลิกดำเนินการต่อ
- ตั้งชื่อเป็น http-lb
กำหนดค่าแบ็กเอนด์
บริการแบ็กเอนด์จะกำหนดเส้นทางการรับส่งข้อมูลขาเข้าไปยังแบ็กเอนด์ที่แนบอย่างน้อย 1 รายการ แบ็กเอนด์แต่ละรายการประกอบด้วยกลุ่มอินสแตนซ์และข้อมูลเมตาความจุในการแสดงผลเพิ่มเติม
- คลิกการกำหนดค่าแบ็กเอนด์
- สำหรับบริการแบ็กเอนด์และที่เก็บข้อมูลแบ็กเอนด์ ให้คลิกสร้างหรือเลือกบริการแบ็กเอนด์และที่เก็บข้อมูลแบ็กเอนด์ จากนั้นคลิกบริการแบ็กเอนด์ แล้วคลิกสร้างบริการแบ็กเอนด์
- ประเภทแบ็กเอนด์คือกลุ่มอินสแตนซ์
- ตั้งค่าต่อไปนี้ โดยปล่อยให้ค่าอื่นๆ ทั้งหมดเป็นค่าเริ่มต้น

- คลิกเสร็จสิ้น
- สำหรับการตรวจสอบประสิทธิภาพการทำงาน ให้เลือกสร้างการตรวจสอบประสิทธิภาพการทำงาน

- ตั้งค่าต่อไปนี้ โดยปล่อยให้ค่าอื่นๆ ทั้งหมดเป็นค่าเริ่มต้น

- ตั้งค่าต่อไปนี้ โดยปล่อยให้ค่าอื่นๆ ทั้งหมดเป็นค่าเริ่มต้น
- คลิกบันทึกและดำเนินการต่อ
- คลิกสร้างเพื่อสร้างบริการแบ็กเอนด์

กำหนดค่าฟรอนท์เอนด์
กฎของโฮสต์และเส้นทางจะระบุการกำหนดเส้นทางการรับส่งข้อมูล เช่น คุณกำหนดเส้นทางการรับส่งข้อมูลวิดีโอไปยังแบ็กเอนด์หนึ่ง และการรับส่งข้อมูลแบบคงที่ไปยังแบ็กเอนด์อื่นได้ อย่างไรก็ตาม คุณไม่ได้กำหนดค่ากฎของโฮสต์และเส้นทางใน Lab นี้
- คลิกการกำหนดค่าฟรอนท์เอนด์
- http-front-end
- ระบุค่าต่อไปนี้ โดยปล่อยให้ค่าอื่นๆ ทั้งหมดเป็นค่าเริ่มต้น

- คลิกเสร็จสิ้น
8. ตรวจสอบและสร้างตัวจัดสรรภาระงาน HTTP
- คลิก "ตรวจสอบและทำให้สิ้นสุด"

- ตรวจสอบบริการแบ็กเอนด์และส่วนหน้า

- คลิกสร้าง
- รอสักครู่เพื่อให้ระบบสร้างตัวจัดสรรภาระงาน
- คลิกชื่อของตัวจัดสรรภาระงาน (http-lb)
- จดที่อยู่ IPv4 ของตัวจัดสรรภาระงานสำหรับงานถัดไป ซึ่งเรียกว่า http-lb
9. ตรวจสอบการเข้าถึงที่ไม่ได้รับอนุญาตที่สำเร็จ
ก่อนใช้นโยบายที่อยู่ IP ที่ระบุชื่อ ให้ตรวจสอบการเข้าถึงที่ไม่ได้รับอนุญาตไปยังตัวจัดสรรภาระงานของห้องทดลองและเว็บแอปพลิเคชันที่ตามมาว่าสำเร็จ โปรดทราบว่าเมื่อใช้นโยบายที่อยู่ IP ที่ตั้งชื่อแล้ว การเข้าถึงเว็บแอปพลิเคชันจะจำกัดไว้เฉพาะชุดนิพจน์ที่จัดสรร
- ระบุที่อยู่ IP ของตัวจัดสรรภาระงานที่สร้างขึ้นในขั้นตอนก่อนหน้า (http-lb) แล้ววางลงในเว็บเบราว์เซอร์ เอาต์พุตจะคล้ายกับภาพหน้าจอด้านล่าง
หมายเหตุ: ขั้นตอนนี้จะใช้เวลาหลายนาที เมื่อสร้างหน้าเว็บแล้ว IP ของไคลเอ็นต์จะมาจากส่วนหน้าของ Google ไม่ใช่ IP ของเวิร์กสเตชัน

จากเวิร์กสเตชัน ให้ทำการตรวจสอบที่คล้ายกันตามที่ระบุไว้ด้านล่าง
bash-3.2$ curl <load-balancer-IP>
10. ตัวอย่างเอาต์พุต
bash-3.2$ curl <load-balancer-ip> <h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b
11. กำหนดค่ารายการ IP ที่มีชื่อ
สร้างนโยบาย Cloud Armor ใหม่สำหรับรายการ IP ที่มีชื่อ
จาก Cloud Shell
gcloud compute --project=$projectid security-policies create ca-policy
จาก Cloud Shell
gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*
ระบุที่อยู่รายการ IP ที่มีชื่อของ CDN ที่พร้อมใช้งาน
จาก Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \
--filter="id:sourceiplist"
ซึ่งจะแสดงผลดังนี้
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
กำหนดค่ารายการที่อยู่ IP ที่มีชื่อจาก Cloud Shell โดยอิงตามชุดนิพจน์ CDN ที่พร้อมใช้งาน
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('expression_set')" \
--action "allow"
ตัวอย่างการใช้ Cloudflare
gcloud beta compute security-policies rules create 600 \
--security-policy ca-policy \
--expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \
--action "allow"
12. ใช้นโยบายความปลอดภัยของ CA
ใช้นโยบายความปลอดภัยของ CA และรอหลายนาทีเพื่อให้มีการเผยแพร่นโยบายทั่วโลก
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. การตรวจสอบที่อยู่ IP ที่มีชื่อ
- เนื่องจากมีการใช้นโยบายความปลอดภัย การเข้าถึงตัวจัดสรรภาระงานจากเวิร์กสเตชันจึงไม่ได้รับอนุญาต
- หากต้องการตรวจสอบ ให้เปิดหน้าต่างเทอร์มินัลจากเวิร์กสเตชัน แล้วใช้คำสั่ง curl กับที่อยู่ IP ของตัวจัดสรรภาระงาน เอาต์พุตจาก curl จะทำให้เกิดข้อผิดพลาด "403" ห้าม เนื่องจากตอนนี้เวิร์กสเตชันของคุณไม่ได้รับอนุญาต
จากเวิร์กสเตชัน
bash-3.2$ curl <load-balancer-IP> <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
ขั้นตอนการล้างข้อมูล
gcloud -q compute backend-services update http-backend --security-policy "" --global gcloud -q compute --project=$projectid security-policies delete ca-policy gcloud -q compute forwarding-rules delete http-front-end --global gcloud -q compute target-http-proxies delete http-lb-target-proxy gcloud -q compute url-maps delete http-lb gcloud -q compute backend-services delete http-backend --global gcloud -q compute health-checks delete http-health-check gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template gcloud -q compute --project=$projectid firewall-rules delete default-allow-http gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check gcloud -q compute networks subnets delete named-ip-subnet --region us-east1 gcloud -q compute networks delete named-list-vpc
14. ยินดีด้วย
ขอแสดงความยินดีที่ทำ Codelab เสร็จสมบูรณ์
สิ่งที่เราได้พูดถึง
- ประโยชน์ของรายการที่อยู่ IP ที่มีชื่อของ Cloud Armor
- สร้างตัวจัดสรรภาระงานส่วนกลาง
- สร้างกลุ่มอินสแตนซ์ที่มีการจัดการด้วยแอปพลิเคชันทดสอบตัวอย่าง
- สร้างนโยบายความปลอดภัยของ Cloud Armor
- ติดตั้งใช้งานรายการที่อยู่ IP ที่มีชื่อของ Cloud Armor
- ตรวจสอบนโยบาย Cloud Armor ที่มี IP ที่ระบุชื่อ