ทำ DevSecOps ง่าย ๆ ด้วย AWS

สวัสดีครับผู้อ่านทุกท่านในบทความนี้ผู้เขียนจะพาผู้อ่านทุกท่านมารู้จักกับ DevSecOps และการทำ DevSecOps บน AWS กัน จริง ๆ บทความนี้ไม่ได้เป็นบทความแรกของ Cloud HM ที่พูดถึง DevSecOps นะครับ เพราะถ้าหากใครที่ติดตามอ่านบทความของเราอย่างสม่ำเสมอจะต้องจำได้แน่ ๆ เลยว่ามีบทความก่อนหน้านี้ที่อธิบายเกี่ยวกับ DevSecOps (ผมไม่ได้เขียนนะ แต่เป็นอีกอีกท่านนึงที่เขียนครับ ซึ่งเขียนได้ดีกว่าผมอีก 555+) ถ้าใครยังไม่ได้อ่านก็ไปตำกันได้ที่ DevSecOps คืออะไร? สำคัญอย่างไรในยุคนี้ – Cloud HM

Credit: AWS Blog

สวัสดี DevSecOps

ก่อนอื่นเลยเรามาดูนิยามสั้น ๆ ของ DevSecOps กันก่อนซึ่งผมขอ Copy มาจากบทความก่อนหน้านี้ซึ่งได้อธิบายไว้สั้น ๆ กระชับ ๆ ดังนี้ครับ

“DevSecOps คือการ “เพิ่ม” ข้อบังคับเครื่องมือหรือขั้นตอน ด้านความปลอดภัยเข้าไปร่วมใน Flow ของ DevOps ด้วย ทำให้ขั้นตอนทั้งระบบ DevOps นั้น เร็ว มีประสิทธิภาพ และยังปลอดภัย”

Credit: tech.gsa.gov

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

กรณีศึกษากับการเพิ่มความปลอดภัยให้กระบวนการทำ Machine Learning บน AWS

Credit: aws.amazon.com

จาก Workflow ที่แสดงให้ดูด้านบนจะเห็นว่าถ้าหากเราต้องการที่จะเพิ่มความปลอดภัยเข้าไปให้กับ Stage (ระยะ) แต่ละอันของ Machine Learning (ML) เราสามารถใช้ตัววัดความปลอดภัยแบบง่าย ๆ ได้ ซึ่งตัวกำหนดความปลอดภัยนี้สามารถปกป้องการทำงานของ ML workflow ได้และเพิ่มความคล่องตัวให้กับระบบมากขึ้น

  1. เราเริ่มด้วย “Data Poisoning” กันครับ ซึ่งจะเกิดขึ้นคือเมื่อโมเดล ML ของเรานั้นถูกเทรนด้วยข้อมูลที่ไม่ดี ก็จะทำให้ความสามารถในการทำนายของโมเดลนั้น drop ลง
  2. Membership inference ซึ่งคือความสามารถในการบอกว่าการบันทึกของข้อมูลนั้นถูกใส่เข้าไปในชุดข้อมูลที่ถูกใช้ในการเทรนโมเดล ML ไหม
  3. Model Inversion ซึ่งก็คือการทำวิศวกรรมของฟีเจอร์ของโมเดลแบบย้อนกลับ
Devsecops and model development
แผนภาพแสดงการทำงาน DevSecOps กับ Model Development
Credit: SEI

7 วิธีในการเพิ่มความปลอดภัยให้กับ Machine Learning Workflow ของคุณ

  1. Launch โมเดล ML ด้วย VPC

VPC นั้นเป็นตัวที่คอยควบคุมการจราจรของเน็ตเวิร์ต ดังนั้นพยายามใช้งาน ML model ภายใน VPC ที่สร้างขึ้นมาโดยเฉพาะนะครับ จะได้ลดปัญหาเรื่องความเสี่ยงการโดนโจมตีได้

  1. พยายามให้สิทธิแบบจำกัดกับคนในทีมในการควบคุมการเข้าถึงโมเดล ML

ไม่ใช่ว่าเราไม่ไว้ใจคนในทีม แต่ว่าถ้าหากเราให้สิทธิ์ในการเข้าถึงทุกขั้นตอนของการทำ ML ให้กับทุกคนในทีมแล้วดันเกิดปัญหาขึ้นมาก็จะไม่คุ้มครับ

  1. ใช้ Data Encrytion หรือการเข้ารหัสข้อมูล
Data encrytion

เราควรใช้การเข้ารหัสข้อมูลนะครับ แม้แต่การจำกัดสิทธิ์แบบง่าย ๆ เช่น การเข้าไปดูหรืออ่านไฟล์ข้อมูลก็เป็นเรื่องสำคัญ โดยตารางด้านบนแสดงฟีเจอร์ของ AWS CMK ซึ่งเราสามารถใช้ในการเข้ารหัสข้อมูลได้

  1. ใช้ผู้ช่วยการความปลอดภัย (Security Manager) ในการกำหนด Credential

สำหรับข้อนี้ไม่ต้องอธิบายอะไรมากเพราะว่าตรงตัวเลยครับ เราใช้ Credential ดังนั้นเราก็ต้องจัดการ Credential ให้ถูกต้อง

  1. คอยสอดส่อง Input และ Output อยู่สม่ำเสมอ

เมื่อเราทำการ launch หรือเริ่มการทำงานของ ML workflow แล้ว เราก็ควรจะต้องคอยตรวจสอบ Input ที่ใส่เข้าไปและ Output ที่ถูกทำนายออกมาด้วย เพราะถ้าหากเราไม่สอดส่องดูแลเราก็อาจจะได้ข้อมูลที่ผิดพลาดออกมาได้ครับ

  1. ทำการบันทุก Logging ทุกครั้งในการเข้าถึงโมเดล ML

การที่เรามี Logging หรือบันทุกกิจกรรมที่เกิดขึ้นจะช่วยให้เราสามารถติดตามความเคลื่อนไหวของสิ่งผิดปกติได้ในกรณีที่ระบบมีปัญหาครับ

  1. ใช้ Version Control

การใช้ version control นั้นเป็นเรื่องที่สำคัญมาก ๆ เพราะถ้าเรามีสิ่งนี้แล้วเวลาที่มีปัญหาเราสามารถจัดการเลือกข้อมูลตาม timeline ที่ต้องการได้ครับ

สรุปก็คือ DevSecOps นั้นเป็นเพียงแค่แนวคิดหรือคอนเส็ปที่เราควรจะนำไปปรับใช้กับการทำงานของ DevOps ซึ่งจะช่วยทำให้การทำงานของเราและเพื่อน ๆ ในทีมนั้นเป็นไปอย่างลื่นไหลและมีประสิทธิภาพครับ

อ่านมาจนถึงจุดนี้แล้วถ้าหากผู้อ่านมีความสนใจในบริการของ AWS โดยเฉพาะถ้าอยากจะปรึกษาเกี่ยวกับให้บริการและผลิตภัณฑ์ต่าง ๆ ของ AWS ที่จะเข้ามาช่วยตอบโจทย์การทำธุรกิจของลูกค้าหรือผู้อ่านได้ ก็สามารถติดต่อ Cloud HM ได้โดยตรงเลยครับ เพราะเรามีการให้บริการ Cloud Platform ครบวงจร ทั้ง Domestic Cloud และ Global Cloud เพื่อตอบสนองความต้องการรอบด้านของลูกค้าครับ

— Cloud HM