1. บทนำ
การควบคุมบริการ VPC (VPC-SC) คือการควบคุมความปลอดภัยระดับองค์กรใน Google Cloud ที่ช่วยให้ลูกค้าองค์กรลดความเสี่ยงในการลักลอบนำข้อมูลออกได้ การควบคุมบริการ VPC ให้การเข้าถึงบริการแบบหลายผู้เช่าในรูปแบบ Zero Trust โดยช่วยให้ไคลเอ็นต์จำกัดการเข้าถึง IP ที่ได้รับอนุญาต บริบทของไคลเอ็นต์ และพารามิเตอร์ของอุปกรณ์ขณะเชื่อมต่อกับบริการแบบหลายผู้เช่าจากอินเทอร์เน็ตและบริการอื่นๆ เพื่อลดการสูญเสียทั้งที่ตั้งใจและไม่ตั้งใจ คุณสามารถใช้การควบคุมบริการ VPC เพื่อสร้างขอบเขตที่ปกป้องทรัพยากรและข้อมูลของบริการที่คุณระบุอย่างชัดเจน
เป้าหมายของบทแนะนำนี้มีดังนี้
- ทำความเข้าใจพื้นฐานของการควบคุมบริการ VPC
- สร้างขอบเขตบริการ VPC
- ปกป้องโปรเจ็กต์ด้วยการควบคุมบริการ VPC
- แก้ปัญหาการละเมิดขาเข้าของการควบคุมบริการ VPC
2. การตั้งค่าและข้อกำหนด
สำหรับบทแนะนำนี้ เราต้องมีข้อกำหนดเบื้องต้นต่อไปนี้
- องค์กร GCP
- โฟลเดอร์ภายใต้องค์กร
- โปรเจ็กต์ GCP 2 รายการภายในองค์กรเดียวกันซึ่งวางไว้ใต้โฟลเดอร์
- สิทธิ์ที่จำเป็นที่ระดับองค์กร
- บัญชีสำหรับการเรียกเก็บเงินสำหรับทั้ง 2 โปรเจ็กต์

การตั้งค่าทรัพยากร
- ในคอนโซล Google Cloud ให้สร้างโฟลเดอร์ภายใต้องค์กรและโปรเจ็กต์ใหม่ 2 รายการ (คุณสามารถนำโปรเจ็กต์ที่มีอยู่มาใช้ซ้ำได้)
(หากยังไม่มีบัญชี Google Workspace/Cloud Identity คุณต้องสร้างบัญชีเนื่องจากคุณจะต้องมีองค์กรสำหรับบทแนะนำนี้)
- ตรวจสอบว่าคุณมีสิทธิ์ที่ถูกต้องสำหรับบทแนะนำนี้ที่ระดับองค์กร
- บทบาท IAM สำหรับโฟลเดอร์
- สิทธิ์และบทบาทสำหรับโปรเจ็กต์
- สิทธิ์และบทบาทที่จำเป็นในการกำหนดค่าการควบคุมบริการ VPC
- สิทธิ์และบทบาทที่จำเป็นในการจัดการ Compute Engine
- ตรวจสอบว่าทั้ง 2 โปรเจ็กต์พร้อมใช้งานภายใต้โฟลเดอร์ เนื่องจากเราต้องสร้างนโยบายที่มีขอบเขตที่ระดับโฟลเดอร์ ดูข้อมูลเกี่ยวกับการย้ายโปรเจ็กต์ไปยังโฟลเดอร์

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

- คลิก "จัดการนโยบาย" เพื่อสร้างนโยบายการเข้าถึงใหม่ที่มีขอบเขตเป็นโฟลเดอร์ "Codelab"

- สร้างขอบเขตใหม่ในโหมดบังคับใช้ เราจะตั้งชื่อว่า "SuperProtection" สำหรับบทแนะนำนี้
- เมื่อสร้างขอบเขต ให้เลือกโปรเจ็กต์ที่จะบังคับใช้เป็น ProjectZ
- เลือกประเภทขอบเขตเป็น "ปกติ"
- ในกล่องโต้ตอบระบุบริการที่จะจำกัด ให้เลือกบริการที่จะจำกัดเป็น "Compute Engine"
การตั้งค่าขอบเขตควรมีลักษณะดังนี้

4. ตรวจสอบว่ามีการบังคับใช้ขอบเขต
- เข้าถึง ProjectX และตรวจสอบว่าคุณเข้าถึง Compute Engine API ได้หรือไม่โดยไปที่หน้าแรกของอินสแตนซ์ VM คุณควรจะดำเนินการได้เนื่องจากโปรเจ็กต์ X ไม่ได้รับการปกป้องโดยขอบเขต VPC SC ที่สร้างขึ้น
- เข้าถึง ProjectZ และตรวจสอบว่าคุณเข้าถึง Compute Engine ได้หรือไม่ คุณจะเห็นว่าการควบคุมบริการ VPC ไม่อนุญาตคำขอเนื่องจากขอบเขตบริการ SuperProtection ปกป้อง ProjectZ และ Compute Engine API

5. การแก้ปัญหาการปฏิเสธ
ก่อนอื่นเราต้องระบุให้ได้ว่าปัญหาที่เกิดขึ้นคืออะไร เพื่อพิจารณาวิธีแก้ปัญหา
- บันทึกการควบคุมบริการ VPC มีรายละเอียดเกี่ยวกับคำขอไปยังทรัพยากรที่ได้รับการปกป้องและเหตุผลที่การควบคุมบริการ VPC ปฏิเสธคำขอ มาค้นหารหัสที่ไม่ซ้ำกันของการควบคุมบริการ VPC ในบันทึกการตรวจสอบของ ProjectZ โดยใช้การค้นหาต่อไปนี้ใน Logs Explorer
resource.type="audited_resource" protoPayload.metadata."@type"="type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"
ซึ่งจะแสดงบันทึกการตรวจสอบการควบคุมบริการ VPC ทั้งหมด เราจะมองหาบันทึกข้อผิดพลาดล่าสุด
- คลิกในส่วนหัวการควบคุมบริการ VPC แล้วเลือก "แก้ปัญหาการปฏิเสธ" ซึ่งจะเปิดเครื่องมือแก้ปัญหาการควบคุมบริการ VPC
API นี้จะแสดงเหตุผลของการละเมิดใน UI ที่ใช้งานง่าย และจะแสดงว่าเป็นการละเมิดขาเข้าหรือขาออกหรือไม่ รวมถึงข้อมูลอื่นๆ ที่มีประโยชน์
สำหรับแบบฝึกหัดนี้ เราจะมองหาข้อมูลต่อไปนี้
"principalEmail": "user@domain"
"callerIp": "PUBLIC_IP_ADDRESS"
"serviceName": "compute.googleapis.com"
"servicePerimeterName":
"accessPolicies/[POLICY_NUMBER]/servicePerimeters/SuperProtection
"ingressViolations": [
{
"targetResource": "projects/[PROJECT_NUMBER]",
"servicePerimeter": "accessPolicies/[POLICY_NUMBER]/servicePerimeters/SuperProtection"
}
],
"violationReason": "NO_MATCHING_ACCESS_LEVEL",
"resourceNames": "[PROJECT_ID]"
เรามี 2 ตัวเลือกในการแก้ไขการปฏิเสธนี้ใน ProjectZ
- การสร้างระดับการเข้าถึงเพื่ออนุญาตการเข้าถึงโปรเจ็กต์ภายในขอบเขตโดยการให้สิทธิ์เข้าถึง IP ของระบบ
- สร้างกฎขาเข้าเพื่ออนุญาตให้ไคลเอ็นต์ API จากภายนอกขอบเขตบริการเข้าถึงทรัพยากรภายในขอบเขตบริการ
ในบทแนะนำนี้ เราจะแก้ปัญหาโดยการสร้างระดับการเข้าถึง
- ไปที่เครื่องมือจัดการสิทธิ์เข้าถึงตามบริบทที่ขอบเขตโฟลเดอร์ (Codelab) แล้วสร้างระดับการเข้าถึงใหม่
- ใช้ "โหมดพื้นฐาน" แล้วเราจะอนุญาตให้เข้าถึงเมื่อตรงตามเครือข่ายย่อยของ IP และสถานที่ตั้งทางภูมิศาสตร์

- ไปที่การควบคุมบริการ VPC ที่ขอบเขตขององค์กร เลือกนโยบายการเข้าถึงสำหรับ Codelab นี้ แล้วแก้ไขขอบเขตที่เราสร้างไว้ก่อนหน้านี้
- เพิ่มระดับการเข้าถึงที่สร้างขึ้นในขอบเขตโฟลเดอร์ แล้วบันทึก

6. ผลการทดสอบ
ยืนยันว่าเรามีสิทธิ์เข้าถึง Compute Engine และสร้างอินสแตนซ์ VM ได้ ตอนนี้เราได้สร้างระดับการเข้าถึงแล้ว ลองเข้าถึง Compute Engine ใน ProjectZ และสร้างอินสแตนซ์ VM กัน
- ไปที่ Compute Engine แล้วคลิกสร้างอินสแตนซ์

- ปล่อยให้ทุกอย่างเป็นค่าเริ่มต้นและลองสร้างอินสแตนซ์ VM ราคาถูก
หลังจากผ่านไปประมาณ 1 นาที คุณควรเห็นอินสแตนซ์ VM ที่สร้างขึ้น และยืนยันได้ว่าคุณมีสิทธิ์เข้าถึง Compute Engine ที่ได้รับการปกป้องภายในขอบเขตอย่างเต็มรูปแบบ

7. ล้างข้อมูล
แม้ว่าจะไม่มีการเรียกเก็บเงินแยกต่างหากสำหรับการใช้การควบคุมบริการ VPC เมื่อไม่ได้ใช้บริการ แต่แนวทางปฏิบัติแนะนำคือการล้างข้อมูลการตั้งค่าที่ใช้ในห้องทดลองนี้ นอกจากนี้ คุณยังลบอินสแตนซ์ VM และ/หรือโปรเจ็กต์ Cloud เพื่อหลีกเลี่ยงค่าใช้จ่ายได้ด้วย การลบโปรเจ็กต์ Cloud จะหยุดการเรียกเก็บเงินสำหรับทรัพยากรทั้งหมดที่ใช้ภายในโปรเจ็กต์นั้น
- หากต้องการลบอินสแตนซ์ VM ให้เลือกช่องทำเครื่องหมายทางด้านซ้ายของชื่ออินสแตนซ์ VM แล้วคลิกลบ

- หากต้องการลบขอบเขต ให้ทำตามขั้นตอนต่อไปนี้
- ในคอนโซล Google Cloud ให้คลิกความปลอดภัย แล้วคลิกการควบคุมบริการ VPC ที่ขอบเขตขององค์กร
- ในหน้าการควบคุมบริการ VPC ในแถวของตารางที่ตรงกับขอบเขตที่คุณต้องการลบ ให้คลิก "ไอคอนลบ"
- หากต้องการลบระดับการเข้าถึง ให้ทำตามขั้นตอนต่อไปนี้
- ในคอนโซล Google Cloud ให้เปิดหน้าเครื่องมือจัดการสิทธิ์เข้าถึงตามบริบทที่ขอบเขตโฟลเดอร์
- ในตาราง ในแถวของระดับการเข้าถึงที่ต้องการลบ ให้คลิก "ไอคอนลบ" แล้วคลิกลบ
- หากต้องการปิดโปรเจ็กต์ ให้ทำตามขั้นตอนต่อไปนี้
- ใน Google Cloud Console ให้ไปที่หน้าการตั้งค่า IAM และผู้ดูแลระบบของโปรเจ็กต์ที่ต้องการลบ
- ในหน้าการตั้งค่า IAM และผู้ดูแลระบบ ให้คลิกปิด
- ป้อนรหัสโปรเจ็กต์ แล้วคลิกปิดเครื่องต่อไป
8. ยินดีด้วย
ใน Codelab นี้ คุณได้สร้างขอบเขตการควบคุมบริการ VPC บังคับใช้ และแก้ปัญหา
ดูข้อมูลเพิ่มเติม
- ดูเอกสารประกอบการควบคุมบริการ VPC
- โปรดดูเอกสารประกอบเกี่ยวกับเครื่องมือจัดการสิทธิ์เข้าถึงตามบริบท
- ดูเอกสารประกอบเครื่องมือแก้ปัญหา VPC-SC
ใบอนุญาต
ผลงานนี้ได้รับอนุญาตภายใต้สัญญาอนุญาตครีเอทีฟคอมมอนส์สำหรับยอมรับสิทธิของผู้สร้าง (Creative Commons Attribution License) 2.0 แบบทั่วไป