การชำระบัญชี Google Cloud: วิธีใช้บัญชี GCP IAM บทบาทและบัญชีบริการ (Service Account) เพื่อให้บรรลุหลักการของการอนุญาตขั้นต่ำ
ในด้านการรักษาความปลอดภัยของคลาวด์คอมพิวติ้งมีบทเรียนที่เต็มไปด้วยเลือดและน้ำตาของการดำเนินงานและการบำรุงรักษาและสถาปนิกจำนวนนับไม่ถ้วนที่ใช้ทรัพย์สินของบริษัทและแม้แต่รางวัลสิ้นปีเพื่อแลกกับพวกเขา:"
ในระบบคลาวด์สิ่งที่น่ากลัวไปกว่าการไม่มีรหัสผ่านคือทุกคนใช้รหัสผ่านของผู้ดูแลระบบ
”
เพื่อนหลายคนที่ยังใหม่กับ Google Cloud (GCP) เพื่อช่วยลดปัญหาหรือเพราะพวกเขาคิดว่ามันยุ่งยากเกินไปที่จะรายงานข้อผิดพลาดเกี่ยวกับสิทธิ์ในการตรวจสอบพวกเขามักจะให้การพัฒนาโดยตรงในทีมหรือแม้แต่สคริปต์บางอย่างที่ทำงานบนเซิร์ฟเวอร์
Owner
(เจ้าของ) หรือ
Editor
(บรรณาธิการ) บทบาทวิธีนี้เหมือนกับการแกะสลักกุญแจหลักหลายสิบดอกของประตูบ้านของคุณและแจกจ่ายให้กับพนักงานทำความสะอาดผู้จัดส่งและผู้สัญจรไปมาเมื่อคอมพิวเตอร์ที่พัฒนาแล้วถูกแฮ็กเกอร์ฟิชชิ่งหรือรหัสถูกส่งไปยังคลังสินค้า GitHub สาธารณะโดยไม่ได้ตั้งใจแฮกเกอร์สามารถเข้ายึดบัญชี Google Cloud ทั้งหมดของคุณได้อย่างสมบูรณ์ภายในไม่กี่วินาทีและใช้เวลาหลายปีทรัพย์สินหลักถูกปล้นแม้แต่การเปิดเครื่องระดับไฮเอนด์หลายร้อยเครื่องในพื้นหลังเพื่อขุดทำให้คุณมีค่าใช้จ่ายในการหักเงินที่สูงเสียดฟ้า
ในโลกแห่งความปลอดภัยของ GCP อาวุธป้องกันหลักที่อยู่ด้านหลังถูกเรียกว่า
IAM(Identity and Access Management, เอกลักษณ์และการควบคุมการเข้าถึง)
。จิตวิญญาณหลักของการรักษาความปลอดภัยเครือข่ายระดับโรงงานขนาดใหญ่คือการนำไปใช้อย่างเฉียบขาด
"หลักการของสิทธิขั้นต่ำ (Principle of Least Privilege)"
-ให้เฉพาะบุคคลหรือเครื่องจักรที่เหมาะสมและให้สิทธิพิเศษขั้นต่ำเพียงพอที่จะทำงานให้เสร็จในเวลาที่เหมาะสม
วันนี้เราปฏิเสธสำนวนการเทศนาอย่างเป็นทางการและไม่จดจำบทบัญญัติที่น่าเบื่อตัดโดยตรงจากการต่อสู้จริงแบบฮาร์ดคอร์นำคุณไปสู่การแยกแยะตรรกะพื้นฐานของ IAM บทบาทและบัญชีบริการและเชื่อมแนวป้องกันความปลอดภัยที่ทันสมัยมาตรฐานสูงสำหรับสินทรัพย์ระบบคลาวด์ของคุณ
ขั้นตอนที่1: การรื้อลึก "แบบจำลองโลก3มิติ" ของ GCP IAM
ในการจับคู่สิทธิ์ใน GCP คุณต้องเข้าใจรูปแบบการทำงานทางกายภาพของ IAM ในใจของคุณอย่างละเอียดระบบควบคุมสิทธิ์ IAM ของ Google ประกอบด้วยองค์ประกอบสามมิติรวมกันและเชื่อมเข้าด้วยกัน:
คุณเป็นใคร? (Members / Principals): ผู้ถือสถานะอาจเป็นกล่องจดหมาย Google ของพนักงานบริษัท (เช่น [email protected]) หรือกลุ่มตรรกะหรือบัญชีบริการที่เราจะเน้นในภายหลัง
คุณทำอะไรได้บ้าง? (Roles): นั่นคือชุดของตัวละครบทบาทคือ "แพ็คเกจของขวัญ" สำหรับสิทธิ์เฉพาะ (Permission) ตัวอย่างเช่นหากคุณต้องการดูรายการเซิร์ฟเวอร์คุณต้องมีสิทธิ์ compute.instances.list หากคุณต้องการรีสตาร์ทเซิร์ฟเวอร์คุณต้องมีสิทธิ์ compute.instances.start Google รวมสิทธิ์ที่กระจัดกระจายเหล่านี้เข้าด้วยกันและกลายเป็น "บทบาทต่างๆ
”.
คุณกำลังทำอะไรอยู่? (Resources / Hierarchy): นั่นคือระดับทรัพยากรนี่คือการออกแบบที่สง่างามของ GCP 。คุณสามารถเชื่อมโยงสิทธิ์กับระดับ "Organization" ทั้งหมดหรือระดับ "Project" ที่เฉพาะเจาะจงหรือแม้แต่ "Bucket GCS" ที่เฉพาะเจาะจง
Core Security Insider: สิทธิ์มีลักษณะการสืบทอดลงหากคุณให้สิทธิ์แก่พนักงานในระดับองค์กรแสดงว่าเขาเป็นเทพเจ้าสูงสุดในโครงการย่อยทั้งหมดเซิร์ฟเวอร์ทั้งหมดและฐานข้อมูลทั้งหมดภายใต้บริษัทนี้ดังนั้นจึงห้ามมิให้มีการละเมิดบทบาทระดับสูงในองค์กรหรือระดับโครงการโดยเด็ดขาด
ขั้นตอนที่สอง: "หลุมยักษ์สามแห่ง" ที่ห้ามใช้โดยโรงงานขนาดใหญ่
ก่อนการกำหนดค่าเรามาช่วย "ล้างพิษ" ทางปัญญาของคุณก่อนแนวทางปฏิบัติสามประการต่อไปนี้ถูกปฏิเสธอย่างแน่นอนในการตรวจสอบความปลอดภัยขององค์กรที่เป็นทางการ:
1.การละเมิดบทบาทพื้นฐาน (Primitive Roles)
บทบาทพื้นฐานหมายถึงเก่า
Owner
(เจ้าของ),
Editor
(บรรณาธิการ),
Viewer
(ดูโดย) ตัวละครดังกล่าวเป็นของโบราณที่ "กว้างขวาง" บรรณาธิการสามารถเพิ่มและลบเกือบทุกอย่างในโปรเจ็กต์ (ตั้งแต่การเปลี่ยนโค้ดไปจนถึงการลบฐานข้อมูล)
วิธีแก้ปัญหามาตรฐาน: ยอมรับบทบาทที่กำหนดไว้ล่วงหน้า (Predefined Roles) อย่างเต็มที่หากคุณต้องการจัดการเครื่องเสมือนคุณจะได้รับการ Admin สำหรับ Compute เท่านั้นหากคุณต้องการดูบันทึกคุณจะได้รับ Logging Viewer เท่านั้นให้คนมืออาชีพทำสิ่งที่เป็นมืออาชีพ
2.ใบรับรองส่วนบุคคลสำหรับการใช้เครื่อง (User Credentials)
สคริปต์อัตโนมัติที่เขียนด้วยลายมือใหม่จำนวนมากจำเป็นต้องสำรองฐานข้อมูลคลาวด์ในเครื่องเป็นประจำเพื่อให้สคริปต์ทำงานเขาใช้บัญชีส่วนตัวของเขาโดยตรงในเครื่อง
Gcloud auth login
。
เกิดภัยพิบัติ: เมื่อพนักงานลาออกและบริษัทยกเลิกกล่องจดหมายของเขาสคริปต์สำรองที่ดำเนินมาเป็นเวลาครึ่งปีในสภาพแวดล้อมการผลิตจะขัดข้องทันทีเนื่องจากการอนุญาตไม่ถูกต้อง
วิธีแก้ปัญหามาตรฐาน: ผู้คนเดินไปตามทางของผู้คนและเครื่องจักรก็เดินบนสะพานของเครื่องจักรโปรแกรมรหัสและระบบของบุคคลที่สามทั้งหมดที่ต้องโต้ตอบกับ GCP จะต้องใช้บัญชีบริการ
ขั้นตอนที่สาม: การฝึกซ้อมการต่อสู้จริง-ใช้บัญชีบริการ (Service Account) เพื่อเปิดห่วงโซ่ความปลอดภัยที่ไม่ใช่คีย์
มาจำลองสถานการณ์การผลิตเชิงพาณิชย์ที่ได้มาตรฐานที่สุด: คุณเขียนโปรแกรมแบ็คเอนด์ Python ที่ปรับใช้ใน GCP
Compute Engine (GCE) เครื่องเสมือน
ใน. App นี้ต้องไปทุกวัน
ที่เก็บข้อมูล Cloud Storage (GCS)
อ่านรูปภาพประจำตัวของผู้ใช้และเขียนบันทึกการทำงานลงใน
Cloud Logging (วัน
บริการบันทึก)
。
หากคุณทำตามวิธีการเดิมคุณต้องไปที่พื้นหลังเพื่อสร้างไฟล์คีย์ JSON (คีย์) ที่มีรหัสผ่านจากนั้นดาวน์โหลดและใส่ลงในแพ็คเกจรหัสของเซิร์ฟเวอร์
แต่กฎระเบียบด้านความปลอดภัยของ Dachang บอกคุณ: ในระบบคลาวด์ไฟล์รหัสผ่านข้อความธรรมดาที่มองเห็นได้ทั้งหมดเป็นระเบิดเวลาที่รั่วไหล
เราใช้บัญชีบริการดั้งเดิมของ GCP เพื่อผูกกับ IAM เพื่อให้ได้ "ศูนย์คีย์ความปลอดภัยสูง" ที่แท้จริงไปยังระบบคลาวด์:
ขั้นตอนที่1: สร้างเอกลักษณ์เครื่องเฉพาะ (Service Account)
เข้าสู่
คอนโซล GCP
, ค้นหาเมนูนำทางที่มุมซ้ายบน
"IAM และการจัดการ (IAM & Admin)"-> "บัญชีบริการ (Service Accounts)"
。
คลิก "สร้างบัญชีบริการ" ที่ด้านบน
ชื่อบัญชีบริการ: ชื่อ gce-web-app-runner มันจะสร้างกล่องจดหมายของเครื่องที่มีรูปร่างเหมือน [email protected] โดยอัตโนมัติ
คลิกสร้างและดำเนินการต่อ
ขั้นตอนที่2: การให้สิทธิ์ขั้นต่ำที่แม่นยำ (การผูก IAM)
ในหน้าการสร้างเดียวกันระบบจะถามคุณว่าคุณต้องการให้บทบาทอะไรกับข้อมูลประจำตัวของเครื่องนี้เราไม่ได้เลือก Editor อย่างเด็ดขาดสำหรับการตัดสิทธิ์ที่แม่นยำ:
คลิกที่เมนูแบบเลื่อนลงของตัวละครเพื่อค้นหาและเลือก "Storage Object Viewer (Storage Object Viewer)" หมายเหตุ: บทบาทนี้อนุญาตให้อ่านไฟล์ในถังเก็บข้อมูลเท่านั้นแม้ว่าแฮ็กเกอร์จะควบคุมเซิร์ฟเวอร์แต่เขาก็ไม่ต้องการฉีดม้าโทรจันเข้าไปในถังเก็บข้อมูลของคุณหรือล้างถังทั้งหมดด้วยคลิกเดียว
คลิก "เพิ่มตัวละครอื่นๆ" ค้นหาและเลือก "Logs Writer (Logs Writer)" หมายเหตุ: อนุญาตให้เขียนบันทึกเท่านั้นไม่ใช่สิทธิ์ในการดูบันทึกระบบอื่นๆ
คลิกเสร็จสิ้น.
ขั้นตอนที่3: รวมวิญญาณ-ติดตั้งข้อมูลประจำตัวไปยังเครื่องเสมือน
ข้อมูลประจำตัวและสิทธิ์ได้รับการจับคู่และตอนนี้เราต้องการให้เครื่องเสมือนที่ใช้รหัส "ใส่ชุดนี้"
มาที่ Compute Engine -> VM หน้าตัวอย่างคลิกที่เว็บเซิร์ฟเวอร์ของคุณคลิกที่แก้ไข
เลื่อนลงและค้นหารายการการกำหนดค่า "บัญชีบริการ"
ในเมนูแบบเลื่อนลงให้ตัดบัญชีบริการ Default เริ่มต้นเดิมออกและเลือก gce-web-app-runner ที่คุณเพิ่งสร้างใหม่
แก้ไข "Access Scopes" ด้านล่างเป็น "อนุญาตให้เข้าถึง Cloud API ทั้งหมด (Allow full access to all Cloud APIs)" เรื่องราวภายในของเทคนิคของสถาปนิก: นี่คือสถานที่ที่ง่ายที่สุดสำหรับมือใหม่นับไม่ถ้วนที่จะสับสนการใช้ GCP ในช่วงต้น
"ช่วงการเข้าถึง (Scopes)" เพื่อควบคุมรถตอนนี้วิธีนี้ล้าสมัยข้อกำหนดรุ่นใหม่คือ: เปิดไฟสีเขียว (Full Access) ที่นี่และส่งมอบประตูความปลอดภัยของอำนาจที่แท้จริงให้กับบทบาท IAM ของขั้นตอนที่สองข้างต้นเพื่อรับช่วงต่อ
คลิกบันทึกเพื่อรีสตาร์ทอินสแตนซ์
ช่วงเวลามหัศจรรย์: "ทักษะวิเศษไร้คีย์" ภายในรหัส
ตอนนี้คุณเชื่อมต่อกับเซิร์ฟเวอร์นี้และดูรหัส Python ของคุณคุณไม่จำเป็นต้องเขียนอะไรในรหัส
AWS_ACCESS_KEY
หรือใส่รหัสไฟล์รหัสผ่าน Google JSON ยากคุณเพียงแค่ต้องเรียก SDK อย่างเป็นทางการของ Google โดยตรง:
งูหลาม
From google. cloud import storage
# ฉีดวิญญาณ: ไม่จำเป็นต้องส่งพารามิเตอร์คีย์ใดๆเลย SDK จะไปที่การ์ดเครือข่ายโฮสต์โดยอัตโนมัติเพื่อสูดดมข้อมูลประจำตัวของบัญชีบริการที่ติดตั้ง
Storage_client = storage. Client()
Bucket = storage_client.bucket("my-user-avatars")
Blob = bucket.blob("user_101.jpg")
# อ่านเนียน
Data = blob. download_as_bytes()
พิมพ์ ("การอ่านข้อมูลสำเร็จโดยไม่มีความลับ! ")
เนื่องจากข้อมูลประจำตัวและสิทธิ์เสร็จสมบูรณ์ในวงปิดตามธรรมชาติที่ด้านล่างของเครือข่าย Google จึงไม่มีรหัสผ่านข้อความธรรมดาในรหัสสภาพแวดล้อมการผลิตของคุณแม้ว่าแฮกเกอร์จะพลิกโกดัง Git ของคุณขึ้นสู่ท้องฟ้าแต่พวกเขาก็ไม่ต้องการขโมยชิ้นส่วนใดๆของอำนาจอธิปไตยบนคลาวด์
ขั้นตอนที่สี่: ประวัติการหลีกเลี่ยงเลือดและน้ำตาของการดำเนินการเชิงพาณิชย์และการบำรุงรักษาและการเสริมกำลังของแนวป้องกัน
หลังจากทำงานกับสถาปัตยกรรมแบบไม่ใช้คีย์นี้ปัจจัยด้านความปลอดภัยของสินทรัพย์บนคลาวด์ของคุณได้เกิน95% ของทีมสไตล์เวิร์กชอปแต่ในฐานะหัวหน้าเจ้าหน้าที่รักษาความปลอดภัย (CISO) คุณต้องออกคำสั่งทางปกครองทันทีเพื่อเชื่อมหลุมที่มองไม่เห็นสองหลุมต่อไปนี้ซึ่งอาจก่อให้เกิดอุบัติเหตุด้านความปลอดภัยครั้งใหญ่:
1.ห้ามสร้าง "คีย์บัญชีบริการ (JSON Key)" ด้วยตนเองโดยเด็ดขาด
ในหน้ารายละเอียดของบัญชีบริการมีหน้าแท็บ "คีย์" ซึ่งช่วยให้คุณคลิก "สร้างคีย์ใหม่" และดาวน์โหลดไฟล์ JSON
ความจริงที่โหดร้าย: เพื่อความสะดวกในการวาดภาพนักพัฒนาจำนวนมากขี้เกียจเกินไปที่จะกำหนดตัวแปรสภาพแวดล้อมเมื่อดีบักโค้ดในเครื่องและสร้างคีย์ JSON โดยตรงเพื่อล็อคในคอมพิวเตอร์เมื่อคอมพิวเตอร์ของเขาสูญหายหรือเขาส่งไฟล์เป็นการส่วนตัวผ่าน WeChat เมื่อเขาจากไปลวดหนามเพื่อความปลอดภัยของบริษัทก็ถูกฉีกออกโดยตรงและคีย์ที่สร้างขึ้นด้วยตนเองนี้มีอายุการใช้งานเริ่มต้นเป็นเวลาหลายปีทำให้ยากต่อการตรวจสอบ
ข้อกำหนดการป้องกันโรงงานขนาดใหญ่: โดยพื้นฐานแล้วห้ามมิให้มีการสร้างคีย์บัญชีบริการผ่านนโยบายองค์กร * หากการพัฒนาบนคอมพิวเตอร์ในท้องถิ่นจริงๆต้องมีการดีบัก
เพื่อแนะนำให้พวกเขาใช้คำสั่ง gcloud auth application-default login เพื่อรับข้อมูลรับรองสั้นๆแบบไดนามิกในเครื่องชั่วคราวผ่านกล่องจดหมายขององค์กรส่วนตัวของพวกเขาหากเป็นการโทรข้ามระบบคลาวด์ (เช่นเครื่อง AWS ต้องการเชื่อมต่อกับ GCP) ให้ใช้ Workload Identity Federation (Working load Identity Federation) ให้ AWS ใช้โทเค็น OIDC และ GCP ของตัวเองเพื่อแยกรหัสผ่านโดยตรงเพื่อให้เกิดการสื่อสารสองทางที่ไม่มีคีย์ทางกายภาพ
2.ยอมรับการลดขนาดของ "IAM Conditions (IAM Conditions)"
เมื่อได้รับอนุญาตแบบดั้งเดิมแล้วจะมีผลตลอด24ชั่วโมงแต่ถ้าบริษัทของคุณประสบปัญหาความล้มเหลวทางออนไลน์ในกรณีฉุกเฉินคุณต้องขอให้ผู้เชี่ยวชาญด้านการเอาท์ซอร์สเข้าไปดูฐานข้อมูลสภาพแวดล้อมการผลิตชั่วคราวในบ่ายวันนี้และถอนสิทธิ์หลังจากวันนี้คุณควรทำอย่างไร?
วิธีปฏิบัติดั้งเดิม: วันนี้ฉันมาพร้อมกับบทบาทและฉันต้องพึ่งพาสมองของฉันในการลบเมื่อฉันเลิกงานในกรณีที่คุณลืมบัญชีผู้เชี่ยวชาญภายนอกจะกลายเป็นอันตรายถาวร
การกำหนดค่าข้อกำหนดขั้นสูง: เมื่อให้บทบาทในหน้า IAM ให้คลิก "Add Condition" คุณสามารถเขียนกฎที่แม่นยำอย่างยิ่ง: "เฉพาะเมื่อเวลาอยู่ระหว่าง2026-05-30 13:00น. ถึง18:00น. และ IP ที่ร้องขอเป็น IP เครือข่ายสาธารณะของสำนักงานของบริษัทสิทธิ์ของผู้ใช้จะมีผล" ทันทีที่นาฬิกาผ่านไป18นาฬิกาสมองเครือข่ายของ Google จะทำให้บัตรผ่านของผู้ใช้ไม่ถูกต้องโดยอัตโนมัติเป่าเป็นประจำโดยไม่ทิ้งร่องรอยของปัญหา
สรุป
เมื่อเล่นกับข้อกำหนดการจัดการสิทธิ์ขั้นต่ำใน Google Cloud สาระสำคัญระดับอุตสาหกรรมหลักคือ16คำ:
ผู้คนเดินอย่างมีมนุษยธรรมติดตั้งเครื่องกำจัดข้อความธรรมดาและระเบิดเวลา
。
การรักษาความปลอดภัยบนคลาวด์ไม่เคยอาศัยกฎและข้อบังคับทางวาจาที่ยุ่งยากต่างๆเพื่อยับยั้งธรรมชาติของมนุษย์แต่อาศัยกลไก IAM แบบกระจายที่ไร้รอยต่อซึ่งจมลงสู่ชั้นล่างสุดของระบบคลาวด์เพื่อสร้างการแยกการลดมิติทางกายภาพมอบอำนาจที่โดดเด่นให้กับ "หลักการอำนาจขั้นต่ำ" ในขณะที่เพลิดเพลินไปกับความรู้สึกที่ดีที่สุดของการพัฒนาที่เกิดจากการสื่อสารแบบไม่ใช้คีย์ทำให้อาณาจักรธุรกิจคลาวด์ทั้งหมดของคุณมีเสถียรภาพบนเครือข่ายสาธารณะ
