มาฟังระหว่างหลบฝนครับ และมาลอง Notion Note ด้วย ว่าจดแล้วเป็นไงบ้าง ลองดูกันได้เลยครับ
DevSecOps คือ ?
มาที่ DevOps ก่อน ?
- Dev + Ops คุยกันให้งานมันไหลลื่น ยกตัวอย่าง เช่น Non-Functional Requirement ที่ต้องจับ Ops มาคุยกับ Dev เพื่อลดงานด้วย Ops ให้ลดลงตอนใช้จริง
- จิ๊กซอส จาก Flow การทำงานในองค์กร
- วิธีการ ที่ช่วยทำให้ Release ของได้เร็ว แต่ไม่ได้เกี่ยวกับ Agile มาเสริมกัน
DevOps - Metric
- Lead Time - เวลาที่ใช้ในการสร้าง Artifact
- Deploy Frequency ได้ถี่แค่ไหน
- Mean Time to Restore - เรากู้ได้ไวแค่ไหน
- % Change ของ Fail ที่เกิดขึ้น ในแต่ละรอบ
อะไรที่ช่วยให้ DevOps เกิดขึ้น
- Automation Tools
- Infra as a Code (เปลี่ยน artifact > application ที่ รันได้) Puppet / Ansible
- Orchestrator Jenkins / Circle CI / TeamCity
- Container แต่ไม่จำเป็นนะ ถ้ามี Step ที่แน่นอน จนเอาไปลง Script ได้
- Collaboration Tools
Practice 4 DevOps
- Flow มี Process ที่แน่นอนไหลลื่น (Repeatable) และแต่ละ Step ต้องไม่มีการส่งต่อ Defect อย่างแรก ต้องดูว่าไอ้ที่ทำอยู่ในปัจจุบัน สามารถใช้ทำ Automation ได้ ใน Flow และจุดไหน เอา Tool มา Apply ได้
- Feedback Loop ที่สั้นลง - มี Automate Test ลองเทสก่อนส่งเข้าส่วนกลาง
- Culture ที่ทำให้เกิด Continuous Improvement ** DevOps ไม่ได้ Focus tools แต่เน้นตัว Practice ทำให้เกิด Flow & Culture
Key Dev spark Ops
- Empathy - ทั้ง Dev และ Ops
- Blameless Culture - เน้น Improvement
DevSecOps
- DevOps + Security
- DevSecOps - Shift Left ? เอา Security ใส่เข้าไปใน Process ที่ทำได้ เพราะมี Tool ช่วย Automation
- จูนศัพท์ระหว่าง Dev + Sec ให้เข้ากันได้ อย่าง เช่น
- VA Scan / Pen Test นิยามอย่างไร
- หรือ A5 - Owasp หรือ เนื้อย่าง
- หรือ Cross Site Script Dev อาจจะถามว่าอิหยังหวะ << อันนี้เจอจริง พี่ที่อยู่ในทีม Sec รัน Tool และส่ง Report และจากไป ….
- Security เปลี่ยนบทบาท Assessor จาก Disassemble >> Security Engage กับทีม Dev มากขึ้้น เช่น
- Dev ชอบ hard code secret ไว้ใน Code จะแก้ยังไง สอนว่าควรทำยังไง ย้ายไปใช้ Secret Management ถ้ามันซับซ้อน อาจจะมาทำ Lib ครอบช่วย Dev เป็นต้น
- Dependency Management - มาช่วย
- ทุก Role Empathy - ใจเขาใจ เรา และอาจจะต้องมีคนที่เป็น Connector ระหว่าง Dev Sec Ops เห็นภาพของทุก Role และจูนให้เกิด Same Goal ขึ้นมาได้
เอา Sec ไปใส่ ตอนไหน
- ไม่มี Pattern ที่แน่นอน ต้องไปปรับใช้ตามแต่ละองค์กร เช่น การทำ Code / Dependency Scan วางตอนไหน ก่อน Commit / ก่อน Build / หลัง Build เป็นต้น ต้องตกลงกัน จะไม่ได้เกิดกาต่อต้านของคนที่เกี่ยวข้อง
Course ที่สอนๆ DevSecOps บอกอะไร
- เน้น Flow ทำให้สังเกตุได้ว่าอะไรควร Automate และ Tool ที่เกี่ยวข้อง น่าจะเรียกว่าเรียนรู้จาก Case Study
ตั้งทีม DevSecOps ไหม ?
- ไม่จำเป็นต้องแยกทีม แต่ควรเริ่มจากทำ Working Group ของแต่ละ Role Dev / Sec / Ops มาแลกเปลี่ยนข้อจำกัดที่เกิดขึ้นในปัจจุบัน รวมถึงกำหนดหน้าที่ ที่อาจจะต้องมีขึ้นมา เช่น
- Dev ต้องมาลอง Run Tools และตีผลลัพธ์
- Sec มาสอน Guideline Dev ช่วยตีความ Report หรือ Sec ต้องมาลุย Code ด้วย จะได้เห็นปัญหา และลดจาก Code
- Ops - ต้องมาตกลง เช่น การ
- Monitor - Log / Anomaly Event ที่เกิดขึ้น และส่งต่อตามตัว Incident Response
- Report - Security Report ที่อาจจะมาตามที่หลัง Flow ไปแล้ว ปล ผมเป็น role dev เพิ่งรู้่เหมือนกันครับว่า Ops+Sec ทำงานคู่กันมากกว่า Dev+Sec อีก 555
- การวัดผล กำหนด Quality Gate / Expectation ให้ชัดเจน จะได้ไม่เกิด Block Case ตอนทำจริง
Risk กับ DevSecOps
- ไม่ได้ดูจากของทีมนะ ดูจากขององค์กร เช่น ในมุม Security ต้องทำ Risk Profile หรือเตรียม Option ให้เลือก ถ้า Strick มากไป จะส่งผล Goal องค์กรนะ
ตำแหน่ง DevSecOps Engineer ?
- ต้องดูนิยามงานมันเกี่ยวข้องจริงไหม หรือ เอามาทำ Automation Engineer หรือ คนที่เข้าใจ+ประสาน ทั้ง 3 Domain Dev/Sec/Ops ได้
- ถ้าองค์กรจะสร้างคนขึ้นมาด้านนี้ แนะนำให้เอา Dev มาศึกษา Security จะช่วยให้ Code Quality เพิ่มขึ้น เหมือนจะมี Keyword Secure Coding (หนังสือยังวางกองที่โต๊ะ)
DevSecOps Process
- จากภาพเห็นว่าจาก Flow DevOps เดิม Security เข้ามา Added ตรงไหนได้บ้าง ?
- สีฟ้า Dev + Sec
- สีส้ม Ops + Sec
- ช่วงนี้มี Supply Chain Attack มาบ่อยๆ ตัว Pipeline ต้อง Secure ด้วย ใน Develop Environment เสริมจาก Production Development ข่าวดังๆ เช่น
DevSecOps People
- หลักๆ เน้นแกนของตัวเอง สีส้ม และเสริมด้านอื่นๆ ตามสีฟ้า
DevSecOps Tools / Tech
- Application
- Static Application Security Testing - ตรวจ code เช่น SonarQube (อันนีผมก็เพิ่งรู้ตัว Line of Code Limit ด้วย Lines of code limit and branches - SonarQube - Sonar Community (sonarsource.com) / CodeQL
หรือ Software Composition Analysis - ตรวจ Dependency Checking เช่น Owasp Security Checking - Dynamic Application Security Testing - ตรวจตอน Run เช่น
- API - OWASP ZAP | OWASP Foundation
- Desktop App
- Note Tool กลุ่มนี้ Run นานมาก อาจจะต้องหาจังหวะใส่ใน Pipeline ดีๆ
- Interactive Application Security Testing - ผสม SAST + DAST อ๋อพวกบน Azure ที่มัน Scan น่าจะกลุ่มนี้ด้วยมั้ง
- Static Application Security Testing - ตรวจ code เช่น SonarQube (อันนีผมก็เพิ่งรู้ตัว Line of Code Limit ด้วย Lines of code limit and branches - SonarQube - Sonar Community (sonarsource.com) / CodeQL
- Artifact Repository - ควรทำของตัวเองนะ เช่น Harbor (goharbor.io) / Nexus Repository Manager หรือจะใช้บน Cloud แต่ต้องทำ Practice ของเค้า
- Registry Scan (Container) - TerraScan / OpenScap (แต่ต้องไปเอา DB มา load เอง) / AquaSec
- base image ควรจะเริ่มจากเล็ก เช่น Alpline / Ubuntu Slim
- Tool รวมข้อมูล Finding จาก Tool ต่างๆ OWASP Defectdojo / Reconmap
- Thread Modeling Tools
- Git Commit Hooks - pre-commit git hook
- ดักจับ Secret เช่น Creating a pre-commit git hook to detect secrets (gitguardian.com) อันนี้ดีจะได้ไม่ โดน Sonar มันสงสัยตอนหลัง
- Linter / Style Check
บางทีผมอาจจะดูได้ไม่ครบ ลองเข้าไปดู Live เต็มๆได้ ตั้งวงเล่า 22.08: DevSecOps
ปล. Notion มันดีจริงๆ จดง่ายเอามาแปะ WordPress ต่อได้ไว
Resource เผื่อดูเพิ่ม น่าจะ 2 หรือ 3 เล่ม
- The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations: Amazon.com: Books
- The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win: : Amazon.com: Books
Reference
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.