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

[s_stat style="format"]
[s_stat style="format"]

สวัสดีครับ สำหรับเนื้อหาของ 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