ลองกำหนดสิทธิ์ในการสร้าง AWS S3 Bucket กัน จากกรณีศึกษาของ True

Softnix
Softnix
Published in
3 min readApr 18, 2018

จากข่าวของ True ช่วงนี้ดราม่าสุดๆ ก็เลยอยากจะลองดูว่าการตั้งค่าสำหรับ Bucket บนบริการ Files Server ของ AWS ที่ชื่อ S3 กันดูในส่วนที่เกี่ยวกับการกำหนดสิทธิ์มันกำหนดอย่างไรได้บ้าง ซึ่งในกรณีของ True เขาวางไฟล์บัตร ปชช ลูกค้าไว้ที่ S3 แล้วจากข่าวบอกว่า กำหนดสิทธิ์พลาดทำให้ใครก็ตามใน internet สามารถเข้าถึงได้

สร้าง Public Bucket

ลองสร้าง Bucket ที่ชื่อ softnix-public แล้วกด Next ดังรูป

ตรง Manage public permission กำหนดเป็น Grant public read access to this bucket ซึ่งจะมีคำเตือนแสดงขึ้นมาเตือน ชัดเจน ดังรูป

ไม่สนใจ กด Next ต่อ และเมื่อสร้างเสร็จ Bucket จะมีสัญลักษณ์สีส้ม ระบุว่า Public ดังรูป

ลองอับโหลดไฟล์ pdf ขึ้นไปดู และดู Property ของไฟล์ดังนี้

ลอง Browse Folder ผ่าน Web Browser ของเราจาก Link ที่ปรากฏ จะเห็นชื่อไฟล์ list ออกมาเป็น XML Code และถ้าเราสร้าง sub folder ย่อยข้างใน ก็จะ List ออกมาทั้งหมดเช่นกัน รวมทั้ง Files ภายใน Folder ด้วย เรียกได้ว่า หมดใส้หมดพุงกันเลย

แต่แค่เห็นนะครับ แต่ดาวน์โหลดไม่ได้ จะดาวน์โหลดได้ก็ต้องคลิ๊กที่ปุ่ม Make Public ก่อน ดังภาพ

Link ดังกล่าวจะดาวน์โหลดได้แล้วครับ

สร้าง Private Bucket

ลองสร้างใหม่อีกครั้ง ตั้งชื่อ Bucket ชื่อ softnix-private กำหนดเป็น Private ตาม Recommended ไม่แก้ค่าใดๆ เลย เพราะ Default กำหนดให้เป็น Private อยู่แล้ว ดังรูป

เสร็จแล้วจะได้ดังนี้

จะสังเกตุว่า Access ระบุ Not public

ดู Link

เมื่อ Browse เข้าไปตาม Link ก็ไม่ได้แล้วครับ ขึ้น AccessDenied ดังรูป

แต่ถ้าหากกดปุ่ม Make Public ก็จะดาวน์โหลดได้เช่นกันครับ

การ Make public ระดับ Folder

หากเรา make public ระดับ folder จะมีการแจ้งเตือน ก่อน ตัวอย่างผมสร้าง Folder ชื่อ data_public และเลือก make public ดังภาพ

ระบบจะเตือนให้ทราบให้ Confirm

สรุป

การตั้งค่า Bucket บน S3 ของ AWS นั้นถ้ากำหนดเป็น Public มันจะสามารถ Browsable ได้ ซึ่งจะเห็น list ไฟล์พร้อมทั้ง sub folder นั้นออกมา แต่ก็ยังดาวน์โหลดไม่ได้อยู่ดี แต่ถ้า Bucket กำหนดเป็น Private อันนี้จะ Browsable ไม่ได้ และเช่นกัน ดาวน์โหลดไม่ได้เหมือนกัน จนกว่าจะกำหนด Make public ดังนั้นการกำหนดทั้ง 2 แบบ จะดาวน์โหลดไฟล์จาก internet ได้ หากกำหนด Make public เท่านั้น และถ้า Make public ระดับ Folder มันจะมีแจ้งเตือนอีกครั้ง

ดังนั้นกรณีของ itruemart เข้าใจว่า ระบบการทำงานคงทำผ่าน API ทั้งหมด (ความสามารถของ AWS) เพราะต้องทำงานร่วมกับ Web site ของ itruemart เช่นการลงทะเบียน จดทะเบียนซิมต่างๆ โดยการเขียนโปรแกรม และ Developer อาจจะระบุ API properties บางอย่างที่เกี่ยวข้องกับ Make public ไม่ถูกต้อง ทำให้สถานะของไฟล์เป็น Make public ไปด้วย เพราะหากทำผ่าน Management Console ของ AWS สังเกตุว่าระบบแจ้งเตือนทุกขั้นตอนสำคัญ ดังนั้นการพลาดน่าจะทำได้ยากกว่า

…. ทั้งหมดนี้เป็นเพียงทำขึ้นเพื่อศึกษา และสันนิษฐานนะครับ ผิดถูกยังไง ไม่ทราบได้ แต่เข้าใจว่าทีมงาน True คงรู้ดีอยู่แล้ว เราเองก็ได้แค่ตามข่าวและอยากลองดูเพราะถ้าเราทำเองจะได้ให้ความสำคัญกับเรื่องนี้พอสมควร

ถึงจุดนี้แล้ว นึกถึงคนที่เขาพูดกันเลย DevSecOps (http://www.devsecops.org)

--

--