มาสร้างความแข็งแกร่งและปลอดภัยให้กับข้อมูลที่เก็บไว้ใน Amazon S3 กัน
Tags: aws, awsthai, s3, security
Published: 2021-09-14 12:37:23

เชื่อว่ามีผู้ใช้งาน AWS จำนวนไม่น้อยที่มีประสบการณ์ในการใช้งาน [Amazon Simple Storage Service (Amazon S3)](https://aws.amazon.com/s3/) ด้วยเหตุที่ใช้งานได้ง่าย ไม่ซับซ้อน และราคาเหมาะสม ในการจัดเก็บข้อมูลต่างๆ ทั้งไฟล์เอกสาร รูปภาพ วิดีโอ หรือแม้กระทั่งใช้เป็นคลังข้อมูล Data Lake เพื่อใช้เป็นแพลตฟอร์มในการจัดเก็บและ ประมวลผล วิเคราะห์ข้อมูลขนาดใหญ่

ในบทความนี้ จะพูดถึงแนวทางในการบริหารจัดการ และแนวทางการเพิ่มการตรวจสอบ และการปกป้องข้อมูลที่ถูกจัดเก็บ ให้มีความปลอดภัยเพิ่มมากยิ่งขึ้น โดยอาศัยบริการเสริมอื่นๆ บน AWS

* การตรวจสอบการเข้าถึงข้อมูลบน Amazon S3 ด้วย [AWS Identity and Access Management (IAM) Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html)
* การจำแนกข้อมูล (Data Classification) และจัดการกับข้อมูลที่มีความอ่อนไหว (Sensitive data discovery) ด้วย [Amazon Macie](https://aws.amazon.com/macie/)
* การตรวจจับพฤติกรรมที่เข้าถึงข้อมูลที่เป็นอันตราย หรือมีความเสี่ยงด้วย [Amazon GuardDuty](https://aws.amazon.com/guardduty/)

#### ตรวจสอบและจำกัดการเข้าถึง Amazon S3 ด้วย IAM Access Analyzer
อย่างที่ได้พูดถึงไปก่อนหน้านี้ เราที่ใช้งาน Amazon S3 ส่วนใหญ่ มักจะเก็บข้อมูลต่างๆ อย่างมากมาย และหลากหลาย โดยเฉพาะอย่างยิ่งข้อมูลที่มีความลับ หรือมีลำดับชั้นความลับของข้อมูลที่มีความสำคัญอย่างมาก เพื่อช่วยรักษาความปลอดภัยให้กับข้อมูลในขั้นต้น ควรมีการเข้ารหัสฝั่งเซิร์ฟเวอร์ (Server side encryption) ซึ่ง Amazon S3 สามารถทำงานร่วมกับ [AWS Key Management Service หรือ AWS KMS](http://aws.amazon.com/kms) ได้ทันที

นอกจากนี้ การบริการจัดการในการเข้าถึงข้อมูลก็มีความสำคัญเช่นกัน สิทธิ์ในการเข้าถึงต้องได้รับอนุญาตเฉพาะผู้ที่ต้องการการเข้าถึงเท่านั้น (Business need to know) หรือสิทธิ์ในการเข้าถึงแบบน้อยที่สุดที่เป็นไปได้ (Least privilege) ซึ่งใน Amazon S3 เอง เราสามารถกำหนดค่าการเข้าถึง S3 Bucket policy, Access control list (ACL) รวมไปจนถึงระดับ Object ที่เก็บไว้ใน S3 ได้ แน่นอนว่าสิ่งสำคัญที่ต้องพิจารณาในลำดับต่อมา คือ การหมั่นตรวจสอบนโยบาย การเข้าถึง (Policy & ACL) เป็นประจำ จะเป็นการเพิ่มความปลอดภัยด้วยเช่นกัน

ตรงนี้เองที่ IAM Access Analyzer จะเป็นเครื่องมือที่ช่วยมาช่วยให้คุณสามารถจัดการ วิเคราะห์ และระบุการเข้าถึงทรัพยากรและข้อมูล โดยที่ IAM Access Analyzer สามารถสแกนเพื่อให้ข้อมูลเชิงลึกเมื่อพบว่า Bucket policy หรือ S3 ACL อนุญาตให้มีการเข้าถึงข้อมูลจากภายนอก ที่ไม่ได้อยู่ในองค์กรของคุณ หรือจากนอก Zone of trust

ขั้นตอนการเริ่มต้นใช้งานไม่ยาก สามารถเริ่มลงมือตาม[คู่มือคำแนะนำการเปิดใช้งาน](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) จาก[คู่มือผู้ใช้ AWS IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) สำหรับรายละเอียดเพิ่มเติมได้

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eutt5iofbbwn9guet9s4.jpeg) *รูปที่ 1 การสร้าง
ตัววิเคราะห์ (IAM Access Analyzer) และการกำหนดค่า Zone of trusts*

หลังจากที่เราสร้างวิเคราะห์ IAM Access Analyzer จะแสกน AWS resources ทั้งหมดรวมถึง AWS S3 ด้วย ภายใน Zone of trust และรายงานสิ่งที่พบ เมื่อเจอลักษณะการเข้าถึงที่ไม่ปลอดภัย
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lgv024r01wkmg5ho53u5.jpeg) *รูปที่ 2 ตัวอย่างเมื่อเจอการเข้าถึง S3 Bucket ที่ไม่ปลอดภัย*

สำหรับในแต่ละ Finding ที่ IAM Access Analyzer ตรวจพบ เราสามารถตัดสินใจได้ว่า ต้องการที่จะดำเนินการอย่างไรต่อไป ตัวอย่างเช่น ถ้าเป็นการเข้าถึงที่ตั้งใจ (Intented access) เราสามารถ archive สิ่งที่พบไป หรือในมุมกลับกัน หากเป็นการเข้าถึงที่ไม่ถูกต้อง ก็ดำเนินแก้ไข S3 Policy ให้ถูกต้องใน S3 console
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vnvpzw6h9evlv29w13v6.jpeg) *รูปที่ 3 แสดงตัวเลือก next action ที่ต้องทำ เมื่อพบการเข้าถึงที่อาจจะมีความเสี่ยง*

หลักจากที่เราจัดการแก้ไขปัญหาไปแล้ว IAM Access Analyzer จะยังคงตรวจสอบ Bucket Policy ที่ได้เปลี่ยนแปลง และยังคงคอย monitor และแจ้งเตือนของการเข้าถึงที่มีความเสี่ยง

#### จำแนกและจัดการกับข้อมูลที่มีความอ่อนไหวด้วย Macie
ในปัจจุบัน องค์กรส่วนใหญ่ต้องเจอมาตรฐาน ข้อปฏิบัติ และข้อกำหนดต่างๆ (Compliance) ที่มักต้องการการระบุ และการรักษาความปลอดภัยข้อมูลที่อ่อนไหว ข้อมูลส่วนบุคคลที่สามารถระบุตัวบุคคลได้ (PII : Personally identifiable information) เช่น ชื่อ ที่อยู่ วันเกิด หรือแม้แต่ข้อมูลหมายเลขบัตรเครดิต เป็นต้น

[Amazon Macie](https://aws.amazon.com/macie/) เป็นบริการนึงที่ช่วยรักษาความปลอดภัย และความเป็นส่วนตัว (privacy) ของข้อมูล โดยจะอาศัยการเรียนรู้ของ machine learning และ pattern matching ในการตรวจค้นข้อมูลที่จัดเก็บไว้ใน Amazon S3 โดยจะมีรูปแบบข้อมูล การจำแนกประเภทข้อมูลที่ Macie รู้จัก นอกจากนี้เรายังสามารถกำหนด (define) รูปแบบของข้อมูลที่มีความเฉพาะตัวได้ ตัวอย่างเช่น หมายเลขบัตรประชาชน หมายเลขโทรศัพท์ หมายเลขประจำตัวผู้เสียภาษี และ Macie ยังช่วยในเรื่องการจำแนกข้อมูลโดยอัตโนมัติ และแจ้งเตือนเมื่อมีข้อมูลสำคัญที่ยังไม่ได้รับการแก้ไข จัดการ ให้ถูกต้องและปลอดภัย
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ml51vui5x1kdbua34ooy.jpeg) *รูปที่ 4 ตัวอย่างผลที่ได้จาก Macie*

นอกจากผลจากการแสกน ซึ่งทำให้เราเห็นการใช้งาน Amazon S3 ทั้งการตั้งค่า การเข้าถึง การเข้ารหัส และการแชร์ข้อมูล Macie ยังสามารถจำแนกประเภทข้อมูล และให้คะแนนระดับความรุนแรงตามความเสี่ยงด้านความเป็นส่วนตัวด้วยเช่นกัน
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t1bm2vcqvya2tmxnxqg6.jpeg) *รูปที่ 5 ตัวอย่างคะแนนความรุนแรง (Severity score) ที่ Macie ตรวจพบ*

เมื่อใช้ร่วมกับ [AWS Step Functions](https://aws.amazon.com/step-functions/) เพื่อให้[การแก้ไขปัญหาเป็นไปได้อย่างรวดเร็วและอัตโนมัติ](https://aws.amazon.com/blogs/security/use-macie-to-discover-sensitive-data-as-part-of-automated-data-pipelines/) จะช่วยให้เราลดเวลาในการแก้ไข และเป็นการปฏิบัติตาม[กฏระเบียบต่างๆ](https://aws.amazon.com/compliance/services-in-scope/) เช่น ระเบียบข้อกำหนดว่าด้วยการคุมครองข้อมูลทั่วไป (GDPR) พระราชบัญญัติคุ้มครองข้อมูลส่วนบุคคลของประเทศไทย (PDPA) ที่จะมีบังคับใช้ในอนาคต หรือแม้กระทั้งข้อมูลด้านสุขภาพ (HIPAA)

#### ตรวจจับพฤติกรรมที่เข้าถึงข้อมูลที่เป็นอันตรายด้วย GuardDuty
คงไม่ใช่เรื่องง่ายในการวิเคราะห์ข้อมูลจราจร (traffic log) ในการเข้าใช้งาน Amazon S3 เพราะอาจจะเกิดขึ้นได้หลายพันรายงานในแต่ละวันบน S3 Bucket และยังต้องใช้เวลานานมากยิ่งขึ้นเมื่อปริมาณข้อมูลเพิ่มมากขึ้น

[Amazon GuardDuty](https://aws.amazon.com/guardduty/) เป็นอีกบริการที่สามารถตรวจจับความผิดปกติ และข้อมูลภัยคุกคามแบบบูรณาการในการวิเคราะห์เหตุการณ์ที่เก็บไว้ใน [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-for-s3-resources-in-other-accounts), [VPC Flow log](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html), [DNS log](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/logging-monitoring.html) และ [S3 access logs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html) ซึ่งอาจจะมีจำนวนหลายพันล้านเหตุการณ์ในหลายๆ บัญชีการใช้งาน (AWS Account) ได้ นอกจากรวบรวม วิเคราะห์โดยใช้ machine learning หารูปแบบการเข้าถึงข้อมูลที่ผิดปกติ การเรียก API รูปแบบการใช้งานที่ผิดปกติแล้ว GuardDuty ยังสามารถแจ้ง notification เพื่อ alert สิ่งที่ผิดปกติจากกิจกรรมเหล่านั้น เพื่อให้เราสามารถใช้เป็นข้อมูลตัดสินใจในการรักษาความปลอดภัยของข้อมูลทีอยู่ใน S3 Bucket ได้
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kncq0yd00eb5xwpches1.jpeg) *รูปที่ 6 ตัวอย่างรายการที่พบโดย GuardDuty*

เมื่อกดดูในรายละเอียดแต่ละรายการ (Drill down) จะสามารถเห็นรายละเอียดที่เกี่ยวข้องกับเหตุการณ์นั้นๆ เช่น IP address, ข้อมูลที่พยายามเข้าถึง
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hyljfa0amxlahwlu51m8.jpeg) *รูปที่ 7 รายละเอียดของ IP ที่เข้าข่ายเป็น Malicious*

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

หากมีข้อสงสัย สามารถส่งความคิดเห็น comment ด้านล่างได้ครับ