การทำงานกับข้อมูลเป็นจำนวนมาก สิ่งหนึ่งที่สำคัญและขาดไม่ได้เลยก็คือการควบคุมการเข้าถึงข้อมูลของแต่ละ user ใน AWS สิ่งที่เอาไว้ใช้กำหนด permission ให้กับ user หรือ service ต่างๆได้แก่ IAM role and permission ในหัวข้อนี้เราจะนำทุกคนไปดูวิธีการสร้างและใช้งาน AWS IAM กัน
senario ที่จะเอามาเป็นตัวอย่างก็คือ เราจะทำการกำหนดให้ user เข้าใช้งานได้เฉพาะ S3 bucket ที่กำหนดเท่านั้น
โดยขั้นตอนที่เราจะทำนั้นจะเป็นการใช้งานผ่าน AWS Console และ Visual configuration เพื่อให้ผู้ที่เริ่มต้นใช้งานได้เข้าใจได้ง่ายและไม่ซับซ้อน
เราจะมี bucket ชื่อ my-glue-demo-data ที่ประกอบไปด้วย 3 folder คือ customer_database, daily_order, script และเราจะสร้าง policies ที่ให้ user เข้าใช้งานได้เพียง folder customer_database เท่านั้น
Step 1: เข้าไปยัง IAM Service
Step 2: เลือกที่ Policies จาก Nav barด้านซ้าย
Step 3: Policy editor เลือกเป็น JSON และใส่ ค่าตามนี้
Step 4: กด Next
Step 5: ตั้งชื่อให้กับ policies
Step 6: กด Create Policy
Step 7: ตรวจสอบ Policy ที่สร้าง
ขั้นตอนนี้จะเป็นเพิ่ม policy ที่เราสร้างขึ้นมาให้กับ user
Step 1: เข้าไปที่ IAM Service และเลือก User ที่ต้องการเพิ่ม policy
Step 2: ที่ Tab Permissions เลือกที่ Add permissions
Step 3: เลือก Attach policies directly
Step 4: เลือก Policy ที่เราสร้างไว้ 'AccessSomeBucket'
Step 5: กด Next
Step 6: กด Add permissions
Step 7: Policy จะถูกเพิ่มเข้ามาที่ user
ต่อไปเราจะลองเข้าใช้ง่ายด้วย user 'demo' เพื่อตรวจสอบว่า policy ที่กำหนดไปนั้นทำงานได้ถูกต้อง
Step 1: Login ด้วย user demo และเข้าไปที่ S3
Step 2: ทดลองเข้า Bucket ที่ไม่ได้ให้ permission
Step 3: ทดลองเข้า Bucket ที่มี permission
Step 4: ทดสอบ download file ใน folder script ซึ่งเราไม่ได้มี permission ในการ download (GetObject)
Step 5: ทดสอบ download file ใน folder customer_database ที่มี permission ในการ download (GetObject)
การใช้งาน permission นี้กับ service นั้นก็สามารถใช้ได้เช่นกัน โดยการใช้งานผ่าน Role ที่มีการ assign policy ใส่เข้าไป และนำ Role นี้ไปใส่ให้กับ service และในหัวข้อนี้เราจะมาสอนวิธีการสร้าง Role ให้กับ Glue และวิธีการใช้งาน Role ในขั้นตอนการทำ Crawler
Step 1: เข้าไปที่ IAM Role
Step 2: เลือก Create role
Step 3: Trusted entity type เลือกเป็น AWS service
Step 4: Use case เราเลือกเป็น Glue โดยเลือกจาก drop-down list
Step 5: กด Next
Step 6: ค้นหา และเลือก policy AWSGlueServiceRole และ AccessSomeBucket ที่เราสร้างไว้
Step 7: กด Next
Step 8 ตั้งชื่อให้กับ Role 'glue_access_some_bucket'
Step 9: กด Create Role เพื่อสร้าง Role นี้ขึ้นมา
เราจะทดสอบสร้าง Crawler โดย Assign Role ที่สร้างขึ้นมาใหม่นี้เข้าไป แล้วลอง Crawler data จาก S3
Step 1: สร้าง Crawler สำหรับดึงข้อมูลจาก folder customer_database โดยกำหนด Role เป็น glue_access_some_bucket
Step 2: ทดลอง run crawler จะ get ข้อมูลได้ตามปกติ
Step 3: สร้าง Crawler สำหรับดึงข้อมูลจาก folder daily_order โดยกำหนด Role เป็น glue_access_some_bucket
Step 4: เมื่อลอง Run Crawler จะพบว่าไม่สามารถ Access ไปยัง Object ได้
Role และ policy ถือว่าเป็นหัวใจหลักในการควบคุมการใช้งาน service ต่างๆใน AWS ไม่ว่าจะเป็นการระบุให้กับ user หรือ service ตัวอย่างทั้งหมดที่เราได้พูดถึงกันมาเป็นพื้นฐานการใช้งานเบื้องต้นเท่านั้นนะครับ การเขียน permission นั้นผมต้องบอกเลยว่าถ้าอยากเขียนให้ละเอียด เป็นอะไรที่กินพลังงานมากพอสมควรเลยแหละ แต่จากตัวอย่างนี้ผมหวังว่าทุกคนจะได้นำไปใช้งานต่อยอดกันได้นะครับ