ต้องบอกว่าปัจจุบันนี้เราอยู่ในยุค Digital Transformation ยุคที่ IT เข้ามามีส่วนเกี่ยวข้องกับชีวิตประจำวันของเราแทบจะทั้งสิ้น Software ต่าง ๆ เข้ามามีบทบาทสำคัญต่อภาคธุรกิจมากมาย ทำให้การพัฒนา Software ต้องมีความรวดเร็วและถูกต้อง หลายคนอาจจะเคยได้ยินคำว่า “DevOps”
ผู้ที่เข้ามาทำให้ทุกอย่างเป็นไปได้ในเรื่องของการพัฒา Software แต่การพัฒนาอย่างเดียวอาจไม่เพียงพออีกต่อไป เมื่อเรื่องของ Security ก็สำคัญไม่แพ้กัน วันนี้เราจะพาไปรู้จักกับ “DevSecOps” แนวคิดการทำงานรูปแบบใหม่ ที่ช่วยลดช่องโหว่ความไม่ปลอดภัยและการรั่วไหลของข้อมูลควบคู่ไปกับการพัฒนา Software ได้อย่างมีประสิทธิภาพ
โดย คุณกัณฑณัติ ศรีหิรัญ
Senior System Engineer, MFEC
Image from Wallpapers
ก่อนอื่นเราจะขอเล่าที่มาที่ไปของ DevSecOps กันก่อน ในยุคที่แนวคิด DevOps และ Agile เริ่มได้รับความนิยมและนำไปปรับใช้ในการพัฒนา Software ให้เร็วขึ้นเพื่อตอบสนองต่อความต้องการของกลุ่มเป้าหมาย พอถึงจุดหนึ่งที่เราทำ Application ออกมาได้รวดเร็วตามที่คาดหวัง และจะนำไป Deploy ขึ้นสู่ Production
คำถามสำคัญที่มักจะถูกถามถึงเสมอคือ ความปลอดภัยของ application มีมากพอหรือยัง, สิ่งที่นำมาพัฒนา software เช่น library ต่าง ๆ รวมถึงวิธีการเขียนในแต่ละภาษา ได้รับการตรวจสอบมาดีแล้วใช่ไหมและสุดท้ายเราสามารถเชิ่อมั่นในความปลอดภัยได้แล้วหรือยัง? คำถามเหล่านี้มักจะปรากฏขึ้นมาในช่วงท้ายของการพัฒนา software เรามักจะทราบถึงช่องโหว่ที่ต้องแก้ไขจากการทำ Penetration Testing (pentest) ซึ่งมักจะมีเวลาไม่มากนักให้ Developer แก้ไขสิ่งที่ตรวจพบและอาจนำมาซึ่งความเครียดในแต่ละครั้งของการ deploy
เหตุการณ์ข้างต้นเกิดขึ้นเพราะในแนวคิดแบบเดิม เรามักจะไม่ได้คำนึง security ในทุกกระบวนการพัฒนา software. Security เองก็ถูกมองเป็นตัวขัดขวางการดำเนินงานหรือถูกมองเป็น silo ด้วยเหตุนี้จึงเกิดแนวคิดที่จะแก้ปัญหากเหล่านี้โดยการนำ Security เข้ามาอยู่ในกระบวนการพัฒนา software ตั้งแต่แรกเริ่มที่หลายท่านอาจเคยได้ยินกันมาแล้วว่า การทำ “Shift-Left” – “Shift-left” คือการถอยไปเริ่มสร้างความปลอดภัยตั้งแต่แรกเริ่มตั้งแต่ วิธีการเขียน การเลือกใช้ library รวมถึงการเลือก image มาทำ container ในยุคที่การทำ containerization เป็นที่นิยม
สิ่งเหล่านี้จะถูกนำไปปรับใช้ผ่าน tools ต่าง ๆ ที่ช่วยในการทำ application security เช่น การสแกนด้วย SAST, SCA และ Container security platform ต่าง ๆ ซึ่งมีให้เลือกใช้ทั้ง OSS(Open-source software) และ Enterprise edition การนำเครื่องมือเหล่านี้มาปรับใช้ จะทำให้ developer ทราบถึงปัญหาที่อาจจะเกิดในปลายทาง ตั้งแต่แรกเริ่มของการพัฒนา software และเมื่อเจอประเด็นเหล่านี้บ่อย ๆ จนสามารถปรับแก้ได้จนคุ้นชิ้นก็จะสร้างนิสัยในการ coding ที่มีความปลอดภัยขึ้นมา หรือที่เรียกกันว่า secure coding และที่สำคัญคือจะเป็นการ educated developer ให้มี security awareness ในหลาย ๆ ขึ้นตอนในการพัฒนา software
จะเห็นว่าจากแนวคิด shift-left ข้างต้นและการนำมาผสมผสานกับการทำ automation เพื่อผนวก security ลงไปกระบวนการพัฒนา software ที่มีการพัฒนาอย่างรวดเร็วและแม่นยำอยู่แล้วอย่าง CI/CD จึงเกิดแนวคิดที่เรียกว่า DevSecOps ขึ้นมา
หน้าที่ของ DevSecOps ในแต่ละวันทำอะไรบ้าง?
หลัก ๆ แล้วงานในส่วนของ DevSecOps ที่ทีมของ MFEC ทำมีอยู่ 3 ส่วนคือ
1. ให้คำปรึกษา (Consultant)
หลังจากที่เราเข้าไปติดตั้ง Tools ในการตรวจสอบ Application Security เช่น การทำ Source Code scanning, การตรวจสอบ Library ที่ถูกนำไปใช้ ในบางครั้งเมื่อได้รับผลสแกนทางลูกค้าอาจมีคำถามหรือข้อสงสัย ถึงวิธีการแก้ไขประเด็นที่เกิดขึ้น ทางทีมก็จะเข้าไปช่วยอธิบายถึงวิธีการแก้ไขให้กับลูกค้า นอกจากจะอธิบายถึงวิธีการแก้ไขแล้วยังอธิบายให้ทางลูกค้าทราบถึงสาเหตุว่าทำไมประเด็นเหล่านี้ถึงเกิดขึ้น เพื่อที่จะให้ผู้ใช้งานเข้าและจะเป็นการสร้าง security awareness ไปในตัว ปัญหาเหล่านี้จะได้ไม่เกิดขึ้นมาอีกในอนาคตสอดคล้องไปกับแนวคิด DevSecOps
2. Implement
การออกไปทำการติดตั้งเครื่องมือในการตรวจสอบความปลอดภัย โดยส่วนใหญ่ software ด้าน security เหล่านี้ต้องติดตั้งบน infrastructure ในหลากหลายรูปแบบเช่น Linux host, Docker runtime หรือ Container orchestrator เช่น Kubernetes and Red Hat Openshift ทางทีมจึงต้องมีความรู้ความเข้าใจในสิ่งเหล่านี้ เพื่อที่จะได้ทำการติดตั้งได้อย่างมีประสิทธิภาพและสามารถแก้ไขปัญหาที่อาจจะเกิดขึ้นได้ในอนาคต หลักจากทำการติดตั้งสิ่งที่ต้องทำต่อไปก็คือการตั้งค่าต่าง ๆ เช่น การสร้าง policy, security rules การทำในส่วนนี้ต้องอาศัยความรู้ความเข้าใจในการทำงานของ tools และความรู้ด้าน security ที่ tools นั้น ๆ จะเข้าไปทำการตรวจสอบเพื่อที่จะทำให้การตั้งค่าเกิดประโยชน์สูงสุดกับลูกค้าแต่ละที่
3. Operations
หลังที่ tools ต่าง ๆ ได้รับการติดตั้งและตั้งค่าเพื่อส่งมอบให้กับทางลูกค้าแล้ว ทางทีมยังมีบริการที่จะเข้ามาช่วยลูกค้าในการ operate เครื่องมือเหล่านี้ให้สอดคล้องไปกับ Business process ของทางลูกค้า อีกทั้งยังทำในส่วนของการ integration เครื่องมือเหล่านี้เข้าไปกับการพัฒนา software เช่น ในบางครั้งทีมเข้าไปช่วยเหลือลูกค้าในการเขียน Jenkins job เพื่อ integrate security tools เหล่านี้เข้ากับ CI/CD pipeline เพราะบางครั้งคนที่ทำในส่วนนี้ก็ไม่เข้าใจถึงสิ่งที่ security tools ต้องเขียนและเข้าไปทำและเช่นกันในการทำ security แบบเดิมอาจไม่มี skill set ที่ครอบคลุมถึงการทำสิ่งเหล่านี้ สุดท้ายยังช่วยตอบคำถามลูกค้าเบื้องต้นในกรณีที่ลูกค้าสงสัยในผลสแกนหรือวิธีการแก้ไข หากคำถามเหล่านั้นมีรายละเอียดที่มากขึ้น ก็จะส่งให้ส่วนที่ดูในงาน consultant เข้ามาดูแล
อยากทำงานตำแหน่งนี้ควรเริ่มจากสายไหนดี?
ต้องอธิบายให้เข้าใจอย่างนี้ครับว่า DevSecOps ย่อมาจาก 3 คำได้แก่
Dev = Developer
Sec = Security
Ops = Operation
ตำแหน่ง DevSecOps ก็สามารถเริ่มต้นได้จากคนทั้ง 3 กลุ่ม
กลุ่มที่ 1 Developer
อาจจะเป็นกลุ่ม Developer ที่พัฒนา Software ทำหน้าที่ในการเขียนโค้ด และพัฒนา Software โดยตรง แต่มีความอยากรู้หรือสนใจเรื่อง Infrastructure และอยากจะทำ Security ในส่วนนี้จะมีความรู้ความเข้าใจในส่วน application security สามารถนำมาต่อยอดในการอ่านผลสแกนและแนะนำลูกค้าในส่วนของการแก้ไขได้
กลุ่มที่ 2 Security
หากมาจากสาย Security แต่สนใจอยากจะมาเรียนรู้ว่า Application Security ที่เขาทำกันมีอะไรบ้าง ก็จะได้เปรียบตรงที่เรารู้เรื่อง Security มาก่อนอาจเข้าใจถึงสิ่งที่ tools อธิบายและแนะนำได้ดี ซึ่งสิ่งที่ต้องเรียนรู้เพิ่มก็จะเป็นในเรื่องของการ Dev อาจไม่ถึงขั้นต้องเขียน application ได้แต่ต้องเข้าใจในสิ่งที่ Developer ทำและพยายามจะทำ สุดท้ายเป็นเรื่องการทำ Automation ที่จะเข้ามาช่วยในการทำ Integration ได้อย่างมาก
กลุ่มที่ 3 Operation
กลุ่มสุดท้ายอาจจะมาจากกลุ่มที่ทำ System มาก่อนซึ่งจะมีทักษะทางด้านการทำ OS และ Automation หรือ scripting เป็นอยู่แล้ว แต่อาจจะยังมีความรู้ความเข้าใจเรื่อง Software Developer ไม่มากนัก รวมถึงเรื่อง Security ด้วย ก็สามารถเริ่มศึกษาหาความรู้ความเข้าใจหลักการทำงานของ Dev เช่นเดียวกันว่าอาจจะไม่ต้องลึกไปถึงขั้น Coding ได้แต่ต้องเข้าใจในกระบวนการในสิ่งที่ Developer กำลังทำอยู่ และควรเพิ่มความรู้ทางด้าน Security เพื่อที่จะเข้าใจในสิ่งที่ tools พยายามจะบอก