02_AWS IAM: IAM Overview

AWS တွင် IAM ဘယ်လိုအလုပ်လုပ်ပြီး ဒီ service နဲ့ ဘာတွေ ရရှိနိုင်မလဲဆိုတာ နားလည်ဖို့ အရေးကြီးပါတယ်။ ဒါပေမယ့် အရေးကြီးဆုံးကတော့ ဒီ features တွေကို ဘယ်လို implement လုပ်မလဲဆိုတာကို သိဖို့ပါ။ IAM မရှိရင် သင့် resource များကို ဘယ်သူတွေ ဘာတွေကို access လုပ်နိုင်မလဲ၊ ဘာလုပ်နိုင်မလဲဆိုတာကို security မရှိဘဲ ထိန်းချုပ်ဖို့ မဖြစ်နိုင်ပါဘူး။ IAM က ဒီ access ကို စီမံခန့်ခွဲဖို့ components တွေကို ပေးပေမယ့်၊ အဲဒါကို configure လုပ်သည့်အတိုင်း strong နဲ့ secure ဖြစ်မည်ဖြစ်ပါတယ်။

သင့် AWS account အတွင်း secure, robust, နဲ့ tight security ဖြစ်စေရန် IAM ကို အသုံးပြု၍ implement လုပ်ရမည့် တာဝန်သည် သင့်တာဝန်သာဖြစ်သည်။ သင်က AWS account ရဲ့ owner ဖြစ်ပါတယ်။ သင့် access control procedures ဘယ်လောက် secure ဖြစ်ရမလဲ၊ သုံးစွဲသူတွေကို သတ်မှတ်ထားတဲ့ resources တွေကို access လုပ်ခွင့် ဘယ်လောက်ကန့်သတ်ချင်လဲ၊ password policy ဘယ်လောက်ခက်ခဲရမလဲ၊ သုံးစွဲသူတွေ Multi-factor authentication သုံးဖို့လိုမလားဆိုတာ သင်ပဲ သတ်မှတ်ရပါမယ်။ ဒီအရာအားလုံးနဲ့ အခြားအရာများသည် သင်၏ Information Security Management System (ISMS) အတွင်းရှိ သင့်ကိုယ်ပိုင် security standards နဲ့ policies များပေါ်မူတည်ပြီး သင်ပဲ architect နဲ့ implement လုပ်ရပါမယ်။

ဒီ blog မှာတော့ AWS IAM က သင့် AWS Account နဲ့ resources တွေကို access လုပ်ဖို့ လိုအပ်တဲ့ identity များအတွက် security permissions များကို centrally စီမံခန့်ခွဲနဲ့ ထိန်းချုပ်ဖို့ ဘယ် features နဲ့ components များကို အသုံးပြုသလဲဆိုတာကို ဆွေးနွေးပါမည်။

AWS Management Console အတွင်းမှာ IAM service ကို Security, Identity & Compliance category အောက်မှာ တွေ့ရပါမယ်၊ access လုပ်လျှင် IAM Dashboard ကို ရောက်ပါမယ်။

IAM Console ရဲ့ Dashboard တွင် အောက်ပါ information တွေကို ပြသပါသည်။

Dashboard အတွင်းမှာ Security Recommendations, IAM Resources, Security Best Practices, နှင့် Access Management and Access Reports categories များကို IAM Console ၏ ဘယ်ဖက်Menu တွင် တွေ့ရှိနိုင်ပါသည်။

Sign-in Link Customization

AWS Management Console ကို access လုပ်ဖို့ user တွေအတွက် sign-in link ကို customize လုပ်၍ နာမည်ကို မှတ်မိလွယ်ကူအောင် Account Alias တွင် ပြင်ဆင်နိုင်သည်။

Access management

Access Management အောက်မှာရှိတဲ့ components တစ်ခုချင်းစီကို သုံးသပ်ပြီး၊ ဘာအတွက် အသုံးပြုလဲဆိုတာကို ကြည့်ရအောင်

Users

IAM တွင် User objects တွေဟာ identity ကို ကိုယ်စားပြုဖို့ ဖန်တီးထားပါတယ်၊ ဒီဟာက သင့်အဖွဲ့အစည်းအတွင်းရှိ AWS environment ကို operate နဲ့ maintain လုပ်ဖို့ လိုအပ်တဲ့ Person တစ်ယောက် ဖြစ်နိုင်ပါတယ်၊ ဒါမှမဟုတ် အစီအစဉ်အတိုင်း AWS resources တွေနဲ့ အသုံးပြုဖို့ identity တစ်ခု ဖြစ်နိုင်ပါတယ်။ Users တွေက သင့် AWS account ကို authenticate လုပ်ဖို့ identity ကို ကိုယ်စားပြုတဲ့ objects များဖြစ်ပါတယ်။

User တစ်ဦးစီတိုင်းတွင် Amazon Resource Name, ARN ရှိပြီး၊ အဲဒီ Name တွေကို reference ပြုလုပ်နိုင်ပါတယ်။ User ရဲ့ ARN ဥပမာက အောက်ပါအတိုင်း ဖြစ်နိုင်ပါတယ်။

Users များကို configure လုပ်တဲ့အခါ Multi-Factor Authentication အတွက် set လုပ်နိုင်ပါတယ်။ MFA configure လုပ်ခြင်းက verification အဆင့်တစ်ခုကို ထပ်ဆင့်ထည့်ပေးပြီး၊ သုံးစွဲသူက သူ့ password နောက်မှ linked MFA device မှ random 6 digit number ကို ထည့်ရပါမယ်။ MFA ကို AWS Account owner နဲ့ elevated privileges ရှိတဲ့ Users များအတွက် အသုံးပြုသင့်ပါတယ်။

User Groups

IAM User Groups တွေက user objects များလိုမျိုး objects များဖြစ်ပေမယ့်၊ authentication လုပ်ငန်းစဉ်မှာ အသုံးမပြုဘဲ၊ Group ၏ အဖွဲ့ဝင်များအား AWS resource များကို authorize လုပ်ဖို့ အသုံးပြုပါတယ်။ ဒါဆိုတော့ IAM User Groups တွေမှာ IAM Users များ ပါဝင်ပြီး၊ ဒီ groups တွေမှာ AWS resources များကို access လုပ်ခွင့်ပေးသည့် IAM policies များ ပါဝင်ပါတယ်။ ဒီ policies တွေဟာ pre-existing AWS Managed policies, customer-managed policies, သို့မဟုတ် group ကိုယ်တိုင် embed လုပ်ထားတဲ့ in-line policies တွေဖြစ်နိုင်ပါတယ်။

Roles

IAM Roles တွေက Users, အခြား AWS services, နဲ့ applications များကို temporary IAM permissions များကို access လုပ်ဖို့ အခွင့်ပြုပါတယ်။ Roles တွေက User objects များလို identity တစ်ခုနဲ့ permission များကို ကိုယ်စားပြုပြီး၊ resources များကို access လုပ်ခွင့်ပေးပါတယ်။ Roles တွေက individual person တစ်ဦးကို သတ်မှတ်ထားခြင်းမဟုတ်ဘဲ၊ temporary permissions များကို လိုအပ်တဲ့ identity သို့မဟုတ် service များက assume လုပ်ဖို့ ဒီဇိုင်းဆွဲထားတာပါ။ Role တွေမှာ password မပါဝင်ဘဲ၊ correct permissions ရှိလျှင် role ကို assume လုပ်နိုင်ပါတယ်။

Policies

IAM အတွင်း အသုံးပြုတဲ့ policies တွေကို JSON documents အဖြစ်ရေးသားပြီး၊ ဘာကို access လုပ်ခွင့်ရှိမလဲ၊ ဘာကို မရှိမလဲဆိုတာ သတ်မှတ်ထားပါတယ်။ ဒီ policies တွေကို Users, User Groups, သို့မဟုတ် Roles များကို attach လုပ်နိုင်ပါတယ်။ Policies တွေနဲ့ အလုပ်လုပ်တဲ့အခါ Managed policies သို့မဟုတ် In-line policies ကို အသုံးပြုနိုင်ပါတယ်။ Managed policies တွေကို usable policies library အဖြစ်ကြည့်ရှုပြီး၊ Users, User Groups, နဲ့ Roles များစွာအတွက် အသုံးပြုနိုင်တဲ့ ၂ မျိုးရှိပါတယ်။ AWS Managed Policies: ဒါတွေကတော့ အမျိုးမျိုးသော AWS services တွေကို access လုပ်ခွင့်ပေးတဲ့ predefined policies စာရင်းဖြစ်ပါတယ်။ Customer Managed Policies: ဒါတွေကတော့ သင့်အနေဖြင့် ဖန်တီးရေးသားထားတဲ့ policies များဖြစ်ပါတယ်။ Managed policies များနှင့် မတူဘဲ Inline policies များကို library မှာ သိမ်းထားခြင်းမရှိဘဲ၊ User, User Group, သို့မဟုတ် Role တစ်ခုထဲမှာ explicitly embed လုပ်ရပါမယ်၊ ဒါကြောင့် Managed policies များလို identity တစ်ခုကနေ တစ်ခုကို လွယ်ကူစွာ အသုံးပြုလို့ မရပါဘူး။

Identity Providers (Federated Access)

သင့် AWS resources များကို federated access ပေးချင်တယ်ဆိုရင် identity provider တစ်ခုကို ထည့်ရပါမယ်။ Federated Access က AWS အပြင်ဘက်မှ credentials များကို သင့် AWS resources များကို authenticate လုပ်ဖို့ အသုံးပြုခွင့်ပေးပါတယ်။ ဥပမာအားဖြင့် သင့် on-premises Active Directory Federation server နဲ့ သင့် AWS account အကြား trust တစ်ခုကို တည်ဆောက်နိုင်ပါတယ်။ ဒါမှမဟုတ် သင့် AWS account နဲ့ Google account အကြား trust တစ်ခုကို တည်ဆောက်နိုင်ပါတယ်။ ဒီလိုဖြစ်ရင် သင့် ADFS server သို့မဟုတ် Google account ကို Identity Providers အဖြစ် configure လုပ်နိုင်ပြီး၊ Active Directory သို့မဟုတ် Google မှ authenticate လုပ်ထားတဲ့သူတွေကို သင့် AWS account ထဲမှာ resources များကို access လုပ်ခွင့်ပေးနိုင်ပါတယ်။ ဒီလိုလုပ်ခြင်းက individual IAM user accounts များကို ဖန်တီးဖို့ မလိုအပ်တော့ပါဘူး။

Account Settings

Account Settings အောက်မှာ password policy ကို enforce လုပ်နိုင်ပြီး၊ အမြဲတမ်း best practice တစ်ခုအဖြစ် လုပ်သင့်ပါတယ်။ Password policy က သင့်အဖွဲ့အစည်းမှာလိုက်နာရမည့် password standards များအတွက် minimum security requirements များကို enforce လုပ်ဖို့ အသုံးပြုသင့်ပါတယ်။ Password policy က သင့် account အတွင်းရှိ IAM users များအားလုံးကို သက်ရောက်ပြီး၊ ဒီမှာ enable/disable နဲ့ control များကို configure လုပ်ခြင်းဖြင့် အလွန်သေချာစွာ သတ်မှတ်နိုင်ပါတယ်။

STS Service (Temporary Security Credentials)

STS service က IAM users နဲ့ federated users များအတွက် temporary, limited-privilege credentials များကို တောင်းခံခွင့်ပေးပါတယ်။ STS endpoints တွေက activate လုပ်ထားတဲ့ Regions နဲ့ deactivate လုပ်ထားတဲ့ Regions စာရင်းကို ပေးပါတယ်။ ပုံမှန်အားဖြင့် Regions အားလုံးကို activate ထားပြီး၊ မသုံးစွဲမည့် regions များကို deactivate လုပ်ဖို့ အကြံပြုပါတယ်။ ပုံမှန်အားဖြင့် STS က global endpoint ဖြစ်တဲ့ https://sts.amazonaws.com ကို အသုံးပြုပြီး၊ regional endpoints ကို အသုံးပြုတဲ့အခါ latency ကို လျှော့ချနိုင်ပါတယ်။

Access Reports

Access Analyzer - ဒီဟာက သင့် “zone of trust” အတွင်းရှိ resource တစ်ခုမှာ policy တစ်ခုက “zone of trust” အပြင်ဘက်မှ access လုပ်ခွင့်ပေးတဲ့အခါ findings များကို generate လုပ်ဖို့ အသုံးပြုပါတယ်။ ဒါက sources အမျိုးမျိုးမှ ဖြစ်နိုင်ပါတယ်၊ ဥပမာအားဖြင့် IAM role တစ်ခုက cross-account access ခွင့်ပြုခြင်း၊ သို့မဟုတ် Bucket တစ်ခုက အခြား account ကို bucket ထဲ object များ upload လုပ်ခွင့်ပြုခြင်း စသဖြင့်၊ အခြားသော resource များက သင့် resources များကို external access ခွင့်ပြုခြင်းများကို flag နဲ့ highlight လုပ်ပြီး သင်သိရှိအောင် ပြသပါမယ်။ ဒီဟာက security risks နဲ့ threats များကို လျှော့ချဖို့ ကောင်းတဲ့ tool တစ်ခုဖြစ်ပြီး၊ သင့်အဖွဲ့က မတော်တဆ access ခွင့်ပြုထားတာတွေကို သိရှိစေပါတယ်။ ဘာပြဿနာတွေရှိလဲဆိုတာ Access Analyzer က finding အဖြစ် မှတ်တမ်းတင်ထားပြီး access ကို ပြန်လည်သုံးသပ်ခွင့်ပေးပါတယ်။

Credential report က သင့် IAM users အားလုံးနဲ့ သူတို့ရဲ့ credentials စာရင်းပါဝင်တဲ့ *.csv ဖိုင်တစ်ခု generate နဲ့ download လုပ်ခွင့်ပေးတဲ့ ကောင်းမွန်တဲ့ tool တစ်ခုဖြစ်ပါတယ်။ ဒီဟာက သင့် accounts များကို အလွယ်တကူ ပြန်လည်သုံးသပ်ဖို့ နဲ့ သူတို့ရဲ့ password ကို နောက်ဆုံးဘယ်အချိန်မှာပြောင်းလဲထားလဲ၊ Multi-Factor Authentication ရှိ/မရှိကို သိရှိစေပါတယ်။

Organization activity - AWS Organizations ကို အသုံးပြုပါက၊ organizational unit (OU) သို့မဟုတ် account တစ်ခုကို ရွေးပြီး ၃၆၅ ရက်အတွင်း service activity ကို ကြည့်ရှုနိုင်ပါတယ်။ ဒီအပိုင်းအတွင်းရှိ accounts များကို drill down လုပ်ပြီး၊ သုံးစွဲသူတွေ ဘယ် services များကို ဘယ်အချိန်ကာလအတွင်း access လုပ်ခဲ့သည်ကို ကြည့်ရှုနိုင်ပါတယ်။

Service Control Policies - ဒီဟာက အရင် component ဖြစ်တဲ့ ‘Organization Activity’ နဲ့ ဆက်စပ်ပြီး၊ account နဲ့ သက်ဆိုင်တဲ့ Service Control Policies များနဲ့ သက်ရောက်တဲ့ identity အရေအတွက်ကို စာရင်းပြပါတယ်။ Service Control Policies, သို့မဟုတ် SCPs, က identity-based policies များလို မဟုတ်ဘဲ၊ SCPs က permissions ကို မပေးပါဘူး။ အစား၊ SCPs က AWS Organizations နဲ့ အသုံးပြုပြီး AWS accounts များအတွက် permissions boundary ကို implement နဲ့ set လုပ်ဖို့ အသုံးပြုပါတယ်။ ဥပမာအားဖြင့်၊ AWS account အတွင်းရှိ user တစ်ဦးက IAM မှ identity-based policy ဖြင့် S3, RDS, နဲ့ EC2 ကို full access ရှိခဲ့သည်ဆိုပါစို့။ SCP က အဲဒီ AWS account အတွက် S3 service ကို access လုပ်ခွင့် ပိတ်ထားလျှင်၊ အဲဒီ user က RDS နဲ့ EC2 ကိုပဲ access လုပ်ခွင့် ရရှိမှာဖြစ်ပြီး၊ S3 ကို full access ရှိသော်လည်း အသုံးပြုခွင့်မရပါဘူး။ SCP က အဲဒီ service ကို AWS account အတွင်း အသုံးပြုခွင့်ပိတ်ထားပြီး၊ overriding precedence ရှိပြီး၊ ခွင့်ပြုချက်အများဆုံးကို သတ်မှတ်ပေးမှာဖြစ်ပါတယ်။