AWS Network & Security คีย์สำคัญในการรักษาความปลอดภัยบนคลาวด์

สวัสดีค่ะทุกคน บล็อกนี้จะมาแนะนำเกี่ยวกับเครือข่ายและระบบรักษาความปลอดภัยบนคลาวด์ AWS โดยแนนได้สรุปเนื้อหาจากงานอบรม AWSomeday Online Conference 2022 และนำมาเรียบเรียงใหม่ พร้อมอธิบายข้อมูลและคำศัพท์เทคนิคเพิ่มเติม หวังว่าจะช่วยให้ผู้เริ่มต้นใช้งานคลาวด์ได้ศึกษาและเข้าใจมากยิ่งขึ้นนะคะ

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

เมื่อวันที่ 9 มิถุนายนที่ผ่านมา แนนได้มีโอกาสเข้าร่วม AWSome day online conference เลยอยากจะมาเขียนสรุปความรู้ที่ได้จากการเข้าร่วม และอยากจะมาแชร์ให้ทุกๆคนได้อ่านกันด้วยค่ะ

อธิบายคำศัพท์เพิ่มเติม ?คลิกเพื่ออ่านเพิ่ม?

1. Route table = เส้นทางการส่งผ่านหรือการเดินทางของข้อมูล
2. Network interface = การเชื่อมต่อคอมพิวเตอร์เข้ากับเครือข่ายหรืออินเตอร์เน็ต
3. VPC endpoint = การเชื่อมต่อเครือข่ายแบบส่วนตัวที่จะนำเราไปยัง AWS service โดยไม่ต้องผ่านทางอินเตอร์เน็ต
4. Virtual Private Network(VPN) = การเชื่อมต่อเครือข่ายแบบส่วนตัวระหว่างอุปกรณ์ต่างๆ ผ่านอินเตอร์เน็ต
5. Traffic = จำนวนผู้เข้าชมเว็บไซต์
6. Domain name = ชื่อที่ถูกเรียกแทนการเรียกเป็นหมายเลขอินเทอร์เน็ต (IP Address) หรือก็คือชื่อเว็บไซต์ต่างๆนั่นเอง
7. End user = ผู้ใช้งานปลายทาง
8. Shared responsibility model = โมเดลการแบ่งความรับผิดชอบร่วมกันระหว่าง AWS และผู้ใช้งาน
9. Patch = การอุดช่องโหวที่อาจทำให้เกิดการโจมตีโดยไวรัสได้
10. Encryption = การเข้ารหัส
11. Cloud framework = สภาพแวดล้อมภายในระบบคลาวด์
12. Application Program Interface (API) = การเชื่อมต่อจากระบบหนึ่งไปสู่อีกระบบหนึ่ง ทำหน้าที่เป็นเหมือนตัวกลางคอยรับคำสั่งและประมวลผลระหว่างผู้ใช้กับแอปพลิเคชัน
13. Fault tolerance = ความทนทานต่อความเสียหาย ระบบจะยังสามารถทำงานต่อไปได้ แม้จะเกิด failure บางส่วนขึ้น
14. Cost optimization = การบริหารต้นทุนอย่างมีประสิทธิภาพ
15. TLS Termination = กระบวนการถอดรหัสการรับส่งข้อมูลที่เข้ารหัส SSL ซึ่งการเข้ารหัส SSL หรือ TLS นั้นใช้ CPU มากและอาจส่งผลกระทบต่อประสิทธิภาพของแอปพลิเคชันของคุณเนื่องจากต้องมีการประมวลผลเพิ่มเติม

AWSome day คืออะไร?

งานอบรมเกี่ยวกับคลาวด์ AWS ที่จะมาให้ความรู้พื้นฐานที่มือใหม่ควรรู้ไว้ เหมาะสำหรับผู้เริ่มต้นศึกษาการใช้งานคลาวด์ โดยเนื้อหาแบ่งออกเป็น 5 โมดูล

โมดูล 1 : ความรู้เบื้องต้นเกี่ยวกับ AWS

โมดูล 2 : ความรู้เบื้องต้นเกี่ยวกับบริการของ AWS (การประมวลผล ที่จัดเก็บข้อมูลและฐานข้อมูล)

โมดูล 3 : ความรู้เบื้องต้นเกี่ยวกับบริการของ AWS (ระบบเครือข่ายและความปลอดภัย)

โมดูล 4 : นวัตกรรมกับ AWS

โมดูล 5 : สรุปหลักสูตร

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

Network

Amazon Virtual Private Cloud (Amazon VPC)

Amazon Virtual Private Cloud (Amazon VPC) คือ Virtual Private Network (VPN) ของ AWS เปรียบเสมือนกรอบที่ใช้สำหรับแบ่งขอบเขต คล้ายกับการขีดเส้นแบ่งขอบเขตให้กับอินแสตนซ์

?โดย VPC เป็นบริการในระดับ Regional scoped service คือใน 1 VPC จะมีขอบข่ายครอบคลุมหลาย Availability zones ใน Region เดียวกัน ดังนั้นตอนที่ใช้งาน เลือกแค่ Region ที่ต้องการก็พอค่ะ

ใน 1 VPC เราสามารถแบ่งพื้นที่ย่อยที่เราเรียกว่า subnet สำหรับสร้างอินสแตนซ์ได้หลากหลาย โดยแบ่งออกเป็น 2 ประเภท คือ Public subnet และ Private subnet

    Public subnet คือ subnet ที่เชื่อมต่อกับ Internet Gateway ทำให้สามารถรับส่งข้อมูลกับอินเตอร์เน็ตภายนอกได้
    Private subnet คือ subnet ที่ไม่ได้เชื่อมต่อกับอินเตอร์เน็ตได้โดยตรง บุคคลทั่วไปไม่สามารถเข้าถึงในส่วนของ Private subnet นี้ได้ผ่านอินเตอร์เน็ต

นอกจากจะสามารถกำหนดให้เป็น Pubic หรือ Private เรายังสามารถตั้งค่าแต่ละ subnet ให้แยก Availability zone กันได้อีกด้วย ดังรูปด้านล่างนี้เลยค่ะ

ตัวอย่างเช่น การจัดทำ Web application / Bastion Host / Jump host โดยเปิดให้คนทั่วไปสามารถเข้าถึงได้ผ่าน Internet ที่ Public Subnet ในขณะเดียวกันก็จัดส่วนที่เป็น Private Subnet ที่ไม่สามารถเข้าถึงโดยตรงได้ผ่าน Internet ไว้ด้วย เพื่อช่วยป้องกันไม่ให้มีคนเข้ามาโจมตี application ของเราได้

?ในส่วนของ Subnet จะเป็นบริการในระดับ Availability zones คือมีขอบข่ายครอบคลุมเฉพาะในแต่ละ Availability zones เท่านั้น หมายความว่าอินสแตนซ์ที่อยู่ใน subnet เดียวกัน จะต้องเป็นอินสแตนซ์ที่อยู่ Availability zone เดียวกันด้วย โดยใน Availability zone นั้นจะมีกี่ subnet ก็ได้ และอินสแตนซ์ใน subnet เดียวกันจะข้าม Availability zone กันไม่ได้นั่นเอง

การใช้งาน VPC

จะเห็นได้ว่า VPC เหมือนกรอบที่คอยแบ่งกลุ่มอินสแตนซ์ เพื่อกำหนดสิทธิหรือสร้างสภาพแวดล้อมที่ต่างกัน ดังนั้นเราจะเห็นการใช้งาน VPC ที่หลากหลาย เช่น

    • ใช้สำหรับสร้าง Private space บน AWS โดยสามารถใช้ VPC แยก Environment ที่เป็น development, test, production ออกจากกันได้
    • ใช้ VPC เพื่อแยกระหว่างระบบงานที่ต้องการความปลอดภัยที่แตกต่างกัน เพื่อควบคุม traffic flow ที่มายังแพลตฟอร์มของเราได้
    • VPC ช่วยควบคุมการเข้าถึง workload ผ่านทาง Network ได้ ไม่ว่าจะเป็นการยอมให้มีการเข้าถึงแบบ Public โดย Internet หรือแบบ Private ที่เป็นการเชื่อมต่อกันภายในก็ได้เช่นเดียวกันค่ะ

กล่าวคือ เราสามารถสร้าง VPC จำนวนเท่าไรก็ได้เพื่อนำไปใช้ในแต่ละงานที่แตกต่างกันตามต้องการ ดังนั้นจึงไม่ใช่เรื่องแปลกที่ในงานใหญ่บางงาน จะมีจำนวน VPC ในหลักร้อยเลยค่ะ

สามารถอ่านบล็อกเพิ่มเติมเกี่ยวกับการใช้งาน VPC ได้ที่ → การใช้งาน VPC ในเชิงปฏิบัติกับ EC2

การสร้าง VPC

    ในการสร้าง VPC เราจำเป็นจะต้องกำหนดช่วงของ IP Address จากนั้น เราสามารถแบ่ง VPC ออกเป็นส่วนย่อยที่เรียกว่า Subnet เพื่อกำหนดการเข้าถึง หรือการควบคุมทางด้านความปลอดภัยที่แตกต่างกัน หรือใช้ในการทำ High Availability คือการแยก Subnet ไว้ใน AZ ที่ต่างกัน เพื่อเพิ่มความทนทานของข้อมูล

การเชื่อมต่อ VPC

    Amazon VPC สามารถให้บริการเชื่อมต่อแบบปลอดภัยผ่าน VPN (= Direct connect ที่เชื่อมต่อ VPC ของเรากับศูนย์ข้อมูล สำนักงาน หรือ location อื่นๆ) นอกจากนี้ VPC ยังสามารถเชื่อมต่อกัน และสามารถเชื่อมต่อกันข้ามหลาย Region ได้อีกด้วย ทำให้สามารถขยาย environment ของเราได้ตามต้องการเลย

การกำหนด Routing option บน VPC

    เราสามารถกำหนดเส้นทางการเข้าถึง resources ต่างๆใน VPC โดยการใช้เครื่องมือต่างๆร่วมกัน เช่น route table, network interfaces, interface endpoints ช่วยให้สามารถควบคุมการตั้งค่าความปลอดภัย(Security configuration) และ การเชื่อมต่อ(connectivity) ของ resources ต่างๆภายใน VPC ของเราได้

การวางโครงสร้างภายใน Infrastructure

แผนป้องกัน infrastructure สามารถทำได้ตั้งแต่เมื่อเริ่มต้นวางแผนโครงสร้าง ด้วยการวางเลเยอร์หลายๆชั้นผ่านการ configuration(การกำหนดค่า) ต่างๆบน VPC

    1. เริ่มต้นจากการใช้ Route Tables สำหรับ Workload โดยการไม่อนุญาตให้มีการเข้าถึง Workload ผ่านทาง Public Internet เพื่อจำกัดการเชื่อมต่อของ Workload ของเราไปยัง Public Internet ได้ เฉพาะขาออกไปยัง Internet เท่านั้น

    2. จากนั้นกำหนด Network access control lists ที่ subnet ให้จำกัดเฉพาะ traffic ที่ผ่านมาตาม protocols หรือ ports ที่เราอนุญาตให้ผ่านเข้ามาหรือส่งออกไปได้เท่านั้น

    3. สร้าง Security group ซึ่งเปรียบเสมือน Virtual network interface (ทำหน้าที่เป็น stateful package filter) คอยควบคุม traffic ที่เข้าและออกจาก Instance โดย traffic ที่เข้ามายังแพลตฟอร์มจะถูก block ในขณะที่ traffic ที่ออกจากแพลตฟอร์มจะผ่านออกไปได้เสมอ

    4. ท้ายที่สุดคือการติดตั้งซอฟต์แวร์ firewall และ protection software บน EC2 Instance เพิ่มเติมได้ด้วย

Elastic Load Balancing (ELB)

    • ทำหน้าที่กระจาย traffic บน HTTP หรือ HTTPS ตามที่กำหนดไว้

    • ใช้เพื่อสร้างความทนทาน (High Availability) ให้กับเว็บไซต์หรือแอปพลิเคชันของเรา
    →เช่น เมื่อเกิด Instance failed ทำให้ไม่สามารถตอบสนองต่อ request ที่ส่งมาได้ ELB จะเป็นตัวที่หยุดส่ง traffic ไปยังอินสแตนซ์ที่ล่มนั้น แต่จะกระจายไปยังอินสแตนซ์อื่นๆที่ยังใช้งานได้ ทำให้เรายังสามารถเข้าถึงเว็บไซต์หรือแอปพลิเคชันได้อย่างปกติ ก็จะเป็นการช่วยเพิ่มประสิทธิภาพการใช้งานและเพิ่ม user experience ได้ด้วยค่ะ
    • ช่วยในเรื่องของ security เราสามารถใช้ฟังก์ชัน TLS termination บน ELB เพื่อลดภาระการประมวลผลของอินสแตนซ์ได้

?ELB เป็นบริการระดับ Region scoped service คือใช้งานระดับ Region จึงสามารถใช้ในการกระจาย traffic ไปยังอินสแตนซ์และแอปพลิเคชันที่อยู่ใน Region เดียวกันได้ แต่ถ้าเราต้องการกระจาย traffic ไปยัง Region อื่น จำเป็นต้องใช้ Route53 ซึ่งเป็นบริการในระดับ global เข้ามาช่วย

สามารถอ่านบล็อกเพิ่มเติมเกี่ยวกับการใช้งาน VPC ได้ที่ → https://dev.classmethod.jp/articles/aws-2022-introductory-edition-amazon-application-load-balancer/

Route53

บริการ Scalable Cloud DNS service ใช้เพื่อเปลี่ยนให้เป็นชื่อ Domain name ที่ต้องการ เป็นบริการในระดับ global ดังนั้นเราจึงไม่ต้องเลือก Region และใช้ชื่อ Domain ได้ทุกพื้นที่ทั่วโลก

เราสามารถจดหรือต่ออายุ Domain บน Route53 หรือกำหนด option ในการ routing traffic ได้ตามต้องการ

เมื่อ end user ถูกนำทางไปยัง URL ของเราเพื่อเรียกใช้งานแอปพลิเคชันที่อยู่ใน VPC → Route53 จะทำหน้าที่ resolve URL ให้เป็น IP Address ที่ชี้ไปยัง Internet Gateway → ผ่านไปถึง ELB ซึ่งจะทำหน้าที่รับ traffic ที่เข้ามา และกระจายไปยัง EC2 Instances → หลังจากนั้นจะตอบกลับไปยัง end user

Security

Cloud security ถือเป็น First Priority ของ AWS เราสามารถใช้งานคลาวด์ได้อย่างปลอดภัย เนื่องจาก AWS ถูกออกแบบมาให้เป็นคลาวด์ที่มีความยืดหยุ่นและมีความปลอดภัยสูงสุดในปัจจุบัน

และเมื่อเราพูดถึงการรักษาความปลอดภัยบนคลาวด์ AWS ผู้ใช้จำเป็นที่จะต้องเข้าใจในโมเดลความรับผิดชอบร่วมกัน หรือ Shared responsibility model ที่จะอธิบายด้านล่างนี้ด้วยค่ะ

Shared Responsibility model

โดยทั่วไปแล้ว การให้บริการของ AWS จะเป็นไปตาม Shared Responsibility Model หรือ แผนความรับผิดชอบร่วมกันระหว่าง AWS และผู้ใช้งาน กล่าวคือ AWS จะเป็นผู้รับผิดชอบในการจัดการระบบคลาวด์ให้มีความปลอดภัยโดยไม่เข้าถึงข้อมูลใดๆของผู้ใช้ รวมถึงไม่ได้เข้าถึง resource ที่ deploy อยู่บน AWS และเพราะทั้งสองส่วนนี้ จะเป็นส่วนที่อยู่ในความรับผิดชอบของผู้ใช้งานเอง ตาม Shared responsibility model

ตัวอย่าง เช่น
EC2 AWS จะรับผิดชอบดูแลให้เซิร์ฟเวอร์อยู่ในที่ๆปลอดภัยและพร้อมใช้งาน หลังจากนั้น เมื่อผู้ใช้เข้ามาสร้าง EC2 Instance เราจะต้องรับผิดชอบในส่วนของการ Patch Operating System ที่ใช้งานเอง
EBS Volume AWS จะรับผิดชอบจัดเตรียมความสามารถในการเข้ารหัสของ EBS Volume ไว้ แต่ผู้ใช้จะเป็นผู้ที่ต้องเปิดใช้งานการเข้ารหัสนั้น (Enable Encryption)
S3 AWS มีหน้าที่จัดเตรียมให้ S3 เป็น Storage ที่มีความพร้อมใช้งานและทนทานสูง รวมไปถึงจัดเตรียมโครงสร้างการกำหนดสิทธิในการเข้าถึงและการจำกัดการเข้าถึงแบบ Public แต่ผู้ใช้งานจะเป็นผู้เลือกว่าข้อมูลใดบ้างที่จะจัดเก็บบน S3 / การเข้ารหัส / การให้สิทธิบุคคลที่สามารถเข้าถึงข้อมูล

กล่าวคือ AWS จะรับผิดชอบในการจัดเตรียม Cloud framework ให้คุณสามารถเข้ามาใช้งานได้อย่างปลอดภัย ส่วนผู้ใช้จะรับผิดชอบในการเลือกใช้ Configuration option(การตั้งค่า) การควบคุม เลือกว่าจะจัดเก็บข้อมูลไว้ที่ไหน หรือเลือก deploy services อย่างไรด้วยตัวเองนั่นเองค่ะ

AWS Identity and Access Management (IAM)

IAM เป็นฟังก์ชันที่ช่วยให้เราสามารถควบคุมสิทธิการเข้าถึงทรัพยากรต่างๆบน AWS โดยสามารถแบ่งสิทธิในระดับย่อยจนถึงระดับ Users, Group หรือ Roles และสามารถกำหนดสิทธิการเข้าถึงบัญชี AWS แบบชั่วคราว

ส่วนประกอบหลักๆภายใน IAM Identity (การระบุผู้ใช้) และ Permission (สิ่งที่อนุญาตให้ทำ) เพื่อให้เราสามารถกำหนดได้ว่าใครหรืออะไรที่มีสิทธิในการเข้าถึงระบบ รวมถึงมีสิทธิในการทำอะไรกับระบบเหล่านั้นได้บ้าง

Identity แบ่งออกเป็น User และ Role

    → User เป็น permanent identity ระบุตัวผู้ใช้งานนั้นๆ และจะคงอยู่จนกว่าเราจะยกเลิกเอง
    → Role เป็น temporary identity คือการกำหนดหน้าที่ขึ้นมาทำงานเพียงช่วงระยะเวลาหนึ่งเท่านั้น สามารถเปลี่ยนแปลงไปได้ตามตำแหน่งหรือหน้าที่ของเราที่อาจเปลี่ยนไป เช่น เมื่อตำแหน่งของ User หนึ่งๆในองค์กรเปลี่ยนแปลง เราก็สามารถเปลี่ยน Role ไปตามนั้นได้นั่นเองค่ะ

และเมื่อเรามี User หลายคนที่มี Role เดียวกัน อาจจัดรวมเป็น Group เพื่อให้ง่ายต่อการบริหารจัดการ ซึ่งไม่จัดว่าเป็น Identity แต่อย่างไร อย่างเช่น การจัดกลุ่มของ User ตามฟังก์ชันการใช้งาน เช่น admin, developer หรือการจัดกลุ่มตามแผนก เช่น ทีม engineer, ทีม design

AWS CloudTrail

บริการสำหรับติดตามกิจกรรมการใช้งาน หรือการเรียกใช้ API ภายในบัญชี AWS ช่วยให้เราตรวจสอบ activity ของ Identity หรือ API usage ภายในบัญชีของเราได้อย่างต่อเนื่อง ระบบจะบันทึกทุกๆ API Calls ของบริการต่างๆภายในบัญชี ซึ่งเราสามารถใช้ข้อมูลดังกล่าวเพื่อให้เป็นไปตามข้อกำหนดของ Compliance, การตรวจสอบ, การนำไปวิเคราะห์ระบบรักษาความปลอดภัย รวมไปถึงใช้เป็นข้อมูลเพื่อหาวิธีแก้ไขปัญหาที่เกิดในบัญชีของเราได้ค่ะ

บันทึกการใช้งานต่างๆจะถูกส่งไปเก็บไว้ที่ S3 ซึ่งการจัดเก็บเหล่านี้จะช่วยให้เราสามารถเพิ่มการรักษาความปลอดภัย และตอบคำถามเกี่ยวกับความปลอดภัยได้ เช่น สามารถตรวจสอบได้ถึงที่มาของ request ว่าใครเป็นคน request มาเมื่อไร หรือ request นั้นต้องการอะไร เป็นต้น

สรุปได้ว่า CloudTrail ช่วยเพิ่มความโปร่งใสตรวจสอบได้ในเรื่องของความปลอดภัยในบัญชีของเรานั่นเองค่ะ

สามารถอ่านบล็อกเพิ่มเติมเกี่ยวกับ CloudTrail ได้ที่ → ข้อมูลใน AWS หายไปต้องทำอย่างไร?

AWS Trusted Advisor

เป็นเครื่องมือที่คอยให้ข้อมูลที่สามารถนำมาใช้ปรับปรุงบัญชีของเราในมิติต่างๆ ได้แก่ Security, Performance, Fault Tolerance และ Cost Optimization รวมถึงให้ข้อมูลเรื่อง Service limit เมื่อบริการของเราใกล้ถึงลิมิตการใช้งาน โดย AWS trusted advisor นี้ให้คำแนะนำตามชุด Best practise สำหรับการออกแบบสถาปัตยกรรมให้มีประสิทธิภาพ

ตัวอย่างการใช้งาน
เช่น ให้คำแนะนำด้าน Cost Optimization ในการลดขนาดอินสแตนซ์เมื่อเราใช้งานไม่ถึง เพื่อช่วยให้ประหยัดค่าใช้จ่ายได้มากขึ้น หรือ ให้คำแนะนำด้าน Fault Tolerance เมื่อเรามี EC2 Instance อยู่ใน Availability Zone เดียว ซึ่งอาจเกิดความเสี่ยง หาก AZ นั้นมีปัญหา AWS Trusted Advisor จะมีคำเตือนว่าเราควรโฮสต์อินสแตนซ์เอาไว้ในหลายโซนค่ะ

สรุป

จบกันไปแล้วนะคะ สำหรับ session เกี่ยวกับความปลอดภัยและเครือข่ายบน AWS หวังว่าบล็อกนี้จะเป็นประโยชน์ให้คนที่กำลังศึกษาเกี่ยวกับคลาวด์ AWS นะคะ(ノ◕ヮ◕)ノ*:・゚✧


ผู้เขียน: สริตา ทวีเติมสกุล (แนน)

บรรณาธิการ: จิราภรณ์ สว่างอารมย์ (จิ๋ว)