Screen Shot 2558-03-11 at 12.05.10 PM
ในการพัฒนาระบบที่เน้นเรื่องความปลอดภัย หรือ ไม่ก็ตาม
จำเป็นจะต้องทำการทดสอบเรื่อง ความปลอดภัยอยู่อย่างเสมอ
ลองคิดดูสิ ถ้าไปทดสอบหลังจากที่พัฒนาเสร็จแล้ว
มันจะนรกขนาดไหน ?
ใช้เวลาทดสอบนานไหม ?
ใช้เวลาแก้ไขนานไหม ?
แล้วมันช่วยอะไรบ้าง ?

ในปัจจุบันนั้น

เราพัฒนาระบบงานในรูปแบบของ iteration หรือ sprint กันมากขึ้น
ดังนั้น จึงมีคำถามขึ้นมาว่า

ทำไมเราไม่เพิ่มเรื่องความปลอดภัย (security) ไปใน sprint ล่ะ ?
นั่นสินะ แล้วมันทำอย่างไรล่ะ ?

ใน Scrum นั้นจะมีคำว่า Sprint Zero หรือ Sprint 0

เพื่อใช้สำหรับเตรียมการต่างๆ ที่ทีมมองว่ามีความเสี่ยง
เพื่อสร้าง และ เตรียมโครงสร้างของระบบ ให้รองรับเรื่อง security ไว้พอสมควร
ตัวอย่างเช่น

  • เลือก platform, framework และ library ว่ามันสนับสนุน หรือ รองรับเรื่อง security ได้เพียงพอ ตามที่ต้องการหรือไม่ และเรียนรู้ว่ามันทำงานอย่างไร
  • ทำความเข้าใจเกี่ยวกับ requirement เรื่อง Data privacy และ compliance ต่างๆ เพื่อทำให้เราเข้าใจถึงสิ่งที่ระบบต้องการนะ รวมทั้งขั้นตอนของการตรวจสอบต่างๆ
  • ทำการ training เรื่อง security development ให้กับทีมซะ ให้เริ่มทำการดูว่าทีมมีความรู้ความเข้าใจไหม ถ้าไม่ก็ทำการสอนสิ เพื่อให้ code ที่ได้มานั้นมีความปลอดภัยมากขึ้น เป็นเรื่องที่ทีมพัฒนาส่วนใหญ่มักจะขาดความรู้มากๆ ครับ
  • สรุป guilde line ต่างๆ รวมทั้งการทำ code review ว่าจะนำเรื่อง security เข้ามาด้วยนะ
  • สรุปวิธี และ ขั้นตอนการทดสอบ เสียแต่เนิ่นๆ เช่นถ้ามีระบบ Continuous Integration แล้วจะนำเรื่องการทดสอบเรื่อง security ไปใส่ไว้ใน pipeline ของระบบตรงไหนดี รวมทั้งการเลือก Static analysis tool, แผนการทำ penetration testing และเรื่อง security อื่นๆ

เมื่อเริ่มทำงานจริงๆ

ในช่วงแรกๆ ทีมพัฒนาควรจะเข้าใจเรื่องของ Threat model ด้วย
เพื่อให้เข้าใจว่า เราเข้าใจในเรื่องความเสี่ยงต่างๆ
รวมทั้ง ทำให้เรามั่นใจว่าจะแก้ไขปัญหาต่างๆ เหล่านั้นอย่างไรด้วย

โดยในการจัดการกับปัญหาต่างๆ สามารถเริ่มด้วยการตอบ 4 คำถามนี้

  • เรากำลังจะสร้างอะไร ?
  • สิ่งที่สร้างมันมีอะไรที่ผิดพลาดบ้าง ?
  • แล้วเราจะทำ หรือ แก้ไข มันอย่างไรดี ?
  • คุณยอมรับในสิ่งที่ทำมาจากข้อ 1- 3 หรือไม่ ?

ซึ่งจากคำตอบของคุณ จะบอกว่า
คุณเข้าใจสิ่งที่คุณกำลังสร้าง หรือไม่
คุณเข้าใจเรื่อง Threat model หรือไม่
คุณรู้วิธีแก้ไข หรือ รับมือกับปัญหาหรือไม่

ในแต่ละ feature ควรรวมเรื่อง security เข้าไปด้วยเสมอ

ให้จำไว้ว่า ในแต่ละ feature อย่างนั้นควรที่จะข้อตกลงในการตรวจสอบด้วยว่า
แต่ละ feature ต้องผ่านเรื่อง security พื้นฐานด้วยเสมอเช่น

  • ผ่านการตรวจสอบด้วย Static analysis tool
  • ผ่านการตราวจสอบเรื่อง security
  • ผ่านการ review และ แก้ไขให้เรียบร้อย

ในการตรวจสอบนั้นต้องใช้เวลาที่น้อย
นั่นคือ เราจะได้ feedback ที่รวดเร็ว
เพื่อทำให้เราสามารถแก้ไขได้อย่างรวดเร็ว

ถ้าระบบไหน เน้นเรื่อง Security มากๆ มักจะมี Security Sprint เกิดขึ้นมา

โดยปกติเรื่อง security นั้นจะถูกรวมเข้าไปในแต่ละ feature และแต่ละ sprint อยู่แล้ว
แต่เมื่อผ่านไปสัก 2-4 sprint อาจจะมี Security sprint ขึ้นมาได้เช่นกัน
เพื่อทำให้มั่นใจก่อนนำระบบนั้นขึ้น production server เช่น

  • Penetration testing
  • ทดสอบโจมตีระบบในรูปแบบต่างๆ

เพื่อช่วยทำให้เรารู้ว่า
ขั้นตอนการทำงานเกี่ยวกับ security ของทีมนั้นมีปัญหาตรงไหน
เพื่อจะได้แก้ไข และ ปรับปรุงให้ดียิ่งขึ้น

ดังนั้นให้ทำการเพิ่มเรื่อง Security เข้าไปในทุกๆ Sprint/Iteration ของการทำงานครับ

อย่ามารอทำการทดสอบหลังจากพัฒนาเสร็จกันอย่างเดียว
ซึ่งมันจะเสียเวลาไปแบบไร้ค่าอย่างมากมาย

เพิ่ม security เข้าไปในข้อตกลงซะ
มันไม่ได้ยากเลย
เพียงแค่เราไม่มีความรู้ และ ความเข้าใจกับมันเท่านั้นเอง
ดังนั้น เราก็ต้องเรียนรู้กับมันเท่านั้นเองครับ

Just do it ครับ

Reference Website
http://swreflections.blogspot.com/2015/03/putting-security-into-sprints.html