สวัสดีครับผู้อ่านทุกท่านในบทความนี้ผู้เขียนจะพาผู้อ่านทุกท่านมารู้จักกับ DevSecOps และการทำ DevSecOps บน AWS กัน จริง ๆ บทความนี้ไม่ได้เป็นบทความแรกของ Cloud HM ที่พูดถึง DevSecOps นะครับ เพราะถ้าหากใครที่ติดตามอ่านบทความของเราอย่างสม่ำเสมอจะต้องจำได้แน่ ๆ เลยว่ามีบทความก่อนหน้านี้ที่อธิบายเกี่ยวกับ DevSecOps (ผมไม่ได้เขียนนะ แต่เป็นอีกอีกท่านนึงที่เขียนครับ ซึ่งเขียนได้ดีกว่าผมอีก 555+) ถ้าใครยังไม่ได้อ่านก็ไปตำกันได้ที่ DevSecOps คืออะไร? สำคัญอย่างไรในยุคนี้ – Cloud HM
Credit: AWS Blog
สวัสดี DevSecOps
ก่อนอื่นเลยเรามาดูนิยามสั้น ๆ ของ DevSecOps กันก่อนซึ่งผมขอ Copy มาจากบทความก่อนหน้านี้ซึ่งได้อธิบายไว้สั้น ๆ กระชับ ๆ ดังนี้ครับ
“DevSecOps คือการ “เพิ่ม” ข้อบังคับเครื่องมือหรือขั้นตอน ด้านความปลอดภัยเข้าไปร่วมใน Flow ของ DevOps ด้วย ทำให้ขั้นตอนทั้งระบบ DevOps นั้น เร็ว มีประสิทธิภาพ และยังปลอดภัย”
จริง ๆ แล้วสิ่งที่เพิ่มเข้ามานั่นก็คือคำว่า Sec ซึ่งย่อมาจาก Security นั่นคือเราจัดการหรือทำกระบวนการทุกอย่างเหมือนเดิมเลยเพียงแต่ว่าเราจะต้องมาให้ความสำคัญและความสนใจไปยังความปลอดภัยของกระบวนการต่าง ๆ ให้มากขึ้น
กรณีศึกษากับการเพิ่มความปลอดภัยให้กระบวนการทำ Machine Learning บน AWS
จาก Workflow ที่แสดงให้ดูด้านบนจะเห็นว่าถ้าหากเราต้องการที่จะเพิ่มความปลอดภัยเข้าไปให้กับ Stage (ระยะ) แต่ละอันของ Machine Learning (ML) เราสามารถใช้ตัววัดความปลอดภัยแบบง่าย ๆ ได้ ซึ่งตัวกำหนดความปลอดภัยนี้สามารถปกป้องการทำงานของ ML workflow ได้และเพิ่มความคล่องตัวให้กับระบบมากขึ้น
- เราเริ่มด้วย “Data Poisoning” กันครับ ซึ่งจะเกิดขึ้นคือเมื่อโมเดล ML ของเรานั้นถูกเทรนด้วยข้อมูลที่ไม่ดี ก็จะทำให้ความสามารถในการทำนายของโมเดลนั้น drop ลง
- Membership inference ซึ่งคือความสามารถในการบอกว่าการบันทึกของข้อมูลนั้นถูกใส่เข้าไปในชุดข้อมูลที่ถูกใช้ในการเทรนโมเดล ML ไหม
- Model Inversion ซึ่งก็คือการทำวิศวกรรมของฟีเจอร์ของโมเดลแบบย้อนกลับ
7 วิธีในการเพิ่มความปลอดภัยให้กับ Machine Learning Workflow ของคุณ
- Launch โมเดล ML ด้วย VPC
VPC นั้นเป็นตัวที่คอยควบคุมการจราจรของเน็ตเวิร์ต ดังนั้นพยายามใช้งาน ML model ภายใน VPC ที่สร้างขึ้นมาโดยเฉพาะนะครับ จะได้ลดปัญหาเรื่องความเสี่ยงการโดนโจมตีได้
- พยายามให้สิทธิแบบจำกัดกับคนในทีมในการควบคุมการเข้าถึงโมเดล ML
ไม่ใช่ว่าเราไม่ไว้ใจคนในทีม แต่ว่าถ้าหากเราให้สิทธิ์ในการเข้าถึงทุกขั้นตอนของการทำ ML ให้กับทุกคนในทีมแล้วดันเกิดปัญหาขึ้นมาก็จะไม่คุ้มครับ
- ใช้ Data Encrytion หรือการเข้ารหัสข้อมูล
เราควรใช้การเข้ารหัสข้อมูลนะครับ แม้แต่การจำกัดสิทธิ์แบบง่าย ๆ เช่น การเข้าไปดูหรืออ่านไฟล์ข้อมูลก็เป็นเรื่องสำคัญ โดยตารางด้านบนแสดงฟีเจอร์ของ AWS CMK ซึ่งเราสามารถใช้ในการเข้ารหัสข้อมูลได้
- ใช้ผู้ช่วยการความปลอดภัย (Security Manager) ในการกำหนด Credential
สำหรับข้อนี้ไม่ต้องอธิบายอะไรมากเพราะว่าตรงตัวเลยครับ เราใช้ Credential ดังนั้นเราก็ต้องจัดการ Credential ให้ถูกต้อง
- คอยสอดส่อง Input และ Output อยู่สม่ำเสมอ
เมื่อเราทำการ launch หรือเริ่มการทำงานของ ML workflow แล้ว เราก็ควรจะต้องคอยตรวจสอบ Input ที่ใส่เข้าไปและ Output ที่ถูกทำนายออกมาด้วย เพราะถ้าหากเราไม่สอดส่องดูแลเราก็อาจจะได้ข้อมูลที่ผิดพลาดออกมาได้ครับ
- ทำการบันทุก Logging ทุกครั้งในการเข้าถึงโมเดล ML
การที่เรามี Logging หรือบันทุกกิจกรรมที่เกิดขึ้นจะช่วยให้เราสามารถติดตามความเคลื่อนไหวของสิ่งผิดปกติได้ในกรณีที่ระบบมีปัญหาครับ
- ใช้ Version Control
การใช้ version control นั้นเป็นเรื่องที่สำคัญมาก ๆ เพราะถ้าเรามีสิ่งนี้แล้วเวลาที่มีปัญหาเราสามารถจัดการเลือกข้อมูลตาม timeline ที่ต้องการได้ครับ
สรุปก็คือ DevSecOps นั้นเป็นเพียงแค่แนวคิดหรือคอนเส็ปที่เราควรจะนำไปปรับใช้กับการทำงานของ DevOps ซึ่งจะช่วยทำให้การทำงานของเราและเพื่อน ๆ ในทีมนั้นเป็นไปอย่างลื่นไหลและมีประสิทธิภาพครับ
อ่านมาจนถึงจุดนี้แล้วถ้าหากผู้อ่านมีความสนใจในบริการของ AWS โดยเฉพาะถ้าอยากจะปรึกษาเกี่ยวกับให้บริการและผลิตภัณฑ์ต่าง ๆ ของ AWS ที่จะเข้ามาช่วยตอบโจทย์การทำธุรกิจของลูกค้าหรือผู้อ่านได้ ก็สามารถติดต่อ Cloud HM ได้โดยตรงเลยครับ เพราะเรามีการให้บริการ Cloud Platform ครบวงจร ทั้ง Domestic Cloud และ Global Cloud เพื่อตอบสนองความต้องการรอบด้านของลูกค้าครับ
— Cloud HM