ЁЯПл The SchoolтА║ЁЯкк AWSтА║ЁЯЧЭя╕П рдзрдбрд╛ 01 тАФ IAM рдХрд╛: рдорд╛рд╕реНрдЯрд░-рдЪрд╛рд╡реА рдмрдВрдж рдХрд░реВрди рдареЗрд╡рд╛
ЁЯЦ╝я╕П See the drawing + lab ЁЯПа Course home ЁЯМ┐ Branch on GitHub тЬПя╕П View source
ЁЯЦ╝я╕П рдЖрдХреГрддреА рдЖрдгрд┐ labThe drawing + lab рдкреВрд░реНрдг рдкрд╛рдирд╛рд╡рд░ рдЙрдШрдбрд╛ тЖЧOpen full page тЖЧ

ЁЯЧЭя╕П рдзрдбрд╛ 01 тАФ IAM рдХрд╛: рдорд╛рд╕реНрдЯрд░-рдЪрд╛рд╡реА рдмрдВрдж рдХрд░реВрди рдареЗрд╡рд╛

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 01 ┬╖ рдкреБрдвреЗ: lesson-02-users-groups


ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ

AWS рд╕реБрд░рдХреНрд╖реЗрдЪрд╛ рдкрд╛рдпрд╛: рдУрд│рдЦ (identity) рдореБрд│рд╛рдд рдХрд╛ рдЕрд╕рддреЗ, рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдирд╡реНрдпрд╛ AWS account рдиреЗ рд╕рд░реНрд╡рд╛рдд рдЖрдзреА рдХрд░рд╛рдпрдЪреА рдЧреЛрд╖реНрдЯ тАФ root рдмрдВрдж рдХрд░реВрди рдареЗрд╡рдгреЗ.

ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ

рдПрдХрд╛ рд╢рд╛рд│реЗрдХрдбреЗ рдПрдХрдЪ рдорд╛рд╕реНрдЯрд░-рдЪрд╛рд╡реА ЁЯЧЭя╕П рдЖрд╣реЗ рдЬреА рд╕рдЧрд│реЗ рдЙрдШрдбрддреЗ тАФ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ, рдХрд╛рд░реНрдпрд╛рд▓рдп, рдкрд░реАрдХреНрд╖реЗрдЪреЗ рдкреЗрдкрд░ рдареЗрд╡рд▓реЗрд▓реА рддрд┐рдЬреЛрд░реА. рдХрд▓реНрдкрдирд╛ рдХрд░рд╛, рдореБрдЦреНрдпрд╛рдзреНрдпрд╛рдкрд┐рдХреЗрдиреЗ "рд╕реЛрдкреЗ рд╡реНрд╣рд╛рд╡реЗ рдореНрд╣рдгреВрди" рддрд┐рдЪреНрдпрд╛ photocopy рдХрд╛рдвреВрди рдкреНрд░рддреНрдпреЗрдХ рд╢рд┐рдХреНрд╖рд┐рдХрд╛, рд╡рд┐рджреНрдпрд╛рд░реНрдереА рдЖрдгрд┐ рд╢рд┐рдкрд╛рдпрд╛рд▓рд╛ рдПрдХреЗрдХ рджрд┐рд▓реА.

рдЖрддрд╛: рдкрд░реАрдХреНрд╖реЗрдЪреЗ рдкреЗрдкрд░ рдлреБрдЯрддрд╛рдд. рд╣реЗ рдХреЛрдгреА рдХреЗрд▓реЗ? рдХреЛрдгрд╛рд▓рд╛рдЪ рдорд╛рд╣реАрдд рдирд╛рд╣реА тАФ рдкреНрд░рддреНрдпреЗрдХрд╛рдЪреА рдЪрд╛рд╡реА рддреА рддрд┐рдЬреЛрд░реА рдЙрдШрдбрддреЗ. рдХреЛрдгреА рд╢рд╛рд│рд╛ рд╕реЛрдбреВрди рдЧреЗрд▓реЗ? рддрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреБрд▓реВрдк рдмрджрд▓рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓.

рддреА рдорд╛рд╕реНрдЯрд░-рдЪрд╛рд╡реА рдореНрд╣рдгрдЬреЗ рддреБрдордЪреЗ AWS root account тАФ рдЬреНрдпрд╛ email рдиреЗ рддреБрдореНрд╣реА sign up рдХреЗрд▓реЗ рддреЗ. рддреЗ рд╕рдЧрд│реЗ рдХрд╛рд╣реА, рдХрд╛рдпрдордЪреЗ рдХрд░реВ рд╢рдХрддреЗ, рд╕рдВрдкреВрд░реНрдг account delete рдХрд░рдгреНрдпрд╛рд╕рд╣. AWS рдЪрд╛ рдкрд╣рд┐рд▓рд╛ рдирд┐рдпрдо:

рдорд╛рд╕реНрдЯрд░-рдЪрд╛рд╡реА рддрд┐рдЬреЛрд░реАрдд рдмрдВрдж рдХрд░рд╛. ЁЯФТ Root рд▓рд╛ MFA рдорд┐рд│рддреЗ (рддреБрдордЪрд╛ phone рд▓рд╛рдЧрдгрд╛рд░реЗ рджреБрд╕рд░реЗ рдХреБрд▓реВрдк), account-рдкрд╛рддрд│реАрдЪреНрдпрд╛ рдХрд╛рдорд╛рдВрд╕рд╛рдареА рд╡рд░реНрд╖рд╛рддреВрди рдХрджрд╛рдЪрд┐рдд рдПрдХрджрд╛ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ, рдЖрдгрд┐ рд░реЛрдЬрдЪреНрдпрд╛ рдХрд╛рдорд╛рд╕рд╛рдареА рдХрдзреАрдЪ рдирд╛рд╣реА.

рд░реЛрдЬрдЪреНрдпрд╛ рдХрд╛рдорд╛рд╕рд╛рдареА рд╢рд╛рд│рд╛ рдПрдХ рдУрд│рдЦрдкрддреНрд░ рдХрд╛рд░реНрдпрд╛рд▓рдп рдЙрдШрдбрддреЗ тАФ рддреЗрдЪ IAM. рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддреА рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ robot рд▓рд╛ рд╕реНрд╡рддрдГрдЪреЗ рдХрд╛рд░реНрдб рдорд┐рд│рддреЗ, рдЖрдгрд┐ рддреЗ рдХреЛрдгрддреА рджрд╛рд░реЗ рдЙрдШрдбрддреЗ рдпрд╛рдЪреА рд╕реНрд╡рддрдГрдЪреА рдЫреЛрдЯреА рдпрд╛рджреА. рдХрд╛рд░реНрдб рд╣рд░рд╡рд▓реЗ? рдлрдХреНрдд рдПрдХрдЪ рдХрд╛рд░реНрдб рд░рджреНрдж рдХрд░рд╛. рдПрдЦрд╛рджреА рд░рд╣рд╕реНрдпрдордп рдХреГрддреА? рдиреЛрдВрджрд╡рд╣реА рдиреЗрдордХреЗ рд╕рд╛рдВрдЧрддреЗ рдХреА рдХреЛрдгрд╛рдЪреНрдпрд╛ рдХрд╛рд░реНрдбрдиреЗ рддреА рдХреЗрд▓реА.

ЁЯЧ║я╕П рдЖрдХреГрддреА

flowchart LR
    root["ЁЯЧЭя╕П root account<br/>opens EVERYTHING, forever"]
    safe["ЁЯФТ the safe<br/>MFA on, used ~once a year"]
    iam["ЁЯкк IAM - the ID-card office<br/>a card per person and robot"]
    api["тШБя╕П every AWS action<br/>card checked FIRST,<br/>then allowed or denied"]
    root -->|"1 lock it away"| safe
    iam -->|"2 daily work uses cards"| api

тЭУ рдХрд╛рдп

ЁЯдФ рдХрд╛

рдЖрдзреАрдЪреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ course рдиреЗ рди рд╕рд╛рдВрдЧрддрд╛ IAM рд╡рд░ рднрд░ рджрд┐рд▓рд╛ рд╣реЛрддрд╛: Docker course рдордзрд▓рд╛ ECR login, k8s course рдордзрд▓реЗ EKS nodes рдЖрдгрд┐ CircleCI context, ArgoCD course рдордзрд▓рд╛ "credentials рдХрдзреАрдЪ cluster рд╕реЛрдбрдд рдирд╛рд╣реАрдд" рд╣рд╛ рдпреБрдХреНрддрд┐рд╡рд╛рдж. рд╣рд╛ course рддреА рдмрдВрдж рдкреЗрдЯреА рдЙрдШрдбрддреЛ тАФ рдХрд╛рд░рдг AWS рдордзрд▓реНрдпрд╛ рднрдпрдХрдерд╛рдВрдЪреЗ #1 рдХрд╛рд░рдг crypto рдлреЛрдбрдгрд╛рд░реЗ hackers рдирд╕рддрд╛рдд; рддреЗ рдЕрд╕рддрд╛рдд рдлреБрдЯрд▓реЗрд▓реЗ рд╕рд░реНрд╡рд╢рдХреНрддрд┐рдорд╛рди credentials, рдЬреЗ IAM рдЪреА рд╕реНрд╡рдЪреНрдЫрддрд╛ рдкрд╛рд│рд▓реА рдЕрд╕рддреА рддрд░ рдЯрд╛рд│рддрд╛ рдЖрд▓реЗ рдЕрд╕рддреЗ.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛ (рдореЛрдлрдд)

# who am I right now?
aws sts get-caller-identity
# if "Arn" ends in :root тЖТ this lesson is URGENT for you ЁЯШЕ
# it should show an IAM user or an assumed role

# the account's security report card:
aws iam get-account-summary --query 'SummaryMap.{Users:Users,MFADevices:MFADevices,AccountMFAEnabled:AccountMFAEnabled}'
# AccountMFAEnabled MUST be 1. If 0 тЖТ console тЖТ root тЖТ enable MFA today.

# console homework (5 min): sign in as root ONCE тЖТ
#   1) enable MFA on root   2) create your admin IAM user (lesson 02)
#   3) sign out of root тАФ ideally forever

тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ

aws sts get-caller-identity IAM user ARN рджрд╛рдЦрд╡рддреЛ, arn:aws:iam::ACCOUNT:root рдирд╛рд╣реА тАФ рдЖрдгрд┐ console рдордзреНрдпреЗ root account рд╡рд░ MFA рдЪрд╛рд▓реВ рджрд┐рд╕рддреЗ.

ЁЯз╣ рд╕рд╛рдлрд╕рдлрд╛рдИ тАФ рдХрд╛рд╣реАрд╣реА рдЪрд╛рд▓реВ рдареЗрд╡реВ рдирдХрд╛

рд╕рд╛рдл рдХрд░рдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реА рдирд╛рд╣реА тАФ рд╣рд╛ рдзрдбрд╛ рдореЛрдлрдд рдЖрд╣реЗ ЁЯОЙ

тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛

тПня╕П рдкреБрдвреЗ

рдорд╛рдгрд╕рд╛рдВрд╕рд╛рдареА рдХрд╛рд░реНрдбреЗ, рдЖрдгрд┐ рдкрд░рд╡рд╛рдирдЧреНрдпрд╛ рд╕рд╛рдВрднрд╛рд│рдгреНрдпрд╛рдЬреЛрдЧреНрдпрд╛ рдХрд░рдгрд╛рд▒реНрдпрд╛ рдпрд╛рджреНрдпрд╛: users & groups.

git checkout lesson-02-users-groups

ЁЯЧЭя╕П Lesson 01 тАФ Why IAM: lock away the master key

ЁЯУН You are here: Lesson 01 of 12 ┬╖ Next: lesson-02-users-groups


ЁЯУж What's in this branch

The foundation of AWS security: why identity exists at all, and the first thing every new AWS account must do тАФ lock away root.

ЁЯзТ Explain like I'm 5

A school has ONE master key ЁЯЧЭя╕П that opens everything тАФ every classroom, the office, the safe with the exam papers. Imagine the principal photocopied it and gave one to every teacher, student and janitor "to keep things simple".

Now: exam papers leak. Who did it? Nobody knows тАФ everyone's key opens that safe. Someone leaves the school? You'd have to change EVERY lock.

That master key is your AWS root account тАФ the email you signed up with. It can do everything, forever, including deleting the whole account. The first rule of AWS:

Lock the master key in the safe. ЁЯФТ Root gets MFA (a second lock that needs your phone), gets used maybe once a year for account-level things, and NEVER for daily work.

For daily work, the school opens an ID-card office тАФ that's IAM. Every person and every robot gets their own card, with their own short list of doors it opens. Lost card? Cancel ONE card. Mystery action? The logbook says exactly whose card did it.

ЁЯЧ║я╕П Diagram

flowchart LR
    root["ЁЯЧЭя╕П root account<br/>opens EVERYTHING, forever"]
    safe["ЁЯФТ the safe<br/>MFA on, used ~once a year"]
    iam["ЁЯкк IAM - the ID-card office<br/>a card per person and robot"]
    api["тШБя╕П every AWS action<br/>card checked FIRST,<br/>then allowed or denied"]
    root -->|"1 lock it away"| safe
    iam -->|"2 daily work uses cards"| api

тЭУ What

ЁЯдФ Why

Every later course leaned on IAM without saying so: the Docker course's ECR login, the k8s course's EKS nodes and CircleCI context, the ArgoCD course's "credentials never leave the cluster" argument. This course opens that black box тАФ because the #1 cause of AWS horror stories is not hackers breaking crypto; it's leaked all-powerful credentials that IAM hygiene would have prevented.

ЁЯзк Try it (free)

# who am I right now?
aws sts get-caller-identity
# if "Arn" ends in :root тЖТ this lesson is URGENT for you ЁЯШЕ
# it should show an IAM user or an assumed role

# the account's security report card:
aws iam get-account-summary --query 'SummaryMap.{Users:Users,MFADevices:MFADevices,AccountMFAEnabled:AccountMFAEnabled}'
# AccountMFAEnabled MUST be 1. If 0 тЖТ console тЖТ root тЖТ enable MFA today.

# console homework (5 min): sign in as root ONCE тЖТ
#   1) enable MFA on root   2) create your admin IAM user (lesson 02)
#   3) sign out of root тАФ ideally forever

тЬЕ Verify тАФ what you should see

aws sts get-caller-identity shows an IAM user ARN, not arn:aws:iam::ACCOUNT:root тАФ and the root account shows MFA enabled in the console.

ЁЯз╣ Clean up тАФ do not leave running

nothing to clean up тАФ this lesson is free ЁЯОЙ

тЪая╕П Common mistakes

тПня╕П Next

Cards for people, and lists that make permissions manageable: users & groups.

git checkout lesson-02-users-groups
тЖР Course homeall lessonsNext тЖТusers groups

This page is the lesson's README from the lesson-01-why-iam branch, shown here so the whole School stays on one site. Code files open on GitHub at the same branch.