บทความและข่าวสาร | Seven Peaks Insights

Cloud Azure Meetup - การดูแลความปลอดภัยให้แอปฯ ใน Azure

เขียนโดย Seven Peaks - 8 เม.ย. 2022, 5:41:00

เกริ่นนำ

งาน Seven Peaks Speaks ได้จัดขึ้นอีกครั้งเมื่อวันที่ 23 มีนาคม 2565 โดยในครั้งนี้เรามีวิทยากร 4 ท่านที่จะมาพูดเกี่ยวกับ “การ deploy และดูแลความปลอดภัยให้กับแอปพลิเคชันของคุณใน Azure” เพื่อให้การย้ายข้อมูลแอปฯ ใน Azure นั้นมีประสิทธิภาพ

งาน meetup ครั้งนี้เริ่มด้วยคุณ Giorgio Desideri ซึ่งเป็น Tech Lead Cloud Solutions ที่ Seven Peaks Software โดยหัวข้อที่เขาจะมาบรรยายคือ “การสร้างมาตรการรักษาความปลอดภัยและข้อบังคับใน Azure”

บัญชีผู้ใช้ Azure

เริ่มจากเรื่องของบัญชีผู้ใช้ Azure กันก่อน คุณ Giorgio อธิบายหลักการทำงานพื้นฐานว่า บัญชีผู้ใช้ Azure นั้นแบ่งออกเป็น 3 ประเภท ได้แก่ ฟรี, Office 365, และพรีเมียม โดยการใช้งานของผู้ใช้, บริการ, แอปพลิเคชัน, และอุปกรณ์ต่างๆ จะถูกกำหนดโดย roles หรือ group ซึ่งสิ่งเหล่านี้จะเกี่ยวข้องกับการกำหนดนโยบาย ในส่วนของผู้ใช้นั้นจะแบ่งออกเป็น 4 ประเภท ได้แก่ guest, member, Microsoft 365 (Enterprise), และบัญชี work/consumer (Azure B2C)

บริการเกี่ยวกับข้อมูลผู้ใช้แบ่งออกเป็น 3 ส่วนต่อไปนี้

  1. บริหารจัดการข้อมูลผู้ใช้ ซึ่งมีทั้งแบบที่กำหนดโดยระบบและกำหนดโดยผู้ใช้เอง
  2. Service Principal (การลงทะเบียนแอปพลิเคชัน)
  3. Enterprise Application


ดูการสาธิตการเขียนโค้ดแบบสดๆ ของงาน Cloud Azure Meetup ครั้งนี้ได้ที่วิดีโอข้างล่างนี้

บัญชีผู้ใช้ Azure, การย้ายแอปฯ ใน Azure, และอื่นๆ โดยคุณ Giorgio, คุณภู, คุณมีน, และคุณ Nicolas

หลังจากนั้นคุณ Giorgio ก็ได้ลงลึกถึงเรื่องของฐานข้อมูลและแอปพลิเคชัน รวมถึงวิธีพัฒนาแอปพลิเคชันอย่างปลอดภัย ซึ่งได้อธิบายว่า developer คือหัวใจสำคัญในการสร้างความปลอดภัยให้กับฐานข้อมูล จากนั้นจึงจบการบรรยายด้วยการสรุปประเด็นสำคัญ

อันดับแรก เราต้องพิจารณาถึง requirement ต่างๆ แล้วตรวจสอบ บัญชี Azure ก่อน จากนั้นจึงวางกฎระเบียบของการจัดการการเข้าถึงข้อมูลบัญชีผู้ใช้ เช่น กลุ่มเป้าหมาย, สิทธิ์ที่ได้รับอนุญาต, method และ operation ซึ่งในท้ายที่สุดแล้ว การศึกษาหาความรู้, ฝึกฝน, ติดตามผล, แจ้งเตือน, ตรวจสอบ, และลงมือปฏิบัติ คือสิ่งสำคัญที่ต้องทำเพื่อให้การพัฒนามีความปลอดภัยมากยิ่งขึ้น

คุณมีน Mid-Level Java Developer และคุณภู Junior .NET Developer ของเรา คือสองวิทยากรที่จะมาพูดถึงหัวข้อต่อไป ซึ่งนี่เป็นครั้งแรกที่ทั้งสองคนได้มาบรรยายในงาน Seven Peaks Speaks

คุณมีนแนะนำคอนเซปต์ของ Azure Function ให้เราได้รู้ด้วยการเปรียบเทียบกับรถยนต์ว่า หาก Azure Function คือรถยนต์ สิ่งที่เป็น trigger อย่างเช่น HTTP Trigger ก็เปรียบเสมือนกุญแจไว้สตาร์ตรถ ซึ่ง Azure Function แต่ละอันสามารถมี trigger type ได้เพียงอันเดียวเท่านั้น

trigger type นั้นมีอยู่หลายประเภท ดังนั้น คุณมีนจึงเลือกเอา 6 trigger type ที่ใช้กันบ่อยที่สุดมาอธิบายพวกเรา ซึ่งได้แก่

  1. HTTP Trigger Type: เป็น Azure Function ที่จะถูก trigger เมื่อมี HTTP request
  2. Blob Trigger Type: เป็น Azure Function ที่จะ execute เมื่อมีอัปเดตไปยัง Blob storage
  3. Event Hub Trigger Type: จะถูก execute เมื่อเรามี event ใน Azure
  4. Time Trigger Type: จะถูกใช้งานเมื่อถึงเวลาที่ตั้งไว้ในตาราง
  5. Queue Trigger Type: จะถูก execute เมื่อมี queue ใน Azure
  6. Azure Cosmo Trigger Type: จะถูก trigger เมื่อมีการแก้ไขไฟล์เอกสาร

คุณมีนแสดงวิธีการใช้งาน trigger และ binding ด้วยการยกตัวอย่างสถานการณ์ที่ผู้ใช้ต้องการห้องพักที่ว่างให้เช่าของคอนโดมิเนียมแห่งหนึ่ง เมื่อผู้ใช้คลิกที่ Azure Function (HTTP Trigger type) มันก็จะถูก trigger และพยายามส่งข้อมูลจากผู้ใช้ไปยังทีมงานหลังบ้านด้วย “SendGrid”

คุณภูบรรยายเกี่ยวกับการรักษา ความปลอดภัยข้อมูลระหว่างระบบ (in-transit) ซึ่งแบ่งออกเป็น 4 หัวข้อ ได้แก่ Function Access Keys, Authorization Scopes, Authentication/Authorization และ Networking (Azure Private Endpoint)

โดย Authorization Scopes แบ่งออกเป็น 3 scope ดังนี้

  1. Anonymous scope: ไม่จำเป็นต้องใช้ key และทุกคนสามารถใช้งานได้
  2. Function scope: ต้องกำหนด key ให้กับฟังก์ชัน
  3. Admin level scope: จำเป็นต้องใช้ master key เพื่อเข้าถึง

สำหรับเรื่องของ Networking นั้น มีหลายวิธีในการรักษาความปลอดภัยให้ฟังก์ชันในเครือข่ายของคุณ อย่างไรก็ตาม คุณภูก็แนะนำให้ใช้งาน Azure Virtual Network ซึ่งเป็นเครื่องมือที่เรียบง่ายแต่มีประสิทธิภาพดี

คุณมีนจบการบรรยายด้วยเรื่องของ “ความปลอดภัยของข้อมูล at-rest” ซึ่งอยู่บนพื้นฐานของการรักษาความปลอดภัยข้อมูลเกี่ยวกับผู้ใช้ ว่าในจักรวาลของ Azure นั้น การรักษาความปลอดภัยข้อมูลเกี่ยวกับผู้ใช้เรียกอีกอย่างหนึ่งว่า managed identities เพราะมันจะปล่อยให้ Azure ทำการบริหารจัดการความปลอดภัยแทนเรา นอกจากนั้น คุณมีนยังบอกเคล็ดลับที่มีประโยชน์จากประสบการณ์การทำงานที่ผ่านมากับเราอีกด้วย

 

การย้ายแอปฯ ใน Azure

เซสชันสุดท้ายในคืนนั้นคือเรื่องของ DevSecOps กับการย้ายแอปฯ ใน Azure ด้วย EF6 ที่บรรยายโดยคุณ Nicolas Pierson ผู้เป็น Solution Architect ของ Seven Peaks Software

อันดับแรก คุณ Nicolas ได้สรุปคอนเซปต์ของแนวทางการทำงานแบบ Agile และ DevOps ให้เรารู้ก่อนที่จะพูดถึงกระบวนการทำงานของ Seven Peaks Software ที่นำเสนอด้วยแผนภูมิ คุณ Nicolas พูดถึงการปรับปรุงประสิทธิภาพการทำงานของเราด้วยการแสดงให้เห็น feedback loop ที่เริ่มด้วยการรวบรวมฟีดแบ็ก, นำฟีดแบ็กมาวิเคราะห์, และแก้ไขจากข้อมูลที่ได้จากการวิเคราะห์ นอกจากนั้นยังขอฟีดแบ็กใหม่จากเพื่อนร่วมทีมเพื่อดำเนินกระบวนการทั้งหมดต่อไป

เนื่องจากแนวทางการทำงานแบบ DevOps นั้นเป็นการรวมเอาทีม developer, QA และ Ops ไว้ด้วยกัน แล้วทำงานร่วมกัน เพื่อให้สามารถ release ซอฟต์แวร์ได้เร็วขึ้น จึงมีการทำเช็กลิสต์เพื่อให้แน่ใจว่าได้ทำตาม requirement ด้านความปลอดภัยทุกอย่างแล้ว ซึ่งคุณ Nicolas สรุปเช็กลิสต์ DevOps ของ Microsoft ไว้ใน 6 bullet point ต่อไปนี้

  1. สร้างทีม DevOps ที่ทำงานข้ามสายงานได้ เพื่อบริหารจัดการ, สร้าง, และดูแล workload ของคุณ
  2. ในกระบวนการวางแผนและออกแบบของ DevOps นั้น ทีมดูแลความปลอดภัยจะต้องเข้ามามีส่วนเกี่ยวข้อง เพื่อตรวจค้นให้เจอความเสี่ยงใดๆ ก็ตามที่อาจกระทบต่อความปลอดภัย
  3. กำหนดบทบาทและสิทธิ์ที่ได้รับอนุญาตของ CI/CD ร่วมกัน โดยกำหนดจำนวนคนที่น้อยที่สุดที่สามารถเข้าถึงทรัพยากรหรือข้อมูลที่เป็นความลับ
  4. ตั้งค่าการอนุมัติ quality gate ในกระบวนการ release ของ DevOps
  5. integrate เครื่องมือสแกนช่องโหว่เข้าไปใน CI/CD pipeline
  6. ไม่ควรทำการแก้ไข, ตั้งค่า, และ provision โครงสร้างพื้นฐาน, แบบ manual นอก IaC (Infrastructure as Code)

นี่คือเครื่องมือที่คุณสามารถนำไปใช้ในกระบวนการพัฒนาเพื่อให้แอปฯ เสถียรและปลอดภัยมากยิ่งขึ้นได้

  1. Code: SonarQube – ครื่องมือวิเคราะห์ static code
  2. Container: Azure Security Center
  3. Container Orchestration: Kube-score, Config-lint
  4. Infrastructure: Tfsec, Horangi Warden