1. บทนำ
นโยบายความปลอดภัยของ Google Cloud Armor Edge ช่วยให้คุณจำกัดการเข้าถึงออบเจ็กต์ที่แคชไว้ใน Google Cloud CDN และ Google Cloud Storage ได้ ตัวอย่างของเหตุผลที่ทำเช่นนี้ ได้แก่ การตรวจสอบว่าผู้ใช้ไม่ได้เข้าถึงออบเจ็กต์ในที่เก็บข้อมูลของพื้นที่เก็บข้อมูลจากภูมิศาสตร์ที่จำกัด หรือการตรวจสอบว่าการกระจายสื่อกำลังกรองพื้นที่ทางภูมิศาสตร์ที่คุณมีใบอนุญาตสำหรับการดำเนินการนี้
ในห้องทดลองนี้ เราจะสร้างที่เก็บข้อมูล GCS, อัปโหลดรูปภาพไปยังที่เก็บข้อมูล เชื่อมโยงกับตัวจัดสรรภาระงาน จากนั้นเปิดใช้นโยบาย Cloud CDN และ Edge Security ในที่เก็บข้อมูลดังกล่าว
สิ่งที่คุณจะได้เรียนรู้
- วิธีตั้งค่าที่เก็บข้อมูล Cloud Storage ด้วยเนื้อหาที่แคชได้
- วิธีสร้างนโยบายความปลอดภัยของ Edge เพื่อปกป้องเนื้อหา
- วิธีตรวจสอบว่านโยบายความปลอดภัยของ Edge ทำงานตามที่คาดหมาย
สิ่งที่คุณต้องมี
- เครือข่ายพื้นฐานและความรู้เกี่ยวกับ HTTP
- ความรู้พื้นฐานเกี่ยวกับบรรทัดคำสั่ง Unix/Linux
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมตามเวลาที่สะดวก
- ลงชื่อเข้าใช้ Google Cloud Console และสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี
- ชื่อโครงการคือชื่อที่แสดงของผู้เข้าร่วมโปรเจ็กต์นี้ เป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้และคุณอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์ต้องไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและจะเปลี่ยนแปลงไม่ได้ (เปลี่ยนแปลงไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ปกติแล้วคุณไม่สนว่าอะไรเป็นอะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (ซึ่งปกติระบุไว้ว่าเป็น
PROJECT_ID
) ดังนั้นหากไม่ชอบ ให้สร้างรหัสแบบสุ่มขึ้นมาอีกรหัสหนึ่ง หรือคุณจะลองใช้รหัสโปรเจ็กต์ของคุณเองแล้วดูว่ารหัสโปรเจ็กต์พร้อมใช้งานหรือไม่ แล้วก็ "แช่แข็ง" หลังจากสร้างโปรเจ็กต์แล้ว - มีค่าที่ 3 คือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 ค่าได้ในเอกสารประกอบ
- ถัดไป คุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของระบบคลาวด์ การใช้งาน Codelab นี้น่าจะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ ให้ทำตาม "การล้าง" ดูได้ที่ตอนท้ายของ Codelab ผู้ใช้ใหม่ของ Google Cloud จะมีสิทธิ์เข้าร่วมโปรแกรมทดลองใช้ฟรี$300 USD
เริ่มต้น Cloud Shell
แม้ว่าคุณจะดำเนินการ Google Cloud จากระยะไกลได้จากแล็ปท็อป แต่คุณจะใช้ Google Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานในระบบคลาวด์ใน Codelab นี้
จากคอนโซล GCP ให้คลิกไอคอน Cloud Shell บนแถบเครื่องมือด้านขวาบนดังนี้
การจัดสรรและเชื่อมต่อกับสภาพแวดล้อมนี้ควรใช้เวลาเพียงครู่เดียว เมื่อเสร็จแล้ว คุณจะเห็นข้อมูลต่อไปนี้
เครื่องเสมือนนี้เต็มไปด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่ใช้งานได้ต่อเนื่องและทำงานบน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานทั้งหมดใน Lab นี้สามารถทำได้โดยใช้เบราว์เซอร์
ก่อนเริ่มต้น
ตรวจสอบว่าตั้งค่ารหัสโปรเจ็กต์ใน Cloud Shell แล้ว
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. สร้างที่เก็บข้อมูล Cloud Storage
ใน Cloud Console ให้ไปที่เมนูการนำทาง > Cloud Storage > เบราว์เซอร์ คลิกสร้างที่เก็บข้อมูล
กฎการตั้งชื่อที่เก็บข้อมูล
- อย่าใส่ข้อมูลที่ละเอียดอ่อนลงในชื่อที่เก็บข้อมูล เนื่องจากเนมสเปซของที่เก็บข้อมูลจะปรากฏต่อสาธารณะ
- ชื่อที่เก็บข้อมูลต้องมีเฉพาะตัวอักษรพิมพ์เล็ก ตัวเลข เครื่องหมายขีดกลาง (-) ขีดล่าง (_) และจุด (.) เท่านั้น ชื่อที่มีจุดต้องมีการยืนยัน
- ชื่อที่เก็บข้อมูลต้องขึ้นต้นและลงท้ายด้วยตัวเลขหรือตัวอักษร
- ชื่อที่เก็บข้อมูลต้องมีอักขระ 3 ถึง 63 ตัว ชื่อที่มีจุดสามารถมีอักขระได้สูงสุด 222 ตัว แต่คอมโพเนนต์ที่คั่นด้วยจุดแต่ละรายการต้องมีความยาวไม่เกิน 63 อักขระ
- ชื่อที่เก็บข้อมูลจะแสดงเป็นที่อยู่ IP ในรูปแบบสัญลักษณ์ที่มีจุดทศนิยมไม่ได้ (เช่น 192.168.5.4)
- ชื่อที่เก็บข้อมูลขึ้นต้นด้วย "goog" ไม่ได้ คำนำหน้า
- ชื่อที่เก็บข้อมูลต้องไม่มี "google" หรือปิดคำที่สะกดผิดของ "google"
- นอกจากนี้ เพื่อให้สอดคล้องกับข้อกำหนด DNS และความเข้ากันได้ในอนาคต คุณไม่ควรใช้ขีดล่าง (_) หรือเครื่องหมายจุดที่อยู่ติดกับจุดหรือเครื่องหมายขีดกลางอีกจุดหนึ่ง เช่น ".." หรือ "-." หรือ ".-" ไม่ถูกต้องในชื่อ DNS
คลิกดำเนินการต่อ
ประเภทสถานที่ตั้ง: ภูมิภาค
ตำแหน่ง: เลือกภูมิภาคที่ห่างจากคุณ
คลิกดำเนินการต่อ
คลาสพื้นที่เก็บข้อมูลเริ่มต้น: มาตรฐาน
คลิกดำเนินการต่อ
ยกเลิกการเลือก บังคับใช้การป้องกันการเข้าถึงแบบสาธารณะในที่เก็บข้อมูลนี้ในส่วนป้องกันการเข้าถึงแบบสาธารณะ
เลือกแบบละเอียดในส่วนการควบคุมการเข้าถึง
คลิกดำเนินการต่อ
เมื่อคุณกำหนดค่าที่เก็บข้อมูลแล้ว ให้คลิกสร้าง
เรียบร้อย คุณเพิ่งสร้างที่เก็บข้อมูล Cloud Storage
4. อัปโหลดออบเจ็กต์ไปยังที่เก็บข้อมูล
อัปโหลดออบเจ็กต์ลงในที่เก็บข้อมูลเลย
ก่อนอื่นให้ดาวน์โหลดอิมเมจนี้ไปยังอินสแตนซ์ชั่วคราวใน Cloud Shell ในตัวอย่างด้านล่างใช้รูปภาพ Google จากหน้าแรกของ Google
จาก Cloud Shell
wget --output-document google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
ใช้คำสั่ง gsutil cp เพื่ออัปโหลดรูปภาพจากตำแหน่งที่คุณบันทึกลงในที่เก็บข้อมูลที่คุณสร้างไว้
จาก Cloud Shell
gsutil cp google.png gs://YOUR-BUCKET-NAME
จากนั้นนํารูปภาพที่ดาวน์โหลดออกโดยทำดังนี้
จาก Cloud Shell
rm google.png
ค้นหาออบเจ็กต์แล้วคลิกจุด 3 จุดทางด้านขวาและแก้ไขสิทธิ์ให้เป็นแบบสาธารณะ
5. สร้างตัวจัดสรรภาระงาน
ต่อไปเราจะสร้างตัวจัดสรรภาระงาน HTTP
ไปที่เครือข่าย >> บริการเครือข่าย >> การจัดสรรภาระงาน >> สร้างตัวจัดสรรภาระงาน >> ตัวจัดสรรภาระงาน HTTP >> อินเทอร์เน็ตไปยัง VM ของฉัน >> ตัวจัดสรรภาระงาน HTTP(S) แบบคลาสสิก
ก่อนอื่นให้สร้างชื่อสำหรับตัวจัดสรรภาระงานที่คุณจะสร้าง
สร้างที่เก็บข้อมูลแบ็กเอนด์
สร้างที่เก็บข้อมูลแบ็กเอนด์ใหม่ซึ่งเป็นที่เก็บข้อมูลที่คุณเพิ่งสร้าง แล้วเลือก "เปิดใช้ CDN" และ "แคชเนื้อหาแบบคงที่" คลิก "สร้าง"
สร้างกฎของโฮสต์และเส้นทาง
ไปที่กฎของโฮสต์และเส้นทางทางด้านซ้ายมือ เราจะใช้กฎของโฮสต์/เส้นทางแบบง่ายและส่งคำขอไปยังที่เก็บข้อมูล
สร้างการกำหนดค่าฟรอนท์เอนด์
เลือกการกำหนดค่าฟรอนท์เอนด์ สำหรับการกำหนดค่าฟรอนท์เอนด์ เราจะใช้ HTTP (แต่ HTTPS จะใช้ได้ในกรณีที่คุณมีใบรับรองเช่นกัน) และที่อยู่ IP ชั่วคราว และตรวจสอบว่าคุณได้เลือกเครือข่ายระดับพรีเมียมแล้ว
คลิกสร้าง
รับ IP ของตัวจัดสรรภาระงาน
รับ IP ของตัวจัดสรรภาระงานจากคอนโซลโดยคลิกชื่อตัวจัดสรรภาระงานในรายการตัวจัดสรรภาระงานสำหรับโปรเจ็กต์ของคุณ
ค้นหาตัวจัดสรรภาระงาน
หลังจากผ่านไป 2-3 นาที ให้ลองค้นหาตัวจัดสรรภาระงานสำหรับออบเจ็กต์ที่คุณอัปโหลดจากตัวจัดสรรภาระงาน คุณจะต้องใช้ที่อยู่ IP ของตัวจัดสรรภาระงานและชื่ออิมเมจ คำสั่งมีโครงสร้างดังนี้
จากเทอร์มินัล
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
เอาต์พุต
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < X-GUploader-UploadID: ADPycdtoILI76KVsvBvdVGvSfzaxys1m3zYqCepBrmJxAI48ni24cWCRIdNu-53PX3DS6iycxp6xwFbMpwtcHHZQUQmEBxAgng < Expires: Mon, 13 Dec 2021 22:58:26 GMT < Date: Mon, 13 Dec 2021 21:58:26 GMT < Cache-Control: public, max-age=3600 < Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT < ETag: "8f9327db2597fa57d2f42b4a6c5a9855" < x-goog-generation: 1639431957957903 < x-goog-metageneration: 2 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 5969 < Content-Type: image/png < x-goog-hash: crc32c=TeiHTA== < x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ== < x-goog-storage-class: STANDARD < Accept-Ranges: bytes < Content-Length: 5969 < Server: UploadServer
ตรวจสอบว่าเนื้อหากำลังแสดงจาก CDN ผ่าน CDN หรือการตรวจสอบการจัดสรรภาระงาน คุณควรจะได้อัตราส่วนของ Hit ได้เกือบ 100% หากต้องการเรียกใช้การค้นหา 2-3 รายการ ให้ทําตามขั้นตอนต่อไปนี้
จากเทอร์มินัล
#for i in `seq 1 50`; do curl http://%loadbalncer-IP%/google.png; done
ยืนยันเนื้อหาที่แสดงโดย Cloud CDN
ตรวจสอบว่าคุณกำลังให้บริการการเข้าชมจาก CDN โดยไปที่บริการเครือข่าย >> CDN
6. ลบออบเจ็กต์ออกจาก GCS
เมื่อมีการป้อนข้อมูลแคชแล้ว ลองลบออบเจ็กต์ออกจากที่เก็บข้อมูล ซึ่งเป็นการเน้นย้ำว่าเราใช้นโยบายกับแคช ไม่ใช่แบ็กเอนด์
ไปที่ Cloud Storage >> %ชื่อที่เก็บข้อมูล% >> ออบเจ็กต์
เลือกรูปภาพแล้วลบ
7. สร้างนโยบายความปลอดภัยของ Edge สำหรับแคช CDN
ไปที่ Network Security >> Cloud Armor และคลิกสร้างนโยบาย
เลือกรายการต่อไปนี้
ประเภทนโยบาย: นโยบายความปลอดภัยของ Edge
การดำเนินการเริ่มต้น: ปฏิเสธ
ใช้นโยบายกับที่เก็บข้อมูลแบ็กเอนด์
8. ตรวจสอบนโยบายความปลอดภัยของ Edge
ตอนนี้เราได้สร้างนโยบายความปลอดภัยของ Edge ไว้หน้าที่เก็บข้อมูลแบ็กเอนด์ของเราแล้ว โปรดตรวจสอบด้วยว่านโยบายทำงานตามที่คาดไว้
อ่านนโยบายความปลอดภัย
หลังจากผ่านไป 2-3 นาที คุณจะตรวจสอบได้ว่านโยบาย Cloud Armor กำลังทำงานอยู่หรือไม่ จากบรรทัดคำสั่ง การเรียกใช้คำสั่งต่อไปนี้จะแสดงค่า 403
จากเทอร์มินัล
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
เอาต์พุต
curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 403 Forbidden < X-GUploader-UploadID: ADPycdtS6FtJOGIsiWYDrAAE8VFeQuNutcvbGoQe2t8EZxsuspVtmCjyiTv_P3CNktroHMOGFXkTCfG-Jj-rUO60ZGPpEbpqcw < Content-Type: application/xml; charset=UTF-8 < Content-Length: 111 < Date: Mon, 13 Dec 2021 23:09:35 GMT < Expires: Mon, 13 Dec 2021 23:09:35 GMT < Cache-Control: private, max-age=0 < Server: UploadServer <
ตรวจสอบบันทึก
ถัดไป คุณจะตรวจสอบบันทึกเพื่อดูนโยบายความปลอดภัยของ Edge ที่บังคับใช้ได้ ไปที่การดำเนินการ >> การบันทึก >> เครื่องมือสำรวจบันทึก
ป้อนข้อมูลโค้ดด้านล่างลงในการค้นหาแล้วคลิกเรียกใช้
resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)
จดบันทึกการตอบกลับ 403 และนโยบายความปลอดภัยที่บังคับใช้
นำนโยบายความปลอดภัยออก
นำนโยบายความปลอดภัยและค้นหาออบเจ็กต์ออกจากแคช
ไปที่ Network Security >> ชุดเกราะระบบคลาวด์ >> %ชื่อนโยบาย% >> เป้าหมาย และนำที่เก็บข้อมูลเป้าหมายออก
ยืนยันการนำนโยบายออก
หลังจากผ่านไป 2-3 นาที ให้ส่ง Curl อีกครั้งไปยังทรัพยากรในที่เก็บข้อมูลของพื้นที่เก็บข้อมูล คราวนี้คุณจะได้รับการตอบกลับเป็น 200
จากเทอร์มินัล
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
เอาต์พุต
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < X-GUploader-UploadID: ADPycdtI7f49P3MSuZSZ8vl6RwfwmnIDJ59EeSKp7UPvLPawdaiRHXiNWLtseQTxUxceWOvSLvpYmT3pWVkV4qeIP7M < Date: Mon, 13 Dec 2021 23:06:46 GMT < Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT < ETag: "8f9327db2597fa57d2f42b4a6c5a9855" < x-goog-generation: 1639431957957903 < x-goog-metageneration: 2 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 5969 < Content-Type: image/png < x-goog-hash: crc32c=TeiHTA== < x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ== < x-goog-storage-class: STANDARD < Accept-Ranges: bytes < Content-Length: 5969 < Server: UploadServer < Age: 1621 < Cache-Control: public,max-age=3600 < { [775 bytes data] * Connection #0 to host 34.98.81.123 left intact * Closing connection 0
ยินดีด้วย คุณดำเนินการ Lab นี้เสร็จสิ้นเกี่ยวกับนโยบายความปลอดภัยของ Cloud Armor Edge แล้ว
©2020 Google LLC สงวนลิขสิทธิ์ Google และโลโก้ของ Google เป็นเครื่องหมายการค้าของ Google LLC ชื่อบริษัทและผลิตภัณฑ์อื่นๆ ทั้งหมดอาจเป็นเครื่องหมายการค้าของบริษัทที่เป็นเจ้าของ
9. ทำความสะอาดห้องปฏิบัติการ
ไปที่ Network Security >> ชุดเกราะระบบคลาวด์ >> %POLICY NAME% แล้วเลือกลบ
ไปที่ Cloud Storage เลือกที่เก็บข้อมูลที่คุณสร้างไว้แล้วคลิกลบ
ไปที่เครือข่าย >> บริการเครือข่าย >> การจัดสรรภาระงาน เลือกตัวจัดสรรภาระงานที่คุณสร้างและคลิกลบ
10. ยินดีด้วย
คุณดำเนินการ Defending Edge Cache ด้วย Codelab ของ Cloud Armor สำเร็จแล้ว!
หัวข้อที่ครอบคลุม
- วิธีตั้งค่าที่เก็บข้อมูล Cloud Storage และตัวจัดสรรภาระงานระบบคลาวด์ที่เกี่ยวข้อง
- วิธีสร้างนโยบายความปลอดภัยของ Cloud Armor Edge
- วิธีตรวจสอบว่านโยบายความปลอดภัยของ Edge ทำงานตามที่ตั้งใจไว้
ขั้นตอนถัดไป
- ลองตั้งค่านโยบายความปลอดภัยของ Edge โดยใช้ Cache Hit จากทรัพยากร Compute Engine