DEV Community

Cover image for AWS vs GCP ตอนที่ 1: Network & Security
Perajit
Perajit

Posted on

AWS vs GCP ตอนที่ 1: Network & Security

บทความนี้เขียนเพื่อพยายามสรุปเปรียบเทียบ AWS และ GCP จะเขียนออกแนวโน้ตส่วนตัว แบบสรุปคร่าวๆ ไม่ลงรายละเอียดเยอะ (เพราะก็ไม่ได้เชี่ยวชาญ 555)

ที่คิดไว้ก็อยากเขียนหลายเรื่อง แต่ขอเริ่มจากเรื่อง Network ก่อนแล้วกัน

Network Architecture

ก่อนอื่นต้องพูดถึงคำศัพท์กันก่อน

  • ในแง่ภูมิศาสตร์: Global, Region, Zone (สำหรับ AWS เรียก Availability Zone หรือ AZ)

    • ในระบบ cloud แต่ละเจ้าจะแบ่งโครงสร้างพื้นฐานในเชิงภูมิศาสตร์ตามบริเวณที่มี data center
    • Global คือทั้งโลก ประกอบด้วยหลายๆ Region ซึ่งเป็นที่ตั้งที่อยู่ห่างกันมาก
    • แต่ละ Region จะประกอบด้วยหลาย Zone (สำหรับ AWS เรียก availability zone หรือ AZ) อีกที
  • ในแง่เครือข่าย: VPC, Subnet

    • VPC ที่เป็นวงเครือข่ายที่ resource ภายในสามารถมองเห็นกันได้แต่ภายนอกไม่สามารถมองเห็นเข้ามาได้ถ้าไม่ได้รับอนุญาต
    • Subnet ส่วนย่อยของ VPC

ความแตกต่างที่ชัดเจนคือ

สำหรับ AWS:

  • VPC span เป็น Regional ไม่สามารถ span ข้าม Region ได้
  • Subnet อยู่เฉพาะใน AZ เดียวเท่านั้น ไม่สามารถ span ข้าม AZ ได้

ในขณะที่ GCP:

  • VPC span เป็น Global ครอบคลุมทั่วโลก
  • Subnet เป็น Regional คือ span ครอบคลุมได้หลาย Zone (เวลาวาง VM ยังต้องเลือก Zone แต่ IP Address มาจาก pool เดียวกันทั้ง Region)

ความแตกต่างนี้ทำให้ GCP สามารถคุยข้าม Region ได้เลยโดยไม่ต้องทำอะไรเพิ่ม ขณะที่ AWS ต้องมีขั้นตอนเพิ่มเติม (เช่น ทำ Peering) เพื่อให้คุยข้าม Region ได้

Network Routing

การคุม traffic ใน Network จะใช้ Route Table (AWS) หรือ Routes (GCP)โดยมีความแตกต่างกันตามนี้

AWS Route Table

  • อยู่ในเลเวล Subnet คือแต่ละ VPC จะมีได้หลาย Route Table และควบคุม traffic ของแต่ละ Subnet แยกกันด้วยการสร้าง Route Table ที่ต่างกันไปผูกไว้
  • ถ้าไม่มีการผูก Route Table ที่สร้างแยกไว้ Subnet จะใช้ Main Route Table ซึ่งเป็นตารางกลางสำหรับทุก Subnet ซึ่งกำหนดให้ component ทุกตัวคุยกันผ่าน internal IP ได้ภายใน VPC

GCP Routes

  • มี Routes ตารางเดียวเป็นระดับ Global แชร์กันทั้งโลก
  • สามารถสร้าง Route ให้มีผลเฉพาะสำหรับ VM บางตัวได้โดยการใส่ Network Tags
  • เมื่อมีการสร้าง Subnet ใหม่ ระบบจะสร้าง Route สำหรับการติดต่อภายใน (local) ให้แบบ Global โดยอัตโนมัติ หมายความว่า component จากคนละ Region จะคุยกันผ่าน internal IP ได้เลย

Network Security

Network Security in AWS

AWS แบ่งตัวควบคุม security เป็น 2 เลเยอร์ คือ ในระดับ Subnet และระดับ Instance

Security Group:

  • ควบคุมระดับ Instance
  • เป็นการควบคุมแบบ Stateful หมายความว่า มีการจำเส้นทางเข้าออกของ traffic ถ้าขาเข้าผ่านได้ ขาออกก็จะผ่านได้โดยอัตโนมัติ
  • ควบคุมแค่ Allow เท่านั้น (white-list)
  • ค่า default คือ Deny ขาเข้าทั้งหมด แต่ Allow ขาออกทั้งหมด ทำให้ instance สามารถเรียกออกไปข้างนอกได้เพื่อ install package ต่างๆ ได้

Network ACL (NACL):

  • ควบคุมระดับ Subnet
  • เป็นการควบคุมแบบ Stateless หมายความว่า ไม่มีการจำการเส้นทางเข้าออกของ traffic ต่อให้ขาเข้าผ่านเข้ามาได้แล้วมันก็ไม่ได้ยอมให้ขาออกผ่านได้เอง ต้องกำหนดกฎของ "ขาเข้า" (ingress) และ "ขาออก" (egress) แยกกัน
  • ควบคุมได้ทั้ง Allow และ Deny (สามารถทำ black-list ได้)
  • โดย default จะ allow ทั้งหมด ทั้งขาเข้าและขาออก

ใน AWS มักจะใช้ Security Group เป็นหลัก และใช้ NACL แค่เป็นด่านเสริมเพื่อ black-list IP ไม่พึงประสงค์

Network Security in GCP

มีตัวควบคุม security หลักๆ คือ Firewall Rules เป็นการควบคุมแบบ Stateful โดยมีค่า default เหมือนกับ Security Group (stateful เหมือนกัน) คืออนุญาตให้ทุกอย่างวิ่งออกได้ทั้งหมด แต่บล็อกทุกอย่างที่วิ่งเข้า

ควบคุมได้ทั้ง Allow และ Deny ทำให้เราสามารถใช้ทำ black-list กับ white-list ได้โดยอาศัยการตั้งค่า Deny/Allow, Priority

  • ทำ Deny (black-list):

    • สร้างกฎโดยใช้ Action: Deny, Priority: 100 (ตัวเลขน้อยกว่ากฎ Allow หมายถึงสำคัญมากกว่า)
    • ระบุ Source IP ที่ต้องการบล็อก
  • ทำ Allow (white-list):

    • สร้างกฎโดยใช้ Action: Allow, Priority: 1000 (ตัวเลขมากกว่ากฎ Deny หมายถึงสำคัญน้อยกว่า)
    • ระบุ Source IP ที่ต้องการให้ผ่าน

Firewall Rules ทำงานที่ระดับ VPC แต่สามารถเซ็ตค่าให้ทำงานในระดับ Instance (เหมือน Security Group) หรือ Subnet (เหมือน NACL) ได้

  • ควบคุมระดับ Instance (เทียบกับ Security Group): อาศัย Target Tags ระบุเป้าหมายกลุ่มของ VM ที่ต้องการบังคับใช้กฎ
  • ควบคุมระดับ Subnet (เทียบกับ NACL): อาศัยการกำหนด Destination IP เป็น IP range ของ Subnet ที่ต้องการควบคุม

Top comments (0)