อ่านเจอเอกสารเกี่ยวกับ Agile Security Manifesto
เห็นว่าน่าสนใจดี จึงนำมาแปลและสรุปไว้นิดหน่อย
มีอยู่ 4 ข้อเท่ากับ Agile เลย
เป็นแนวทางสำหรับการสร้าง software ที่มีความปลอดภัย ตามแนวทางของ Agile ดังนี้

  1. Rely on developers and testers more than security specialists.
  2. Secure while we work more than after we’re done.
  3. Implement features securely more than adding on security features.
  4. Mitigate risks more than fix bugs.

ดูในรายละเอียดกันบ้าง

1. Rely on developers and testers more than security specialists

ให้ความรู้เรื่องความปลอดภัยสำหรับการพัฒนาระบบงานให้กับทางนักพัฒนาและทดสอบ
มากกว่าจะพึ่งทาง Security specialist หรือผู้เชี่ยวชาญเพียงอย่างเดียวเท่านั้น
แน่นอนว่า Security specialist นั้นมีความสำคัญอย่างมาก
แต่มีน้อยทีมมากที่จะมี Security specialist ประจำอยู่ในทีมพัฒนา
และส่วนใหญ่จะทำการตรวจสอบหลังจากที่พัฒนาระบบงานเสร็จสิ้นแล้วเท่านั้น
ซึ่งมักก่อให้เกิดปัญหาต่าง ๆ ตามมามากมาย

สิ่งที่ควรจะเป็นไปก็คือ
เรื่องของ security ต้องให้เสร็จภายในทีมพัฒนาหรือรอบการพัฒนาไม่ต้องรอ
เรื่องของ security ต้องถูกรวมเข้ากับการพัฒนาและทดสอบไปเลย
การที่จะมารอให้ security มาทำการ review แบบ manual คงไม่ทันการ
แน่นอนว่า Security specialist ต้องเข้ามาร่วมในทีมด้วยเสมอ

ดังนั้นทีมพัฒนาทั้ง developer และ tester รวมไปถึงคนที่เกี่ยวข้อง
ต้องมีความรู้ความเข้าใจเรื่องของ security ด้วย
แต่ถ้าไม่มีก็ต้องทำการสอนให้เข้าใจจากผู้เชี่ยวชาญนั่นเอง (Security specialist)

Security is First and Foremost

ส่วนเครื่องมือต่าง ๆ เกี่ยวกับ security ก็ให้ไป integrate เข้ากับระบบ CI/CD กันไปเลย

2. Secure while we work more than after we’re done

ทำการเพิ่มเรื่องของ security เข้าไปในการทำงานด้วย
นั่นหมายความว่า security คือ activity หรือกิจกรรมที่เกิดขึ้นในการพัฒนา
ดังนั้นถ้า Agile team หรือทีมมีการทำงานที่ดีอยู่แล้ว
การเพิ่ม security เข้าไปน่าจะเปลี่ยนแปลงไม่มากเท่าไร
แต่ถ้าทีมยังทำงานได้ไม่ดี การเพิ่ม security เข้าอาจจะไม่ดีแน่นอน

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

3. Implement features securely more than adding on security features

เรื่องของ security นั้นต้องถูกใส่เข้าไปในทุก ๆ feature
ไม่ใช่ทำการเพิ่ม feature ที่เกี่ยวกับ security เข้ามา เช่น
feature authentication/authorization และการเข้ารหัสข้อมูล เป็นต้น
ดังนั้นในแต่ละ feature ควรมีการพูดคุยและตกลงเรื่อง security ด้วยเสมอ

สิ่งที่ควรเน้นคือ การส่งมอบ feature ที่มีคุณค่าทาง business
ส่วนสิ่งที่นำมาใช้พัฒนาควรเลือกสิ่งที่ปลอดภัย
เช่น framework ที่มีระบบ security ที่ดี build-in ให้อยู่แล้ว
หลีกเลี่ยงการ custom library ต่าง ๆ

4. Mitigate risks more than fix bugs

ควรทำการลดความเสี่ยงมากกว่าการแก้ไขข้อผิดพลาด
นั่นหมายความว่า
เราควรทำการป้องกันไม่ให้เกิดข้อผิดพลาดมากกว่าค้นหาข้อผิดพลาด (Prevent > Detect)

ในการสร้าง secure software หรือระบบงานที่มีความปลอดภัย
ต้องคำนึงถึงความเสี่ยงทางด้วยธุรกิจ ผู้ใช้งาน และ ข้อมูลต่าง ๆ
เพื่อลดความเสี่ยงต่าง ๆ ทั้งหมดให้เหลือน้อยที่สุดเท่าที่จะทำได้
ประเด็นหลัก ๆ คือ เราคุยเรื่องความเสี่ยงเหล่านี้กันเมื่อใด
ควรระบุและสรุปรูปแบบการโจมตีต่าง ๆ ไว้
เพื่อทำให้เราเห็นว่า มีสิ่งใดบ้างที่ควรระวัง หรือ ควรหรือไม่ควรทำ

ถ้ายังมานั่งแก้ไขข้อผิดพลาดที่ละข้อ ทีละ feature เหมือนที่เคยทำกัน
เผลอ ๆ อาจจะต้องรื้อทำใหม่กันเลย

Building secure software in an agile way is fundamentally just building software in an agile way.