Labs - IAM Roles cross-account access

အားလုံးဘဲ မင်္ဂလာပါ။
ဒီနေ့ပြောပြသွားမယ့် Lab လေးကတော့ Roles တစ်ခု create လုပ်ပြီး သွားတဲ့ အခါမှာ အဲ့ roles ကို create လုပ်ခဲ့တဲ့ account မှာ ရှိနေတဲ့ user ကဘဲ သုံးလို့ ရတာမဟုတ်ဘဲ နဲ့ တခြား account တစ်ခုမှာ ရှိနေတဲ့ user ကပါ ယူသုံးလို့ ရတယ်ဆိုတာကို lab လုပ်ပြသွားမှာ ဖြစ်ပါတယ်။
AWS Account B မှာ ရှိနေတဲ့ IAM user လေးက AWS Account A မှာ ရှိနေ တဲ့ IAM roles ကို သုံးပြီးAccount A မှာ ရှိနေတဲ့ S3 Bucket ကို fullaccess လုပ်လို့ရတာလေးကို ပြောပြသွားမှာ ဖြစ်ပါတယ်။

ပထမဆုံး အနေနဲ့ AWS account 2 ခု ရှိရပါမယ်။
Account A ထဲမှာ S3 bucket တစ်ခု create လုပ်ရပါမည်။ Objects ထည့်ထားချင်လည်းရပါတယ်။
Account A ထဲမှာ Roles create လုပ်ရပါမည်။
Account B ထဲ မှာ IAM user create လုပ်ရပါမည်။ အဲ့ IAM user မှာ Account A မှာ ရှိနေတဲ့ roles ကို assume role လုပ်ပါမယ်ဆိုတဲ့ permissions policy attach လုပ်ပေးရပါမယ်။
Account 2 ခု ရှိထားပြီးသားဖြစ်တဲ့ အတွက် အခု Account A မှာ S3 bucket တစ်ခု create လုပ်ပါမယ်။
Bucket name - labbucket-3189 နာမည်နဲ့ bucket တစ်ခု create လုပ်ထားပါမည်။
Bucket ထဲမှာ object တစ်ခု ထည့် ထားလိုက်ပါ တယ်။


Roles create လုပ်ပါမည်။
IAM > Roles > Create role
Roles ကို create လုပ်တဲ့ အခါမှာ Trusted entity type ရွေးပေးရပါတယ်။ အခု lab အတွက် AWS Account ကို ရွေးပါမည်။

AWS Account ကို ရွေးပြီးတဲ့ အခါမှာ ဘယ် account ID က ဒီ roles ကို သုံးမှာလဲ ဆိုပြီး Account ID သတ်မှတ် ပေးရပါမည်။
Another AWS Account ကို select လုပ်ပါမည်။ Account B ရဲ့ ID ကို ထည့်ပေး ရပါမည် ။

နောက် တ ဆင့် အနေ နဲ့ Roles မှာ တွဲမယ့် permissions ရွေးချယ်ပေး ရပါမည်။
ဒီ Lab အတွက် S3Fullaccess permission ရွေးချယ်ပေးပါမည်။

Role name ပေးပါမည် ။
Then Create role.

အခု ဆိုရင် Account A ဘက် မှာ S3 bucket and roles create လုပ်ပြီးသွားပါပြီ။
Roles ရဲ့ Trusted entity မှာ another account (Account B) ရဲ့ ID ကို ရွေးချယ်ထားပါတယ်။
Roles မှာ S3Fullaccess permissions သတ်မှတ်ထားပါတယ်။

အခု နောက်တစ်ဆင့် အနေ နဲ့ Account B ထဲကို ဝင်ပြီး IAM user create လုပ်ပါမယ်။
IAM > user > create user

Next >
user ကို permission သတ်မှတ်ပေးရပါမည်။ Attach policies directly ကို ရွေးပါမည်။
အခု သတ်မှတ်ချင် သော policy ကို create လုပ်ရန် create policy ကို ရွေးပါမည်။

Create policy > JSON ကို ရွေးပါမည်။

အောက်ပါ policy ကို ရေးပါမည်။
Account B မှာ ရှိတဲ့ Hla_Hla ဆိုတဲ့ IAM user သည် Account A မှာ ရှိနေတဲ့ roles ကို သုံးမှာ ဖြစ်လို့
Effect : Allow
Action : sts : AssumeRole
Resource မှာ Account A မှာ ရှိတဲ့ roles name ARN ကို copy သွားယူပြီး ထည့်ပေးရမှာ ဖြစ်ပါတယ်။


Next > Policy name ပေးပါမည် ။
Create policy.

Create policy ကို နှိပ်ပြီး လျှင် user create လုပ်နေတဲ့ tab ဘက်ကို ပြန်လာရပါမည်။
Create policy ရှေ့က refresh policies ကို နှိပ်မှ create လုပ်ခဲ့ သော policy name ကို မြင်ရမည် ဖြစ်ပါသည်။
မိမိ create လုပ်ခဲ့ သော policy ကို ရွေးပါ။


Next > Create user.
အခု ဆိုရင်တော့ Account B ထဲမှာ IAM user create လုပ်ပြီးသွားပြီ ဖြစ်ပါတယ်။
အဲ့ IAM user သည် Account A မှာ ရှိတဲ့ roles ကို သုံးပါမယ်ဆိုပြီး permissions လည်း သတ်မှတ်ပြီးပြီ ဖြစ်ပါသည်။

Account B ရဲ့ IAM user Hla_Hla နဲ့ login ဝင်ထားပါမည်။

S3 ကို ဝင်ကြည် ပါမည်။ အောက််ပါအတိုင်း တွေ့ရပါလိမ့်မည်။
Hla_Hla ဆိုတဲ့ user မှာ assume role policy ကလွဲလို့ တခြား ဘာ permissions policy မှ attach လုပ်ထားတာ မရှိလို့ ဖြစ်ပါတယ်။

Switch role လုပ်ရန် အတွက် account id ရဲ့ arrow ကို နှိပ်ပြီး Add session > New role လုပ်ပါမည်။

အောက်ပါ အတိုင်း ပေါ်လာပါမည်။
Account ID - role ရှိသော account ID or Alias (Account A ရဲ့ Account ID or alias ထည် ပေးရပါမည်။ )
IAM role name - role name ထည့် ပေးရပါမည်။
Switch role >

S3 bucket ကို ဝင် ကြည့်ပါမည်။

Objects ကို လည်း delete လုပ်လို့ရတာ တွေ့ရပါလိမ့်မယ်။







