ในยุคดิจิทัลที่ทุกสิ่งทุกอย่างกลายเป็นออนไลน์ แอปพลิเคชันทั้งบนเว็บ บนมือถือ และบนอุปกรณ์ต่างๆ ล้วนมีความเสี่ยงต่อภัยคุกคามทางไซเบอร์ องค์กรต่าง ๆ จึงจำเป็นจะต้องให้ความสำคัญกับเรื่องของ Security เพิ่มขึ้น กระบวนการสร้างซอฟต์แวร์ที่มีการเติมความปลอดภัยใส่ไปตรงกลางระหว่าง Dev กับ Ops ที่เป็นแนวทางการสร้างซอฟต์แวร์ให้มีความรวดเร็ว ยืดหยุ่นกลายเป็น “ปลอดภัย รวดเร็ว และยืดหยุ่น” นั่นเอง !!!
DevSecOps คืออะไร
DevSecOps ย่อมาจาก “Development, Security, and Operations” เป็นแนวทางการทำงานแบบใหม่ที่ผสานรวมกระบวนการพัฒนาซอฟต์แวร์ (Development) การรักษาความปลอดภัย (Security) และการดำเนินงาน (Operations) เข้าด้วยกัน เพื่อสร้างระบบที่ปลอดภัย ยืดหยุ่น และสามารถสเกลได้อย่างรวดเร็ว
แนวคิดนี้เกิดขึ้นจากการเปลี่ยนแปลง 3 อย่างสำคัญในวงการไอที:
จาก Waterfall สู่ Agile: เดิมทีการพัฒนาซอฟต์แวร์แบบ Waterfall จะวางแผนทุกอย่างล่วงหน้า ทำให้การแก้ไขปรับปรุงยาก DevSecOps นำแนวคิด Agile มาปรับใช้ เน้นการทำงานเป็นรอบสั้น ๆ และปรับเปลี่ยนได้รวดเร็ว
จาก Monoliths สู่ Microservices: เดิมทีซอฟต์แวร์มักเป็นชิ้นใหญ่ (Monoliths) แก้ไขยาก DevSecOps ใช้แนวคิด Microservices แบ่งซอฟต์แวร์เป็นชิ้นเล็ก ๆ ทำให้แก้ไขง่าย ปลอดภัยกว่า
จาก Data Center สู่ Cloud: เดิมทีข้อมูลอยู่บนเครื่อง (Data Center) ทำให้ควบคุมความปลอดภัยได้ยาก DevSecOps ใช้ระบบ Cloud ที่มีระบบรักษาความปลอดภัยที่แข็งแกร่ง
ประวัติความเป็นมาของคำว่า “DevSecOps”
คุณ Shannon Lietz ภาพจาก 2019 – Securability – Shannon Leitz
คำนี้เกิดขึ้นราวๆ ปี 2012-2013 โดย Shannon Lietz ซึ่งเป็นผู้อำนวยการฝ่าย DevSecOps ที่ Intuit เขาเป็นคนที่มีส่วนสำคัญในการผลักดันให้เกิดการพูดคุยถึงการใส่เรื่องของ Security เข้ากับ Development และ Operation นอกจาก Lietz แล้ว ยังมีอีกคนที่สำคัญอย่าง Gene Kim นักเขียนแผู้สนับสนุนหลักการ DevOps ก็มีบทบาทสำคัญในการเผยแพร่แนวคิด DevSecOps ให้กับองค์กรหัวก้าวหน้า จนทำให้ Google, Netflix และ Etsy ต่างก็เล็งเห็นความสำคัญของการเอาเรื่องของความปลอดภัยไปใส่อยู่ในกระบวนการ DevOps เลยกลายเป็น DevSecOps ขึ้นมา และประกอบกับการโจมตีทางไซเบอร์ทวีความรุนแรงขึ้นเรื่อย ๆ ทำให้ DevSecOps ถูกพลักดันเป็นแนวทางใหม่สำหรับการพัฒนาซอร์ฟแวร์มากยิ่งขึ้น
หลักการของ DevSecOps
1. Automation and integration:
- แทนที่จะตรวจสอบความปลอดภัยแบบแมนนวล DevSecOps เน้นการใช้เครื่องมืออัตโนมัติเพื่อค้นหาช่องโหว่ในโค้ด ตรวจสอบ Infrastructure และจัดการความปลอดภัยต่างๆ
- เชื่อมต่อเครื่องมือ DevSecOps เข้ากับกระบวนการพัฒนาซอฟต์แวร์ ช่วยให้ตรวจสอบและแก้ไขช่องโหว่ได้รวดเร็วยิ่งขึ้น
2. Continuous delivery and deployment:
- เน้นการพัฒนาและส่งมอบซอฟต์แวร์อย่างต่อเนื่อง โดยไม่ต้องรอให้เสร็จสมบูรณ์ 100%
- ช่วยให้ทดสอบและแก้ไขความปลอดภัยได้รวดเร็ว ป้องกันปัญหาที่อาจเกิดขึ้นในอนาคต
3. A collaborative approach to security:
- ความปลอดภัยไม่ใช่แค่หน้าที่ของทีม Security แต่เป็นความรับผิดชอบร่วมกันของทุกคนในทีมพัฒนา
- ส่งเสริมการทำงานร่วมกัน แบ่งปันความรู้ และความรับผิดชอบด้านความปลอดภัย
4. Security at every stage of the SDLC:
- ใส่ใจเรื่องความปลอดภัยตั้งแต่เริ่มต้นการออกแบบ พัฒนา ทดสอบ จนถึงการ Deploy
- ช่วยลดความเสี่ยงและช่องโหว่ที่อาจเกิดขึ้นในทุกขั้นตอน
5. Proactive monitoring and response strategies:
- เน้นการติดตามและตรวจสอบระบบอย่างต่อเนื่อง เพื่อหาสัญญาณเตือนภัยคุกคาม
- วางแผนรับมือกับเหตุการณ์ด้านความปลอดภัยได้อย่างรวดเร็วและมีประสิทธิภาพ
ตัวอย่างเครื่องมือ DevSecOps ยอดนิยม:
1. Static Application Security Testing (SAST)
- Snyk: ค้นหาช่องโหว่ในโค้ดแบบ Static
- Coverity: วิเคราะห์โค้ดเพื่อหาช่องโหว่และจุดบกพร่อง
2. Dynamic Application Security Testing (DAST)
- ZAP เดิมชื่อ OWASP ZAP: เครื่องมือสแกนเว็บแอปพลิเคชัน
- Burp Suite: เครื่องมือ Penetration Testing เว็บแอปพลิเคชัน
3. Software Composition Analysis (SCA)
- Black Duck: วิเคราะห์ Open Source Components ว่ามีความปลอดภัยหรือไม่
- Sonatype Nexus: จัดการ Artifact ของ Open Source Components
4. Infrastructure as Code (IaC) Scanning
- Terrascan: อีกตัวเลือกสำหรับสแกน Terraform IaC เหมือนมีหมอตรวจบ้าน
- Cloud Custodian: ตรวจสอบและจัดการ Security ของ Cloud Infrastructure
5. Security Information and Event Management (SIEM):
- Splunk: เก็บ Log และวิเคราะห์อีเว้นท์ด้านความปลอดภัย
- Elasticsearch: เก็บ Log และวิเคราะห์อีเว้นท์ด้านความปลอดภัยเช่นกัน
6. Container Security
- Trivy: เหมือนยามเฝ้าประตู ตรวจสอบภาพคอนเทนเนอร์ก่อนเข้าระบบ ว่ามีช่องโหว่หรือมัลแวร์หรือไม่ ฟรี ใช้งานง่าย และรองรับหลายภาษา
- Anchore: เหมือนนักสืบ ตรวจสอบภาพคอนเทนเนอร์อย่างละเอียด หาช่องโหว่ มัลแวร์ ตั้งค่าที่ผิดพลาด ฯลฯ เหมาะกับผู้ใช้ที่มีประสบการณ์ ต้องการความละเอียดสูง
7. Secret Management
- HashiCorp Vault: เป็นเครื่องมือจัดการ Secret แบบ open-source ที่ได้รับความนิยม
- Infisical: เป็นเครื่องมือจัดการ Secret แบบ SaaS ที่ใช้งานง่าย
เครื่องมือเหล่านี้เป็นเพียงตัวอย่างเท่านั้น ยังมีเครื่องมือ DevSecOps อีกมากมาย การพิจารณาเลือกเครื่องมือนั้นขึ้นอยู่กับความต้องการขององค์กรเป็นหลัก
โดยสิ่งสำคัญคือต้องเลือกเครื่องมือที่เหมาะสมกับ:
- ประเภทของแอปพลิเคชัน
- โครงสร้างพื้นฐาน
- กระบวนการพัฒนาซอฟต์แวร์
- งบประมาณ
เป็นยังไงกันบ้างครับ DevSecOps ไม่ได้เข้าใจยากอย่างที่คิดเลยใช่มั้ย เพียงแค่เราเข้าใจหลักการและนำไปใช้ให้เหมาะสมกับองค์กร ก็จะช่วยให้องค์กรของเราพัฒนาซอฟต์แวร์มีความปลอดภัยและมีประสิทธิภาพมากขึ้นนั่นเอง !!!
— Cloud HM