ปัญหาด้านความมั่นคงปลอดภัยควรจะถูกพิจารณาตั้งแต่แรกเริ่มของการพัฒนาโปรเจ็ค ซึ่งทางผู้เชี่ยวชาญจาก NetworkComputing ได้ออกมาแชร์ประสบการณ์ว่าจุดไหนที่ DevOps ควรจะเริ่มตรึกตรองเกี่ยวกับเรื่องความมั่นคงปลอดภัยในเชิงปฏิบัติเพื่อไม่ให้เกิดเหตุการณ์ที่ตรงกับสุภาษิตที่ว่า “วัวหายล้อมคอก” นั่นเอง

Project Workshop
การประชุมเชิงปฏิบัติการเกี่ยวกับโปรเจ็คที่พัฒนานั้นมักมีจุดประสงค์หลักคือชี้แจงว่า Workflow ทำงานอย่างไรโดยไม่ค่อยใส่ใจกับเรื่องของความซับซ้อนในด้านความมั่นคงปลอดภัย ดังนั้นในการประชุมเหล่า DevOps ควรจะมีการตั้งคำถามกับด้านความมั่นคงปลอดภัยต่อที่ประชุมและยิ่งเราตั้งคำถามได้เร็วเท่าไหร่ ก็จะทำให้เกิดการตระหนักและใส่ใจไปตลอดการพัฒนาโปรเจ็ค ตัวอย่างเช่น
-
Credentials ถูกเก็บไว้ที่ไหน
-
มีกระบวนการตรวจสอบ (Audit) เป็นอย่างไร
-
นโยบายด้านความมั่นคงปลอดภัยของบริษัทคืออะไร
-
ระดับในการเข้าถึงระบบที่จำเป็นในการใช้งานระบบเป็นอย่างไร
-
Certificate ถูกเก็บไว้ที่ไหนและเก็บไว้อย่างปลอดภัยหรือไม่
-
มีลำดับการเก็บข้อมูลบนระบบอย่างไร
ความมั่นคงปลอดภัยต้องเริ่มตั้งแต่บรรทัดแรกที่เขียนโค้ด
ในช่วงของการ Build นั้นการใช้งานรหัสผ่านแบบ Plain Text เป็นเรื่องที่มักเกิดขึ้นเสมอ อย่างไรก็ตามในสภาพแวดล้อมของระบบทดสอบนั้นการกระทำข้างต้นไม่ควรมีแล้ว ซึ่งหลายคนอาจอ้างว่าเดี๋ยวมาแก้แต่เอาเข้าจริงด้วยความเร่งของเวลาสิ่งเหล่านี้กลับไม่ถูกแก้ไข โดยหากคุณพบว่าระบบไม่ได้มีการพิสูจน์ตัวตนอย่างมั่นคงปลอดภัยคุณต้องจี้ให้ผู้รับผิดชอบเข้ามาแก้ไขไม่ใช่ยอมรับความเสี่ยง
การบริหารจัดการ Credential
แน่นอนว่าการเก็บ Credential เป็น Plain text หรือ Hard-coded ฝังในสคิร์ปต์นั้นไม่เป็นผลดี จึงเกิดระบบบริหารจัดการ Credential ขึ้นมาแต่ข้อสำคัญคือเราก็ต้องรู้ว่าการเก็บ Credential เหล่านั้นมีความมั่นคงปลอดภัยแค่ไหนอย่างไร ดังนั้นสิ่งที่ต้องตั้งคำถามในระบบบริหารจัดการ Credential คือ
-
ใช้กระบวนการเข้ารหัสอะไร
-
การเข้ารหัสนั้นเกิดขึ้นตั้งแต่จุดเก็บข้อมูล ระหว่างส่ง และตอนประมวลผลด้วยหรือไม่ (Rest-Transit-Process)
-
จัดการหมุนเวียน Credential อย่างไร
-
รองรับการทำ 2 Factor Authentication หรือไม่
-
ทางเลือกในการกู้คืนและเมื่อเกิดความผิดพลาดอย่างไรบ้าง
-
มีการรองรับกับระบบพิสูจน์ตัวตนจากภายนอกแค่ไหน อะไรบ้าง
-
มีกระบวนการทำงานอย่างไร
ติดตาม Log ที่เกิดขึ้นด้วย
การบริหารจัดการ Credential และการส่งผ่านที่ดีนั้นยังตอบโจทย์ได้ไม่ครบ หาก Log นั้นตั้งค่าได้ไม่ถูกต้อง ยกตัวอย่างเหตุการณ์คือ ในเดือนพฤษาคมที่ผ่านมาทวิตเตอร์ได้เตือนผู้ใช้ให้เปลี่ยนรหัสผ่านเพราะไปพบว่า Log มีการบันทึกรหัสผ่านของผู้ใช้ ดังนั้นนอกเหนือจากโค้ดตัวเองแล้ว DevOps ต้องเข้าใจการเก็บ Log ด้วยว่ามีข้อมูลอะไรที่ถูกเก็บไว้บ้าง
ให้สิทธิ์ต่ำสุดไว้ก่อน
คอนเซปต์นี้เป็นหนึ่งในหัวข้อของ CISSP ด้วย (Least Privilege) คือช่วยจำกัดความเสียหายหากบัญชีใดถูกแฮ็กหรือขโมยไปได้หรือตั้งใจละเมิดนอกเหนือหน้าที่ ซึ่งการค้นหาและตรวจสอบกระบวนการนี้อาจกินเวลาไม่น้อยในทางปฏิบัติ อย่างไรก็ตามการใช้งานระบบบริหารจัดการ Credential ก็เป็นส่วนหนึ่งที่จะช่วยลดเวลาลงบ้าง
Credential ของ Self-Service Deployment
หากเรามีบริการ Self-service เพื่ออำนวยความสะดวกให้กับผู้ใช้งาน เช่น สร้าง VM หรือ instance ได้เองผ่านหน้า Portal เราก็ต้องมีการจัดการ Credential ตรงนี้ด้วยคือผู้ใช้มักต้องการสิทธิ์ของ Local Admin ซึ่งเราควรจัดการให้ดีโดยต้องไม่ให้ผู้ใช้มีสิทธิ์ไปแก้ไขเปลี่ยนแปลงบัญชีเหล่านั้นด้วยตัวเองได้
ที่มา : https://www.networkcomputing.com/network-security/improving-devops-security-practices/1110934485
TechTalkThai ศูนย์รวมข่าว Enterprise IT ออนไลน์แห่งแรกในประเทศไทย






