การรักษาความปลอดภัยไปป์ไลน์ CI/CD
เสริมความแข็งแกร่งให้เส้นทางการสร้างและเผยแพร่
การรักษาความปลอดภัยไปป์ไลน์ CI/CD เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
กระบวนการทำงานในฐานะเป้าหมาย
กระบวนการ CI/CD มีสิทธิ์เข้าถึงซอร์สโค้ด ข้อมูลลับ และระบบจริงในระดับสูง หากผู้โจมตีเจาะระบบนี้ได้ ก็สามารถแทรกช่องทางลับลงในการสร้างครั้งต่อ ๆ ไปทุกครั้งโดยหลบเลี่ยงการตรวจสอบโค้ดได้ กระบวนการนี้จึงเป็นหนึ่งในเป้าหมายที่มีมูลค่าสูงที่สุดในงานวิศวกรรมสมัยใหม่
ให้ถือว่ากระบวนการทำงานเป็นโครงสร้างพื้นฐานของระบบจริง ซึ่งสมควรได้รับการเสริมความปลอดภัย การเฝ้าติดตาม และการจำกัดสิทธิ์ให้น้อยที่สุดในระดับเดียวกับระบบที่ใช้งานจริง
ข้อมูลนำเข้าที่ไม่น่าเชื่อถือในการสร้าง
กระบวนการทำงานจะทำงานโดยอัตโนมัติเมื่อเกิดเหตุการณ์ที่คุณควบคุมไม่ได้ทั้งหมด เช่น คำขอเปลี่ยนแปลง แท็ก และการส่งผลงานจากภายนอก คำขอเปลี่ยนแปลงที่เป็นอันตรายอาจพยายามแก้ไขตัวกระบวนการสร้างเอง
- คำจำกัดความกระบวนการทำงานที่เป็นพิษในสำเนาแยกอาจพยายามลักลอบนำข้อมูลลับออกไป
- โค้ดที่ไม่น่าเชื่อถืออาจทำงานด้วยสิทธิ์เดียวกับการสร้างที่เชื่อถือได้
แยกกระบวนการทำงานที่เชื่อถือได้และไม่น่าเชื่อถือออกจากกัน: อย่าเปิดเผยข้อมูลลับให้กับงานที่ถูกเรียกใช้โดยคำขอเปลี่ยนแปลงจากภายนอก
ตรึงแอ็กชันและอิมเมจของคุณ
ขั้นตอนในกระบวนการทำงานมักดึงแอ็กชันของบุคคลที่สามหรืออิมเมจคอนเทนเนอร์ด้วยแท็กที่เปลี่ยนแปลงได้ หากแท็กนั้นถูกชี้ไปยังเนื้อหาที่เป็นอันตราย การสร้างของคุณจะถูกเจาะระบบ ให้ตรึงไว้ด้วยไดเจสต์ที่เปลี่ยนแปลงไม่ได้
# BAD: mutable tag can be moved under you
uses: some/action@v3
# GOOD: pinned to an immutable commit SHA
uses: some/action@a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
# pin container steps by digest too
image: build-tools@sha256:9f86d081884c7d659a2feaa0c55ad015...สิทธิ์น้อยที่สุดสำหรับโทเค็น
โทเค็นเริ่มต้นของกระบวนการทำงานมักมีสิทธิ์มากเกินไป โดยให้สิทธิ์เขียนแก่ทั้งที่เก็บหรือรีจิสทรี จำกัดขอบเขตให้เหลือเพียงสิ่งที่แต่ละงานต้องใช้เท่านั้น
# scope the default token to read-only, grant more only where needed
permissions:
contents: read
jobs:
publish:
permissions:
contents: read
packages: write # only this job can publishการจัดการข้อมูลลับอย่างปลอดภัย
ข้อมูลลับที่ฝังตายตัวหรือใช้ร่วมกันอย่างกว้างขวางเป็นช่องทางหลักที่ทำให้ข้อมูลรั่วไหล ควรจัดการอย่างเข้มงวด:
- จัดเก็บข้อมูลลับไว้ในตัวจัดการข้อมูลลับหรือที่จัดเก็บข้อมูลลับของ CI ห้ามเก็บไว้ในโค้ด
- ควรใช้การเชื่อมโยง OIDC แบบอายุสั้นแทนกุญแจระบบคลาวด์แบบคงที่
- ปิดบังข้อมูลลับในบันทึกและป้องกันการพิมพ์ข้อมูลดังกล่าวซ้ำ
- จำกัดขอบเขตของข้อมูลลับแต่ละรายการให้เหลือเฉพาะงานและสภาพแวดล้อมขั้นต่ำที่จำเป็น
การเชื่อมโยง OIDC ช่วยให้กระบวนการทำงานแลกเปลี่ยนตัวตนขณะสร้างกับข้อมูลรับรองระบบคลาวด์อายุสั้น จึงนำกุญแจที่มีอายุการใช้งานยาวนานออกไปได้ทั้งหมด
ตัวประมวลผลชั่วคราวแบบแยกเดี่ยว
ตัวประมวลผลการสร้างที่นำกลับมาใช้ใหม่อาจนำมัลแวร์หรือข้อมูลลับที่รั่วไหลจากงานหนึ่งไปยังงานถัดไปได้ ตัวประมวลผลชั่วคราวจะถูกสร้างขึ้นใหม่สำหรับแต่ละงานและทำลายทิ้งภายหลัง จึงไม่มีสิ่งใดตกค้าง
- สภาพแวดล้อมสะอาดหนึ่งชุดต่อการสร้างหนึ่งครั้ง แล้วทิ้งไป
- ไม่มีสถานะร่วมกันระหว่างงานที่เชื่อถือได้และไม่น่าเชื่อถือ
- จำกัดการส่งข้อมูลออกเครือข่ายให้เหลือเฉพาะปลายทางที่จำเป็น
สิ่งนี้สนับสนุนเป้าหมายการแยกออกจากกันของ SLSA L3 โดยตรง
ปกป้องสาขาต้นทาง
ความไว้วางใจในกระบวนการทำงานเริ่มต้นที่ระบบควบคุมซอร์สโค้ด หากใครก็ตามสามารถส่งการเปลี่ยนแปลงไปยังสาขารุ่นเผยแพร่ได้ การลงลายมือชื่อและการสแกนในขั้นตอนถัดไปก็ไม่มีความหมาย
- กำหนดให้มีการตรวจสอบ PRก่อนผสานรวม
- บังคับใช้คอมมิตที่ลงลายมือชื่อบนสาขาที่ได้รับการปกป้อง
- กำหนดให้การตรวจสอบสถานะ (การทดสอบ การสแกน) ผ่าน
- ห้ามการส่งแบบบังคับและการส่งโดยตรงไปยัง
main
# require signed commits on a branch
git config commit.gpgsign true
# verify a commit signature locally
git verify-commit HEADสแกนภายในกระบวนการทำงาน
ฝังด่านความปลอดภัยไว้ใน CI โดยตรง เพื่อให้ปัญหาทำให้การสร้างล้มเหลวแทนที่จะไปถึงระบบจริง
# secret leak detection
gitleaks detect --source . --redact
# dependency vulnerabilities
osv-scanner --lockfile=package-lock.json
# IaC and config misconfig
trivy config .
# fail the job on critical findings (non-zero exit stops CI)การควบคุมการเผยแพร่โดยสองบุคคล
การดำเนินการที่มีผลกระทบสูงควรมีด่านตรวจสอบโดยมนุษย์ การนำไปใช้งานในระบบจริงและการเปลี่ยนแปลงข้อมูลรับรองควรต้องได้รับอนุมัติจากบุคคลอื่นที่ไม่ใช่ผู้เขียน
- กฎการปกป้องสภาพแวดล้อมกำหนดให้มีผู้ตรวจสอบก่อนนำไปใช้งาน
- แยกตัวตนสำหรับการสร้างออกจากตัวตนสำหรับการนำไปใช้งาน
- ไม่มีผู้ดำเนินการเพียงคนเดียวที่สามารถทั้งเขียนโค้ดและส่งโค้ดขึ้นระบบจริงโดยไม่มีการตรวจสอบ
สิ่งนี้จำกัดทั้งความเสี่ยงจากบุคคลภายในและขอบเขตความเสียหายจากบัญชีผู้ใช้หนึ่งบัญชีที่ถูกเจาะระบบ
การตรวจสอบและหลักฐานการแก้ไข
คุณต้องสามารถสร้างภาพย้อนหลังได้ว่ากระบวนการทำงานดำเนินการอะไรไปบ้าง จัดเก็บบันทึกไว้ที่ศูนย์กลางและปกป้องบันทึกเหล่านั้น
- ส่งบันทึก CI ไปยังที่จัดเก็บแบบเพิ่มข้อมูลได้อย่างเดียวซึ่งควบคุมสิทธิ์การเข้าถึง
- บันทึกว่าใครแก้ไขคำจำกัดความของกระบวนการทำงานและแก้ไขเมื่อใด
- สร้างข้อมูลแหล่งที่มาที่ลงลายมือชื่อเพื่อให้อาร์ติแฟกต์ย้อนกลับไปยังการสร้างครั้งใดครั้งหนึ่งได้
- แจ้งเตือนความผิดปกติ: ตัวประมวลผลที่โฮสต์เองรายใหม่ การเข้าถึงข้อมูลลับที่ไม่คาดหมาย การเปลี่ยนแปลงการตั้งค่านอกกระบวนการตรวจสอบ
รายการตรวจสอบการเสริมความปลอดภัยให้กระบวนการทำงาน
กระบวนการทำงานที่ป้องกันได้ดีจะผสานการควบคุมต้นทาง การสร้าง และการเผยแพร่เข้าด้วยกัน:
- การปกป้องสาขา คอมมิตที่ผ่านการตรวจสอบและลงลายมือชื่อ
- แอ็กชันและอิมเมจที่ตรึงด้วยไดเจสต์
- โทเค็น OIDC ที่มีสิทธิ์น้อยที่สุดและมีอายุสั้น
- ตัวประมวลผลชั่วคราวแบบแยกเดี่ยว
- การสแกนข้อมูลลับ ส่วนพึ่งพา และการตั้งค่าภายในกระบวนการทำงาน
- การอนุมัติการเผยแพร่โดยสองบุคคล
- อาร์ติแฟกต์ที่ลงลายมือชื่อ SBOM และข้อมูลแหล่งที่มา พร้อมการบันทึกการตรวจสอบ
ตรวจสอบความเข้าใจอย่างรวดเร็ว: สิทธิ์ของโทเค็น
ตัดสินใจว่ามาตรการควบคุมใดเหมาะสมสำหรับโทเค็นการสร้างที่มีสิทธิ์สูง
สรุป: การรักษาความปลอดภัยกระบวนการ CI/CD
คุณได้เรียนรู้วิธีเสริมความปลอดภัยให้เส้นทางการสร้างและการเผยแพร่ทั้งหมด
- ถือว่ากระบวนการทำงานเป็นระบบจริง เพราะสามารถฝังช่องทางลับในการสร้างครั้งต่อ ๆ ไปทุกครั้ง
- แยกการสร้างจาก PR ที่ไม่น่าเชื่อถือออกจากข้อมูลลับ
- ตรึงแอ็กชันและอิมเมจด้วยไดเจสต์ และใช้โทเค็น OIDC ที่มีสิทธิ์น้อยที่สุดและมีอายุสั้น
- ใช้ตัวประมวลผลชั่วคราวแบบแยกเดี่ยวและปกป้องสาขาต้นทาง
- สแกนภายในกระบวนการทำงาน กำหนดให้มีการอนุมัติการเผยแพร่โดยสองบุคคล และเก็บบันทึกการตรวจสอบที่แสดงหลักฐานการแก้ไข
จบหลักสูตร: ตอนนี้คุณสามารถรักษาความปลอดภัยให้ห่วงโซ่อุปทานซอฟต์แวร์ตั้งแต่ต้นจนจบได้แล้ว
คำถามที่พบบ่อย
บทเรียน “การรักษาความปลอดภัยไปป์ไลน์ CI/CD” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การรักษาความปลอดภัยไปป์ไลน์ CI/CD” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การรักษาความปลอดภัยไปป์ไลน์ CI/CD”
เสริมความแข็งแกร่งให้เส้นทางการสร้างและเผยแพร่ คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การรักษาความปลอดภัยไปป์ไลน์ CI/CD” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ภัยคุกคามต่อห่วงโซ่อุปทาน
- บัญชีรายการวัสดุซอฟต์แวร์ (SBOM)
- การลงลายมือชื่อการพึ่งพาและสิ่งส่งมอบ
- การรักษาความปลอดภัยไปป์ไลน์ CI/CD