สวัสดีครับ สำหรับเนื้อหาของ 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 นั้นควรที่จะทำ
- ใช้เครื่องมือจัดเก็บ Key และ Value
Secret เป็นข้อมูลที่มีความอ่อนไหวและควรที่จะจัดเก็บให้เป็นความลับ เช่น รหัสผ่าน หรือ API Key, DB Password และ Service Password ซึ่งทาง Azure ก็มีบริการที่ใช้ในการจัดเก็บ Secret นั้นก็คือ Azure Key Valut
- ใช้ Role-Based Access Control (RBAC) ในการควบคุมสิทธิ์ในการเข้าถึงข้อมูล
Role-based access control (RBAC) คือประเภทของการกำจัดการใช้งานขึ้นอยู่กับตำแหน่งที่ของผู้ใช้ ซึ่งการจำกัดสิทธิ์ทำให้ผู้ใช้สามารถเข้าถึงข้อมูลได้ตามสิทธิ์
- ใช้เครื่องมือ Logging และ Monitoring
เครื่องมือ Logging และ Monitoring เป็นเครื่องมือที่สามารถใช้ในการรวบรวมข้อมูลกิจกรรมที่เกิดขึ้นในระบบ ซึ่งข้อมูลที่ได้สามารถที่จะใช้ในการวิเคราะห์หรือตรวจสอบด้านความปลอดภัย ใน Azure นั้นก็จะมีบริการเกี่ยวกับการทำ Logging และ Monitoring เช่น Activity log และ Monitor Metrics
- ทำ Shift Left
Shift Left เป็นกระบวนการตรวจสอบช่องโหว่ในขั้นตอนก่อนหน้าพัฒนาซอฟต์แวร์ ด้วยการทำตามกระบวนการ ทีมซอฟต์แวร์สามารถป้องกันปัญหาด้านความปลอดภัยที่ตรวจไม่พบ
- Automation Testing อย่างสม่ำเสมอ
การทำ Automation Testing อย่างสม่ำเสมอจะทำให้เพื่อลดความเสี่ยงจากข้อผิดพลาด และเพิ่มความปลอดภัยให้กับระบบ
- จัดเตรียม Continuous Integration And Continuous Deployment (CICD) ตั้งแต่เริ่มโปรเจกต์
สำหรับการทำ CI/CD นั้นเป็นสิ่งที่จะเป็นอย่างยิ่งในการส่งโค้ดไปยัง Environment ต่าง ๆ ซึ่งนอกจากจะสามารถส่งโค้ดได้แล้ว ยังเป็นการตรวจสอบความถูกต้อง ไม่ว่าจะเป็นการทดสอบ Unit Test หรือ Automate Test ซึ่งทำให้ได้ Feedback กลับมาได้เร็ว ทำให้ทีมพัฒนาสามารถแก้ไขคุณภาพของโค้ดและลดเวลาในการส่งมอบได้มากขึ้น
- ใช้ Automation of Dashboard ในการตรวจดูกิจกรรมที่เกิดขึ้นในระบบ
การทำ Automation of Dashboard คือการตรวจสอบสถานะและประสิทธิภาพการทำงานของระบบและกิจกรรมที่เกิดขึ้นให้เป็น real-time ก็จะสามารถตรวจสอบสถานะและประสิทธิภาพได้อย่างรวดเร็ว ซึ่งเครื่องมือที่สามารถใช้ได้เช่น Grafana, Kibana และ Prometeus
บริการจาก Azure สำหรับ DevOps และ DevSecOps
- Azure DevOps
Azure DevOps เป็นบริการทาง Azure ที่ช่วยให้ทีมพัฒนาสามารถที่จะจัดการวางแผนและร่วมมือกันในการพัฒนาซอฟต์แวร์ ไม่ว่าจะเป็นการ Build และ Deploy ซอฟต์แวร์หรือแอปพลิเคชัน และแก้ไขปัญหากระบวนการทำงานที่ซับซ้อน ซึ่งก็จะช่วยให้นักพัฒนาสามารถที่จะมุ่งเน้นเรื่องระบบของตนเองและปล่อยให้การ Deploy เป็นหน้าที่ของ Azure โดยมีองค์ประกอบและความสามารถ Azure DevOps
- Azure Pipelines
Azure Pipelines เป็นบริการทาง Azure ที่ให้นักพัฒนาสามารถ Build, Test และ Deploy และสามารถที่จะใช้ได้ในทุกภาษา และมีหลากหลายแฟลตฟอร์ม ทำให้กระบวนการที่ทำซ้ำ ๆ ให้มีคุณภาพ และ Azure Piplines ก็เป็นส่วนประกอบของบริการ Azure DevOps โดยมีองค์ประกอบและความสามารถ Azure Pipelines
- Azure Container Registry(ACR)
Azure Container Registry เป็นบริการทาง Azure ที่ใช้ในการจัดเก็บ Containers Image บน Azure และข้อดีคือทำให้สามารถใช้ Container Registry ที่จัดเก็บไว้นั้นไปใช้ยังบริการอื่น ๆ ที่ทาง Azure นั้นมีบริการได้อีกด้วย โดยมีองค์ประกอบและความสามารถ Azure Container Registry (ACR)
- Azure Kubernetes Service (AKS)
Azure Kubernetes Service เป็นบริการที่จัดการ Container Orchestration ซึ่งสามารถที่จะทำการ Deploying, ควบคุมและจัดการ และเพิ่มหรือลดขนาดของแอปพลิเคชันที่ใช้ Kubernetes(เป็นซอฟต์แวร์ Open-Source ที่สามารถปรับใช้ ปรับขนาด และการจัดการแอปพลิเคชันแบบคอนเทนเนอร์) โดยมีองค์ประกอบและความสามารถ Azure Kubernetes Service (AKS)
- Azure Key Vault
Azure Key Vault เป็นบริการของทาง Azure ที่บริการด้านการจัดเก็บข้อมูลลับหรือข้อมูลที่มีความสำคัญได้อย่างปลอดภัย ซึ่งข้อมูลลับจะเป็นสิ่งที่ไม่อยากให้บุคคลภายนอกหรือบุคคลที่ไม่มีสิทธิ์เข้าถึงข้อมูลนั้นได้รับรู้ เช่น API Keys, Password และ Certificate ต่าง ๆ ข้อมูลในการเชื่อมต่อฐานข้อมูล และตัวบริการยังสามารถที่จะตรวจดูได้ว่า Key ที่ได้สร้างไปนั้นถูกเรียกใช้งานไปเมื่อไรและอย่างไร
- 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