แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยใน CI/CD
ทำความเข้าใจช่องโหว่ด้านความปลอดภัยที่พบบ่อยในไปป์ไลน์ และแนวทางปฏิบัติที่ดีที่สุดเพื่อลดความเสี่ยงตลอดวงจรการพัฒนา
แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยใน CI/CD เป็นบทเรียน CI/CD with GitHub Actions & DevOps Pipelines ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CI/CD with GitHub Actions & DevOps Pipelines และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดความปลอดภัยของ CI/CD จึงสำคัญ
ในการพัฒนาซอฟต์แวร์สมัยใหม่ ไปป์ไลน์ CI/CD มีความสำคัญอย่างยิ่ง เพราะช่วยทำให้การสร้าง การทดสอบ และการนำโค้ดของคุณไปใช้งานเป็นไปโดยอัตโนมัติ
แต่เมื่อมีพลังมากก็ย่อมมาพร้อมความรับผิดชอบที่มากขึ้น ความปลอดภัยของไปป์ไลน์เหล่านี้จึงมีความสำคัญอย่างยิ่ง เพื่อปกป้องโค้ด ข้อมูล และโครงสร้างพื้นฐานของคุณจากการโจมตีที่เป็นอันตรายหรือช่องโหว่ที่เกิดขึ้นโดยไม่ตั้งใจ
ระบุช่องโหว่ในไปป์ไลน์
ก่อนจะรักษาความปลอดภัย เราต้องเข้าใจก่อนว่ากำลังป้องกันภัยประเภทใด ไปป์ไลน์ CI/CD อาจมีช่องโหว่ต่อการโจมตีหลายประเภท:
- ข้อมูลรับรองถูกบุกรุก: คีย์ API หรือโทเค็นที่ถูกขโมย
- ส่วนพึ่งพาที่เป็นอันตราย: การใช้ไลบรารีที่มีข้อบกพร่องด้านความปลอดภัยที่ทราบอยู่แล้ว
- การกำหนดค่าที่ไม่ปลอดภัย: การกำหนดค่าการควบคุมการเข้าถึงหรือขั้นตอนการสร้างไม่ถูกต้อง
- การโจมตีห่วงโซ่อุปทาน: การดัดแปลงกระบวนการสร้างโดยตรง
ใช้การเข้าถึงตามหลักสิทธิ์น้อยที่สุด
หลักการให้สิทธิ์เท่าที่จำเป็น (PoLP) หมายถึงการให้ผู้ใช้และกระบวนการอัตโนมัติ เช่น งาน CI/CD มีสิทธิ์เพียงขั้นต่ำที่จำเป็นต่อการทำงานของตน และไม่มากไปกว่านั้น
วิธีนี้จะจำกัดความเสียหายที่อาจเกิดขึ้นหากข้อมูลรับรองหรืองานถูกบุกรุก สำหรับการทำงานของ GitHub ให้กำหนดสิทธิ์เฉพาะสำหรับแต่ละงาน
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read # Only read access to repo code
packages: write # Only write to package registry
id-token: write # Needed for OIDC authentication
steps:
- uses: actions/checkout@v4
- run: echo "Build logic here"ปกป้องโค้ดและส่วนพึ่งพา
โค้ดต้นฉบับคือหัวใจของแอปพลิเคชัน คุณควรตรวจสอบให้มั่นใจว่าโค้ดปลอดภัยตั้งแต่เริ่มต้น
- การตรวจสอบโค้ด: การตรวจสอบโดยเพื่อนร่วมงานช่วยค้นหาข้อบกพร่องด้านความปลอดภัยที่อาจเกิดขึ้น
- การวิเคราะห์แบบสถิต: ใช้เครื่องมือสแกนโค้ดเพื่อค้นหาช่องโหว่ (แม้บทเรียนถัดไปจะกล่าวถึง SAST โดยเฉพาะ)
- การสแกนส่วนพึ่งพา: ตรวจสอบไลบรารีจากบุคคลที่สามเป็นประจำเพื่อค้นหาช่องโหว่ที่ทราบอยู่แล้ว
จัดการส่วนพึ่งพาจากบุคคลที่สาม
โครงการส่วนใหญ่พึ่งพาไลบรารีโอเพนซอร์ส แม้ไลบรารีเหล่านี้จะมีประสิทธิภาพ แต่ก็อาจนำช่องโหว่เข้ามาได้หากไม่ได้จัดการอย่างรอบคอบ
- ใช้ Scanner สำหรับส่วนพึ่งพา: ผสานรวมเครื่องมืออย่าง Dependabot เพื่อให้ตรวจสอบช่องโหว่ที่ทราบอยู่แล้วโดยอัตโนมัติ
- กำหนดส่วนพึ่งพาให้ตายตัว: ระบุเวอร์ชันที่แน่นอนของส่วนพึ่งพาเพื่อหลีกเลี่ยงการเปลี่ยนแปลงที่ไม่คาดคิด
- อัปเดตเป็นประจำ: ทำให้ส่วนพึ่งพาเป็นเวอร์ชันล่าสุดอยู่เสมอ เพื่อรับประโยชน์จากแพตช์ความปลอดภัย
เสริมความปลอดภัยให้สภาพแวดล้อมการสร้าง
สภาพแวดล้อมที่ใช้สร้างและทดสอบโค้ดควรมีความปลอดภัยมากที่สุดเท่าที่จะทำได้ ลองนึกภาพว่าสภาพแวดล้อมนี้เป็นห้องปลอดเชื้อสำหรับซอฟต์แวร์ของคุณ
- ตัวประมวลผลชั่วคราว: ใช้สภาพแวดล้อมใหม่ที่แยกจากกันสำหรับแต่ละงาน โดยตัวประมวลผลที่โฮสต์โดย GitHub จะเป็นแบบชั่วคราวโดยค่าเริ่มต้น
- เครื่องมือเท่าที่จำเป็น: ติดตั้งเฉพาะเครื่องมือที่จำเป็นเพื่อลดพื้นที่การโจมตี
- อิมเมจพื้นฐานที่ปลอดภัย: หากใช้คอนเทนเนอร์ ให้ใช้อิมเมจพื้นฐานที่เชื่อถือได้และเสริมความปลอดภัยแล้ว
อย่าฝังข้อมูลลับในโค้ด
ข้อมูลสำคัญ เช่น คีย์ API ข้อมูลรับรองฐานข้อมูล หรือโทเค็นส่วนตัว ไม่ควรถูกฝังไว้โดยตรงในที่เก็บโค้ดหรือไฟล์เวิร์กโฟลว์ของคุณโดยเด็ดขาด NEVER
ใช้ระบบจัดการข้อมูลลับที่ปลอดภัยเสมอ วิธีนี้จะเก็บข้อมูลสำคัญออกจากระบบควบคุมเวอร์ชันและเข้ารหัสข้อมูลเหล่านั้น
ตรวจสอบอินพุตของเวิร์กโฟลว์
หากเวิร์กโฟลว์ของคุณรับอินพุตจากภายนอก เช่น จากการเรียกใช้ด้วยตนเองหรือความคิดเห็นในคำขอดึงข้อมูล อินพุตเหล่านี้ต้องได้รับการตรวจสอบและทำให้ปลอดภัย
อินพุตที่ไม่น่าเชื่อถืออาจเป็นช่องทางให้เกิดการโจมตีแบบแทรกคำสั่งได้ เช่นเดียวกับที่แอปพลิเคชันเว็บตรวจสอบอินพุตของผู้ใช้
on:
workflow_dispatch:
inputs:
deploy_env:
description: 'Environment to deploy to (e.g., staging, production)'
required: true
type: choice
options:
- 'staging'
- 'production'
version_tag:
description: 'Git tag for the release version'
required: true
type: stringบันทึกและตรวจสอบกิจกรรมของไปป์ไลน์
การมองเห็นกิจกรรมของไปป์ไลน์เป็นมาตรการควบคุมความปลอดภัยที่สำคัญ การบันทึกข้อมูลที่ดีช่วยให้คุณตรวจจับและตอบสนองต่อพฤติกรรมน่าสงสัยได้อย่างรวดเร็ว
- การบันทึกข้อมูลอย่างครอบคลุม: บันทึกเหตุการณ์และการดำเนินการสำคัญทั้งหมดภายในเวิร์กโฟลว์
- ตรวจสอบความผิดปกติ: มองหาการตรวจสอบความปลอดภัยที่ล้มเหลว ความพยายามเข้าถึงโดยไม่ได้รับอนุญาต หรือเวลาการสร้างที่ผิดปกติ
- การแจ้งเตือน: ตั้งค่าการแจ้งเตือนสำหรับเหตุการณ์ด้านความปลอดภัยที่สำคัญ
ตรวจสอบความเข้าใจของคุณ
มาทดสอบความรู้ของคุณเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยของ CI/CD กัน
สรุปบทเรียนและขั้นตอนถัดไป
ขอแสดงความยินดี คุณได้เรียนรู้แนวทางปฏิบัติที่ดีที่สุดที่จำเป็นสำหรับความปลอดภัยของไปป์ไลน์ CI/CD แล้ว
- ใช้หลักการให้สิทธิ์เท่าที่จำเป็น
- รักษาความปลอดภัยให้โค้ดต้นฉบับและจัดการส่วนพึ่งพา
- เสริมความปลอดภัยให้สภาพแวดล้อมการสร้าง
- อย่าฝังข้อมูลลับในโค้ดโดยเด็ดขาด
- ตรวจสอบอินพุตของเวิร์กโฟลว์ทั้งหมด
- นำการบันทึกข้อมูลและการตรวจสอบที่รัดกุมมาใช้
แนวทางปฏิบัติเหล่านี้เป็นรากฐานที่แข็งแกร่งสำหรับวงจรการทำงาน DevOps ที่ปลอดภัย ในบทเรียนถัดไป เราจะเจาะลึกเครื่องมือและเทคนิคเฉพาะ เช่นข้อมูลลับของ GitHub และ SAST
คำถามที่พบบ่อย
บทเรียน “แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยใน CI/CD” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยใน CI/CD” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CI/CD with GitHub Actions & DevOps Pipelines ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยใน CI/CD”
ทำความเข้าใจช่องโหว่ด้านความปลอดภัยที่พบบ่อยในไปป์ไลน์ และแนวทางปฏิบัติที่ดีที่สุดเพื่อลดความเสี่ยงตลอดวงจรการพัฒนา คุณปฏิบัติ CI/CD with GitHub Actions & DevOps Pipelines ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CI/CD with GitHub Actions & DevOps Pipelines หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน CI/CD with GitHub Actions & DevOps Pipelines บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยใน CI/CD” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน CI/CD with GitHub Actions & DevOps Pipelines นี้ได้ไหม
ได้ บทเรียน CI/CD with GitHub Actions & DevOps Pipelines ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัยใน CI/CD
- การจัดการข้อมูลลับด้วย GitHub
- การทดสอบความปลอดภัยแอปพลิเคชันแบบคงที่ (SAST)
- ความปลอดภัยของทรัพยากรพึ่งพาและห่วงโซ่อุปทาน (SCA)