วิธีกำหนดสิทธิการเข้าถึงข้อมูลผ่าน Glue data crawler

การทำงานกับข้อมูลเป็นจำนวนมาก สิ่งหนึ่งที่สำคัญและขาดไม่ได้เลยก็คือการควบคุมการเข้าถึงข้อมูลของแต่ละ 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 เท่านั้น

Create policies

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 ที่สร้าง


Assign Policy to user

ขั้นตอนนี้จะเป็นเพิ่ม 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

Test policy

ต่อไปเราจะลองเข้าใช้ง่ายด้วย 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)

Assign permission to Service

การใช้งาน 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 นี้ขึ้นมา

Test the 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 ได้

Summary

Role และ policy ถือว่าเป็นหัวใจหลักในการควบคุมการใช้งาน service ต่างๆใน AWS ไม่ว่าจะเป็นการระบุให้กับ user หรือ service ตัวอย่างทั้งหมดที่เราได้พูดถึงกันมาเป็นพื้นฐานการใช้งานเบื้องต้นเท่านั้นนะครับ การเขียน permission นั้นผมต้องบอกเลยว่าถ้าอยากเขียนให้ละเอียด เป็นอะไรที่กินพลังงานมากพอสมควรเลยแหละ แต่จากตัวอย่างนี้ผมหวังว่าทุกคนจะได้นำไปใช้งานต่อยอดกันได้นะครับ

Aa

© 2023, All Rights Reserved, VulturePrime co., ltd.