เพิ่มความปลอดภัยยิ่งขึ้นด้วยบริการ DevSecOps จาก Microsoft Azure

สวัสดีครับ สำหรับเนื้อหาของ Blog นี้ Cloud HM จะพามารู้จักกับบริการอย่าง Azure นั้นมีเทคโนโลยีอะไรบ้าง ที่จะช่วยสนับสนุนให้ Developer หรือ DevSecOps นั้นทำงานได้อย่างมีประสิทธิภาพ แต่ก่อนจะไปเล่าเรื่องเทคโนโลยีของ Azure นั้น อาจจะต้องมาทำความรู้จักกับ DevOps หรือ DevSecOps กันก่อนดีกว่าครับ

ย้อนกลับไปในช่วงที่มีคำที่ฮิตติดหูในวงการ IT อย่าง DevOps และ Agile เข้ามานั้นเป็นจุดที่ทำให้นักพัฒนาสามารถที่จะพัฒนาระบบและส่งมอบ Software ได้รวดเร็วขึ้นเพื่อตอบสนองความต้องการของลูกค้า ซึ่งในการพัฒนานั้นก็มักจะให้ความสำคัญกับฟีเจอร์การทำงานของระบบเป็นหลัก แล้วก็มักจะเกิดคำถามตามมาว่าระบบของเรานั้นปลอดภัยดีพอหรือยัง ซึ่งมักเกิดขึ้นในช่วงท้ายของโปรเจกต์ ทำให้ระบบที่ทำมานั้นพบปัญหาหรือข้อบกพร่องเรื่องความปลอดภัยและช่องโหว่ หลังจากได้ทำ Pentration Testing (การจำลองเหตุการณ์ว่ามีการโจมตีระบบหรือไม่ เพื่อที่จะหาช่องโหว่หรือจุดอ่อนของระบบป้องกัน) ซึ่งหากพบในหลังของโปรเจกต์ก็อาจจะทำให้ไม่สามารถที่จะส่งมอบซอฟต์แวร์ได้ทันเวลา ดังนั้นแล้วจะมีวิธีการไหนบ้างที่จะช่วยแก้ปัญหาหรือช่วยลดปัญหานั้นได้ งั้นลองมาดู DevSecOps

DevSecOps คืออะไร เป็นคำที่ใช้เรียกการรวมกันของ Dev (Development), Sec (Security) และ Ops (Operations) โดยปกติจะพบคำว่า DevOps ก็จะเป็นการทำงานของ Dev และ Ops เพื่อเพิ่มประสิทธิภาพในการทำงานและส่งมอบซอฟต์แวร์ได้อย่างรวดเร็ว และเมื่อ DevOps รวมเข้ากับ Sec ก็จะหมายความว่าในการพัฒนานั้นก็จะทำการเพิ่ม Security เข้าไปซึ่งจะนำมาช่วยในเรื่องการป้องกันการโจมตีจากผู้ไม่หวังดี ลดช่องโหว่ และทำให้ระบบนั้นทำงานได้อย่างมีประสิทธิภาพ

3 องค์ประกอบของ DevSecOps

  • Development จะเน้นให้ความสำคัญไปในเรื่องการโค้ดและการพัฒนา
  • Security จะเน้นให้ความสำคัญในเรื่องความปลอดภัย หาช่องโหว่และแก้ไข
  • Operations จะเน้นให้ความสำคัญกับปฏิบัติการ ตรวจสอบ และแก้ไขปัญหาใด ๆ ที่เกิดขึ้นจากซอฟต์แวร์

DevSecOps มีความรับผิดชอบอะไรบ้าง

●  นำกระบวนการด้านความปลอดภัยเข้าไปร่วมกับขั้นตอนการพัฒนาซอฟต์แวร์

●  ระบุความเสี่ยงหรือช่องโหว่ที่มีโอกาสที่จะเกิดขึ้นและพัฒนาวิธีการที่จะป้องกัน

●  สอดส่องตรวจสอบภัยคุกคามด้านความปลอดภัย

●  ปฏิบัติตามพื้นฐานของด้านความปลอดภัย

●  ทดสอบวิธีการ กลยุทธ์ที่เลือกใช้งาน หรือเครื่องมือที่ใช้นั้นให้เหมาะสมกับระบบ

●  อัปเดตข้อมูลด้านความปลอภัยและช่องโหว่อยู่สม่ำเสมอ เพื่อใช้ในการทำความเข้าใจปัญหา ช่องโหว่ และให้ง่ายต่อการแก้ไข

●  ทำเอกสารและรายงานเกี่ยวกับกระบวนการบำรุงรักษาด้านความปลอดภัย

●  พยายามทำให้งานที่ต้องทำซ้ำ ๆ ให้สามารถที่จะเปลี่ยนมาเป็นงานอัตโนมัติ

สิ่งที่ DevSecOps นั้นควรที่จะทำ

  1. ใช้เครื่องมือจัดเก็บ Key และ Value

Secret เป็นข้อมูลที่มีความอ่อนไหวและควรที่จะจัดเก็บให้เป็นความลับ เช่น รหัสผ่าน หรือ API Key, DB Password และ Service Password ซึ่งทาง Azure ก็มีบริการที่ใช้ในการจัดเก็บ Secret นั้นก็คือ Azure Key Valut

  1. ใช้ Role-Based Access Control (RBAC) ในการควบคุมสิทธิ์ในการเข้าถึงข้อมูล

Role-based access control (RBAC) คือประเภทของการกำจัดการใช้งานขึ้นอยู่กับตำแหน่งที่ของผู้ใช้ ซึ่งการจำกัดสิทธิ์ทำให้ผู้ใช้สามารถเข้าถึงข้อมูลได้ตามสิทธิ์

  1. ใช้เครื่องมือ Logging และ Monitoring

เครื่องมือ Logging และ Monitoring เป็นเครื่องมือที่สามารถใช้ในการรวบรวมข้อมูลกิจกรรมที่เกิดขึ้นในระบบ ซึ่งข้อมูลที่ได้สามารถที่จะใช้ในการวิเคราะห์หรือตรวจสอบด้านความปลอดภัย ใน Azure นั้นก็จะมีบริการเกี่ยวกับการทำ Logging และ Monitoring เช่น Activity log และ Monitor Metrics

  1. ทำ Shift Left

Shift Left เป็นกระบวนการตรวจสอบช่องโหว่ในขั้นตอนก่อนหน้าพัฒนาซอฟต์แวร์ ด้วยการทำตามกระบวนการ ทีมซอฟต์แวร์สามารถป้องกันปัญหาด้านความปลอดภัยที่ตรวจไม่พบ

  1. Automation Testing อย่างสม่ำเสมอ

การทำ Automation Testing อย่างสม่ำเสมอจะทำให้เพื่อลดความเสี่ยงจากข้อผิดพลาด และเพิ่มความปลอดภัยให้กับระบบ

  1. จัดเตรียม Continuous Integration And Continuous Deployment (CICD) ตั้งแต่เริ่มโปรเจกต์

สำหรับการทำ CI/CD นั้นเป็นสิ่งที่จะเป็นอย่างยิ่งในการส่งโค้ดไปยัง Environment ต่าง ๆ ซึ่งนอกจากจะสามารถส่งโค้ดได้แล้ว ยังเป็นการตรวจสอบความถูกต้อง ไม่ว่าจะเป็นการทดสอบ Unit Test หรือ Automate Test ซึ่งทำให้ได้ Feedback กลับมาได้เร็ว ทำให้ทีมพัฒนาสามารถแก้ไขคุณภาพของโค้ดและลดเวลาในการส่งมอบได้มากขึ้น

  1. ใช้ Automation of Dashboard ในการตรวจดูกิจกรรมที่เกิดขึ้นในระบบ

การทำ Automation of Dashboard คือการตรวจสอบสถานะและประสิทธิภาพการทำงานของระบบและกิจกรรมที่เกิดขึ้นให้เป็น real-time ก็จะสามารถตรวจสอบสถานะและประสิทธิภาพได้อย่างรวดเร็ว ซึ่งเครื่องมือที่สามารถใช้ได้เช่น Grafana, Kibana และ Prometeus

บริการจาก Azure สำหรับ DevOps และ DevSecOps

  1. Azure DevOps

Azure DevOps เป็นบริการทาง Azure ที่ช่วยให้ทีมพัฒนาสามารถที่จะจัดการวางแผนและร่วมมือกันในการพัฒนาซอฟต์แวร์ ไม่ว่าจะเป็นการ Build และ Deploy ซอฟต์แวร์หรือแอปพลิเคชัน และแก้ไขปัญหากระบวนการทำงานที่ซับซ้อน ซึ่งก็จะช่วยให้นักพัฒนาสามารถที่จะมุ่งเน้นเรื่องระบบของตนเองและปล่อยให้การ Deploy เป็นหน้าที่ของ Azure โดยมีองค์ประกอบและความสามารถ Azure DevOps

  1. Azure Pipelines

Azure Pipelines เป็นบริการทาง Azure ที่ให้นักพัฒนาสามารถ Build, Test และ Deploy และสามารถที่จะใช้ได้ในทุกภาษา และมีหลากหลายแฟลตฟอร์ม ทำให้กระบวนการที่ทำซ้ำ ๆ ให้มีคุณภาพ และ Azure Piplines ก็เป็นส่วนประกอบของบริการ Azure DevOps โดยมีองค์ประกอบและความสามารถ Azure Pipelines

  1. Azure Container Registry(ACR)

Azure Container Registry เป็นบริการทาง Azure ที่ใช้ในการจัดเก็บ Containers Image บน Azure และข้อดีคือทำให้สามารถใช้ Container Registry ที่จัดเก็บไว้นั้นไปใช้ยังบริการอื่น ๆ ที่ทาง Azure นั้นมีบริการได้อีกด้วย โดยมีองค์ประกอบและความสามารถ Azure Container Registry (ACR)

  1. Azure Kubernetes Service (AKS)

Azure Kubernetes Service เป็นบริการที่จัดการ Container Orchestration ซึ่งสามารถที่จะทำการ Deploying, ควบคุมและจัดการ และเพิ่มหรือลดขนาดของแอปพลิเคชันที่ใช้ Kubernetes(เป็นซอฟต์แวร์ Open-Source ที่สามารถปรับใช้ ปรับขนาด และการจัดการแอปพลิเคชันแบบคอนเทนเนอร์) โดยมีองค์ประกอบและความสามารถ Azure Kubernetes Service (AKS)

  1. Azure Key Vault

Azure Key Vault เป็นบริการของทาง Azure ที่บริการด้านการจัดเก็บข้อมูลลับหรือข้อมูลที่มีความสำคัญได้อย่างปลอดภัย ซึ่งข้อมูลลับจะเป็นสิ่งที่ไม่อยากให้บุคคลภายนอกหรือบุคคลที่ไม่มีสิทธิ์เข้าถึงข้อมูลนั้นได้รับรู้ เช่น API Keys, Password และ Certificate ต่าง ๆ ข้อมูลในการเชื่อมต่อฐานข้อมูล และตัวบริการยังสามารถที่จะตรวจดูได้ว่า Key ที่ได้สร้างไปนั้นถูกเรียกใช้งานไปเมื่อไรและอย่างไร

  1. Azure Monitor

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

สถานณ์การที่เกิดขึ้นจริงในสายงาน DevSecOps และ DevOps

          ย้อนกลับไปตอนสมัยมหาลัย จะมีอยู่ไม่กี่ช่วงที่เว็บมหาลัยจะเข้าไม่ได้หรือที่เรียกว่า ‘เว็บล่ม’ นั่นก็คือช่วงลงทะเบียนเรียน ถึงแม้ว่าจะแก้ปัญหาด้วยการให้ลงทะเบียนตามชั้นไปก็แล้วแต่ก็ยังแก้ปัญหาได้ไม่เต็มที่ มาดูกันว่ามันมีสาเหตุมาจากอะไร เนื่องจากวันลงทะเบียนนั้นเหล่านักศึกษาก็จะทำการพยายามเข้าไปเพื่อจับจองรายวิชาที่ตัวเองจะเลือกซึ่งแต่ละมหาลัยก็มีนักศีกษามากมาย มีหลายวิชาทำให้ Request ที่เข้ามาอย่างถาโถมนั้นมากเกินกว่าที่เครื่องเซิร์ฟเวอร์จะรองรับกับ Request ที่เข้ามาได้ ลองสมมุติมหาลัย A มีเครื่อง Host ด้วยตัวเองซึ่งมี CPU 8 core, Ram 16 GB ซึ่งอาจจะรับ Request ที่เข้ามาได้ประมาณ 10,000/1 วินาที หากถึงวันลงทะเบียนมี Request มา 100,000/1 วินาที ก็อาจเจอ Request Timeout กันได้เพราะเครื่องเซิร์ฟเวอร์รับไม่ไหว

                ถ้าจะให้เพิ่มเครื่องสเปคเดียวกันหรือสูงกว่าก็จะใช้งบประมาณเยอะและจัดการยาก ซึ่งหากลองเปลี่ยนมาใช้ Cloud อย่างเช่น Microsoft Azure ซึ่งทาง Azure นั้นมี Cloud เซิร์ฟเวอร์คอยให้บริการตามความต้องการและงบประมาณ โอเคกลับเข้าเรื่องกันต่อ สมมติว่าเช่า Cloud เซิร์ฟเวอร์ CPU 8 core, Ram 16 GB เพื่อที่จะรองรับโหลดวันธรรมดาให้ใช้งานได้ และถ้าเกิดเหตุการณ์วันลงทะเบียนเรียนที่ต้องรองรับ Request เยอะ ทาง Azure ก็มีบริการที่สามารถเพิ่มหรือลด ทั้งขนาดของเครื่องหรือจำนวนได้ตามความต้องการเพียงแค่ไปตั้งค่าไว้ ก็จะทำให้ลดโอกาสที่จะเกิดการล่ม และอีกทั้งยังดูแลคอยตรวจสอบข้อมูลการใช้งานได้ง่ายผ่าน Azure Dashboard และ Azure Monitoring หากว่ามีความกังวลในด้านค่าใช้จ่ายก็สามารถใช้ Azure Cost Management ในการจัดการด้านค่าใช้จ่ายได้

Summary

สรุป DevSecOps นั้นเป็นคำที่ใช้เรียกการรวมกันของ Dev (Development), Sec (Security) และ Ops (Operations) บางที่อาจจะมองเป็นตำแหน่งหรือบางที่อาจจะมองเป็นกระบวนการ แต่การมี DevSecOps นั้นก็จะช่วยทำให้ประสิทธิภาพในการทำงานและส่งมอบได้อย่างรวดเร็ว และการพัฒนานั้นก็จะทำการเพิ่มความปลอดภัยและลดช่องโหว่ที่อาจจะรู้ตัวก็ต่อเมื่อจะส่งมอบซอฟต์แวร์ไปแล้วก็ได้

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

References:

https://aws.amazon.com/th/what-is/devsecops/

https://www.borntodev.com/2022/07/21/devsecops-มันคืออะไร/

https://www.redhat.com/en/topics/devops/what-is-devsecops#:~:text=DevSecOps

https://www.practical-devsecops.com/devsecops-engineer/

https://www.blockdit.com/posts/6449323699cfc86879104eaf

https://www.infopulse.com/blog/devsecops-azure-aws

— Cloud HM