AWS IAM: การใช้งาน Switch Role

การ Switch Role คือการสร้างโรลเพื่อมอบสิทธิ์ชั่วคราวในการใช้งาน ตัวอย่างเช่น เราจองโรงแรมและได้บัตรทานอาหารมาสำหรับเข้าใช้งานโรงอาหารของโรงแรม แต่ทันทีที่เรา Check out สิทธิ์ในการใช้โรงอาหารก็จะหายไปทันที
2021.10.12

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

AWS IAM คืออะไร ?

เป็นบริการจัดการสิทธิ์ของ AWS สามารถกำหนดสิทธิและจัดการใช้งานเข้าสู่ AWS Management Console ด้วยการจำกัดและตรวจสอบการเข้าใช้งานโปรแกรมของผู้ใช้ ให้เราลองเปรียบเทียบว่าเว็บไซต์ของเราคือ ร้านกาแฟ เมื่อมีการเพิ่มพนักงานของร้านเราก็ต้องทำการให้สิทธิการใช้งานเครื่องแคชเชียร์อาจจะเป็นกุญแจหรือรหัสผ่านเพื่อยินยันตัวตนว่าคือบุคคลที่สามารถใช้งานเครื่องได้ซึ่ง AWS IAM นั้นก็จะมาจัดการในส่วนนี้เพื่อป้องกันไม่ให้เกิดปัญหาด้านความปลอดภัยจากการถูกทราบ AWS KEY จึงจำเป็นต้องกำหนดสิทธิ (โปรดใช้ความระมัดระวังเมื่อกำหนดสิทธิ เช่น สิทธิของผู้ดูแลระบบ หรือ สิทธิของ IAM )

แต่ในบล็อกนี้ผมจะมาอธิบายเกี่ยวกับการทำ Switch Role เพื่อนำมาใช้ในการให้สิทธิการใช้งานกับอีกฝ่าย

Switch Role

การ Switch Role คือการสร้างโรลเพื่อมอบสิทธิ์ชั่วคราวในการใช้งาน ตัวอย่างเช่น เราจองโรงแรมและได้บัตรทานอาหารมาสำหรับเข้าใช้งานโรงอาหารของโรงแรม แต่ทันทีที่เรา Check out สิทธิ์ในการใช้โรงอาหารก็จะหายไปทันที

ขั้นตอนการทำ Switch Roles

ในตัวอย่างผมจะมีการใช้งาน 2 Account โดยแบ่งออกเป็น

  • First Account เป็นแอคเคาท์ที่มีสิทธิ์การใช้งานสูงสุดและสามารถมอบสิทธิ์การใช้งานให้กับแอคเคาท์อื่นได้
  • Second Account เป็นแอคเคาท์ที่ไม่มีสิทธิ์การใช้งานแต่จะถูกมอบโรลให้สามารถสิทธิ์การใช้งานเพิ่มขึ้นได้

การสร้าง Role (First account)

อันดับแรกให้เราทำการเข้าใช้งาน First Account และเข้าไปยังหน้า AWS IAM เพื่อทำการสร้าง Role ขึ้นมา สำหรับมอบสิทธิ์ใช้งานให้กับแอคเคาท์อื่นได้

โดยจะมีขั้นตอนทั้งหมด 4 Step

Step: 1 หัวข้อ Select type of trusted entity

  • ให้เราเลือก Another AWS account
  • ใส่ ID ที่เราต้องการจะมอบสิทธิ์การใช้งาน Role
  • ติ้ก Require MFA เพื่อเพิ่มความปลอดภัยในการใช้งาน
  • กด Next: Permission

Step: 2 หัวข้อ Attach permissions policies

  • ตื้กเลือกเป็น AdministratorAccess
  • กด Next: Tags

Step: 3 หัวข้อ Add Tags

  • ส่วนนี้ให้ข้ามไปได้เลย ไม่ต้อง Add tags อะไรเพิ่มเติม

Step: 4 หัวข้อ Review

  • Role Name ให้เราตั้งชื่อโรลที่เราต้องการจะมอบสิทธิ์
  • กด Create role ได้เลย

การทำ Trust relationships (First account)

เป็นการเพิ่มสิทธิ์แอคเคาท์ที่สามารถนำ Role ไปใช้งานได้ โดยการใส่ Account ID ที่เราต้องการจะมอบสิทธิ์ไปใช้งานหลังจากที่เราทำการสร้าง Role เสร็จเรียบร้อย แล้วให้เข้าไปที่ Role ของเรา

และเข้ามาดูในหัวข้อ Trust relationships

  • จากนั้นกด Edit trust relationship
  • ตามด้วยการใส่โค้ดดังตัวอย่างโดยทำการเปลี่ยน root เป็น :user/และตามด้วยชื่อแอคเคาท์ที่เราต้องการจะมอบสิทธิ์ในการใช้งาน Role ที่เราสร้างจากนั้นทำการ Update Trust Policy
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow"
      "Principal": {
        "AWS": "arn:aws:iam::xxxxxxxxxxxx:user/account_name"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": "true"
         }
       }
     }
   ]
}

การรับสิทธิ์ใช้งาน Role ของแอคเคาท์ปกติ

ในขั้นตอนนี้ให้เราล้อกอินแอคเคาท์ที่ 2 หรือ Second Account ที่อธิบายไปก่อนหน้านี้ซึ่งเป็นแอคเคาท์ที่ไม่มีสิทธิ์การใช้งานแต่จะถูกมอบโรลให้สามารถสิทธิ์การใช้งานเพิ่มขึ้นได้ โดยเราจะทำการรับสิทธิ์การใช้งาน Role ที่เราสร้างไปก่อนหน้านี้จาก Frist account

การสร้าง Policy (Second Account)

เริ่มต้นให้เข้าไปที่หน้า AWS IAM จากนั้นเข้าไปที่หัวข้อ Policy และกดปุ่ม Create Policy ดังรูป

  • เลือกหัวข้อ JSON และนำโค้ดด้านล่างมาใช้งานและทำการกด Next: Tags
{
  "Version": "2012-10-17",
  "Statement": [
    {
       "Effect": "Allow",
       "Action": [
           "sts:AssumeRole"  /// sts:AssumeRole คือการกำหนดให้แอคเคาท์ของเราสามารถใช้งาน Role ได้
        ],
        "Resource": [
            "*"
        ]
     }
   ]
}

  • ในส่วนหัวข้อ Add Tags ให้เรากดปุ่ม Next: Review ได้เลยไม่จำเป็นต้องเพิ่มข้อมูลอะไร
  • ต่อมาเราจะเจอหน้า Policy ให้เราทำการสร้าง Policy Name ของเราเองโดยในตัวอย่างผมจะใช้ชื่อ cmth-allow-assumerole เพื่อเป็นการนิยามความสามารถของ policy นี้ว่าสามารถทำการใช้งาน Role หรือ Switch Role ได้ จากนั้นทำการกด Create policy ได้เลย

การ Add permissions (Second Account)

หลังจากที่เราสร้าง Policy หรือนโนบายสำหรับการใช้งาน role แล้วต่อมาเราจะทำการนำนโยบายที่เราสร้างก่อนหน้านี้มาใช้งานได้

  • อันดับแรกให้เราเข้าไปที่หัวข้อ User ใน AWS IAM และคลิ้กเข้าไปที่ Username ของเรา

  • ทำการกด Add permissions ให้กับแอคเคาท์

  • กดไปที่หัวข้อ Attach existing policies directly และทำการค้นหาชื่อ Policy ของเราที่สร้างไปก่อนหน้านี้จากนั้นแล้วเลือกมาใช้งานโดยการกด Next: Review
  • เมื่อขึ้นหน้าต่างแสดงผลนี้ให้เรากด Add permissions ได้เลย

การทำ Switch Role (Second Account)

  • หลังจาก Add permission เสร็จแล้วให้เราคลิ้กไปที่ชื่อแอคเคาท์ของเราที่เมนูมุมขวาบนและกดไปที่หัวข้อ Switch Roles
  • จากนั้นระบบจะแสดงหน้าต่างนี้ขึ้นมาให้กด Switch Role อีกครั้ง
  • พอถึงหน้านี้ระบบจะให้เรากรอกข้อมูล

    • Account: ให้ใส่ไอดีของ First account เป็นแอคเคาท์หลักที่ใช้ทำการสร้าง Role ก่อนหน้านี้
    • Role: ให้ใส่ชื่อแอคเคาท์หลักที่ใช้ทำการสร้าง Role ก่อนหน้านี้
    • Display name: ในส่วนนี้จะสามารถใช้ชื่ออะไรก็ได้ตามที่เราต้องการเพื่อใช้ในการนิยาม Role ที่เราจะทำการใช้งาน

    เมื่อเรากรอกข้อมูลครบแล้วก็ให้ทำการกด Switch Role ได้เลย

สรุปผล

เมื่อเราทำการ Switch Role ได้แล้ววิธีการสังเกตก็คือให้ดูที่ชื่อแอคเคาท์ของเรามุมขวาบนจะสังเกตได้ว่าตอนนี้แอคเคาท์ของเราเป็นชื่อโรลที่เราสร้างขึ้นเรียบร้อยแล้ว ดังนี้เราก็สามารถใข้งานและมีสิทธิ์การเข้าถึงข้อมูลเหมือนกับแอคเคาท์หลัก หรือ First account นั้นเอง