๐Ÿงญ IAM ๊ฐœ์š”

IAM = Identity and Access Management AWS ๊ณ„์ •๊ณผ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ธ์ฆ(Authentication) ๊ณผ ๊ถŒํ•œ ๋ถ€์—ฌ(Authorization) ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค

  • IAM์€ Global Service
  • AWS ๊ณ„์ • ์ƒ์„ฑ ์‹œ Root Account ์ž๋™ ์ƒ์„ฑ
    • ๊ณต์œ  ๊ธˆ์ง€
    • ์ผ์ƒ์ ์ธ ์ž‘์—…์— ์‚ฌ์šฉ ๊ธˆ์ง€

๐Ÿ‘ค IAM: Users & Groups

๐Ÿ‘ฅ Users

  • ์กฐ์ง ๋‚ด ์‹ค์ œ ์‚ฌ๋žŒ(Physical User) ์„ ๋‚˜ํƒ€๋ƒ„
  • ๊ฐ User๋Š”:
    • AWS Console ์ ‘๊ทผ์šฉ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณด์œ  ๊ฐ€๋Šฅ
    • Access Key ๋ณด์œ  ๊ฐ€๋Šฅ

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง Groups

  • Users๋งŒ ํฌํ•จ ๊ฐ€๋Šฅ
  • ๋‹ค๋ฅธ Group ํฌํ•จ ๋ถˆ๊ฐ€
  • ๋ชฉ์ :
    • ๊ณตํ†ต ๊ถŒํ•œ์„ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌ

๐Ÿ” ์†Œ์† ๊ทœ์น™

  • User๋Š”:
    • Group์— ์†ํ•˜์ง€ ์•Š์•„๋„ ๋จ
    • ์—ฌ๋Ÿฌ Group์— ๋™์‹œ์— ์†ํ•  ์ˆ˜ ์žˆ์Œ

์˜ˆ์‹œ ๊ตฌ์กฐ

  • Developers ๊ทธ๋ฃน
  • Operations ๊ทธ๋ฃน
  • Audit Team
  • ์ผ๋ถ€ ์‚ฌ์šฉ์ž๋Š” ๋‹จ๋…(User only)

๐Ÿ“œ IAM: Permissions (๊ถŒํ•œ)

๊ถŒํ•œ์€ JSON ํ˜•์‹์˜ Policy๋กœ ์ •์˜

  • ๊ถŒํ•œ ๋ถ€์—ฌ ๋Œ€์ƒ
    • User
    • Group

๐Ÿ”’ ์ตœ์†Œ ๊ถŒํ•œ ์›์น™ (Least Privilege Principle)

ํ•„์š”ํ•œ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌ โ†’ ๋ถˆํ•„์š”ํ•œ ์•ก์…˜์€ ์ ˆ๋Œ€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ

๐Ÿ“„ Policy ์˜ˆ์‹œ

{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":"ec2:Describe*",
"Resource":"*"
},
{
"Effect":"Allow",
"Action":"elasticloadbalancing:Describe*",
"Resource":"*"
},
{
"Effect":"Allow",
"Action":[
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics",
"cloudwatch:Describe*"
],
"Resource":"*"
}
]
}

๐Ÿ”— IAM Policies Inheritance (์ƒ์† ๊ตฌ์กฐ)

์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ Group์— ์†ํ•œ ๊ฒฝ์šฐ ๐Ÿ‘‰ ๋ชจ๋“  Group Policy๊ฐ€ ํ•ฉ์‚ฐ ์ ์šฉ

User
 โ”œโ”€Group: Developers
 โ”‚   โ””โ”€Policy A
 โ”œโ”€Group: Operations
 โ”‚   โ””โ”€Policy B
 โ””โ”€InlinePolicy
  • Inline Policy
    • ํŠน์ • User์—๊ฒŒ ์ง์ ‘ ์—ฐ๊ฒฐ๋œ Policy
  • ์ตœ์ข… ๊ถŒํ•œ = ๋ชจ๋“  Policy์˜ ํ•ฉ์ง‘ํ•ฉ

๐Ÿงฑ IAM Policy ๊ตฌ์กฐ (๊ตฌ์„ฑ ์š”์†Œ)

๐Ÿ“ฆ Policy ์ „์ฒด ๊ตฌ์กฐ

  • Version
    • Policy ์–ธ์–ด ๋ฒ„์ „
    • ํ•ญ์ƒ "2012-10-17" ์‚ฌ์šฉ
  • Id (์„ ํƒ)
    • Policy ์‹๋ณ„์ž
  • Statement (ํ•„์ˆ˜)
    • ํ•˜๋‚˜ ์ด์ƒ์˜ Statement ํฌํ•จ

๐Ÿงฉ Statement ๊ตฌ์„ฑ ์š”์†Œ

  • Sid (์„ ํƒ)
    • Statement ์‹๋ณ„์ž
  • Effect
    • Allow ๋˜๋Š” Deny
  • Principal
    • ์ ์šฉ ๋Œ€์ƒ (account / user / role)
  • Action
    • ํ—ˆ์šฉ ๋˜๋Š” ๊ฑฐ๋ถ€ํ•  API ์•ก์…˜
  • Resource
    • ์ ์šฉ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค
  • Condition (์„ ํƒ)
    • ์กฐ๊ฑด๋ถ€ ์ •์ฑ… ์ ์šฉ

๐Ÿ”‘ IAM โ€“ Password Policy

๊ฐ•๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ = ๊ณ„์ • ๋ณด์•ˆ์˜ ๊ธฐ๋ณธ

์„ค์ • ๊ฐ€๋Šฅ ํ•ญ๋ชฉ:

  • ์ตœ์†Œ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ธธ์ด
  • ํ•„์ˆ˜ ๋ฌธ์ž ์œ ํ˜•
    • ๋Œ€๋ฌธ์ž
    • ์†Œ๋ฌธ์ž
    • ์ˆซ์ž
    • ํŠน์ˆ˜๋ฌธ์ž
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ํ—ˆ์šฉ
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ๋งŒ๋ฃŒ ์ฃผ๊ธฐ ์„ค์ •
  • ์ด์ „ ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์‚ฌ์šฉ ๋ฐฉ์ง€

๐Ÿ›ก๏ธ Multi Factor Authentication (MFA)

๋น„๋ฐ€๋ฒˆํ˜ธ๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•จ

MFA ๊ฐœ๋…

  • MFA =
    • ๋‚ด๊ฐ€ ์•„๋Š” ๊ฒƒ (Password)
      • ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๊ฒƒ (Security Device)

MFA์˜ ํ•ต์‹ฌ ์ด์ 

๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์œ ์ถœ๋˜๋”๋ผ๋„ ๊ณ„์ •์ด ๋ฐ”๋กœ ํƒˆ์ทจ๋˜์ง€ ์•Š์Œ

  • Root Account ๋ณดํ˜ธ ํ•„์ˆ˜
  • IAM User ๋ณดํ˜ธ ํ•„์ˆ˜

๐Ÿ“ฑ MFA ๋””๋ฐ”์ด์Šค ์˜ต์…˜ (AWS ์ง€์›)

๐Ÿ“ฒ Virtual MFA Device

  • Google Authenticator (ํฐ)
  • Authy (ํฐ)
  • ํŠน์ง•
    • ํ•˜๋‚˜์˜ ๊ธฐ๊ธฐ์—์„œ ์—ฌ๋Ÿฌ ํ† ํฐ ์ง€์›

๐Ÿ” U2F Security Key

  • YubiKey (Yubico) โ€“ 3rd party
  • ํŠน์ง•
    • ํ•˜๋‚˜์˜ ํ‚ค๋กœ ์—ฌ๋Ÿฌ Root / IAM User ์ง€์›

๐Ÿ”˜ Hardware Key Fob

  • Gemalto (์ผ๋ฐ˜)
  • SurePassID (AWS GovCloud US ์ „์šฉ)

๐Ÿ”“ AWS ์ ‘๊ทผ ๋ฐฉ์‹ (3๊ฐ€์ง€)

AWS ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ •ํ™•ํžˆ 3๊ฐ€์ง€

1๏ธโƒฃ AWS Management Console

  • ์›น ๊ธฐ๋ฐ˜ UI
  • Password + MFA๋กœ ๋ณดํ˜ธ

2๏ธโƒฃ AWS CLI

  • ์ปค๋งจ๋“œ๋ผ์ธ ๋„๊ตฌ
  • Access Key ์‚ฌ์šฉ

3๏ธโƒฃ AWS SDK

  • ์ฝ”๋“œ์—์„œ AWS API ํ˜ธ์ถœ
  • Access Key ์‚ฌ์šฉ

๐Ÿ—๏ธ Access Keys

ํ”„๋กœ๊ทธ๋žจ ์ ‘๊ทผ ์ „์šฉ ์ž๊ฒฉ ์ฆ๋ช…

  • Access Key๋Š”:
    • AWS Console์—์„œ ์ƒ์„ฑ
    • ๊ฐ User๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌ
  • ๊ตฌ์„ฑ
    • Access Key ID โ‰ˆ Username
    • Secret Access Key โ‰ˆ Password
  • โš ๏ธ ์ ˆ๋Œ€ ๊ณต์œ  ๊ธˆ์ง€

๐Ÿ–ฅ๏ธ AWS CLI

์ฝ˜์†” ์—†์ด AWS๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ณต์‹ ๋„๊ตฌ

  • ๊ธฐ๋Šฅ
    • AWS ์„œ๋น„์Šค API ์ง์ ‘ ํ˜ธ์ถœ
    • ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  • ์˜คํ”ˆ์†Œ์Šค
  • AWS Management Console์˜ ๋Œ€์•ˆ

๐Ÿง‘โ€๐Ÿ’ป AWS SDK

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์—์„œ AWS๋ฅผ ์ œ์–ด

ํŠน์ง•

  • ์–ธ์–ด๋ณ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ๊ณต
  • ์ฝ”๋“œ์—์„œ AWS ์„œ๋น„์Šค ์ ‘๊ทผ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋‚ด์žฅ

์ง€์› ๋ฒ”์œ„

  • ์„œ๋ฒ„ SDK
    • JavaScript, Python, PHP, .NET, Ruby, Java, Go, Node.js, C++
  • ๋ชจ๋ฐ”์ผ SDK
    • Android, iOS
  • IoT SDK
    • Embedded C, Arduino ๋“ฑ

์ฐธ๊ณ  AWS CLI๋Š” Python์šฉ AWS SDK ์œ„์—์„œ ๋™์ž‘


๐ŸŽญ IAM Roles (์„œ๋น„์Šค์šฉ ๊ถŒํ•œ)

AWS ์„œ๋น„์Šค๊ฐ€ ์‚ฌ์šฉ์ž ๋Œ€์‹  AWS API ํ˜ธ์ถœํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ

Role์˜ ๋ชฉ์ 

  • Access Key ์—†์ด
  • ์ž„์‹œ ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ๊ถŒํ•œ ๋ถ€์—ฌ

๋Œ€ํ‘œ ์˜ˆ์‹œ

  • EC2 Instance Role
  • Lambda Function Role
  • CloudFormation Role

๐Ÿ” IAM Security Tools

๐Ÿ“„ IAM Credentials Report (Account-level)

  • ๊ณ„์ • ๋‚ด ๋ชจ๋“  User ๋ชฉ๋ก
  • ๊ฐ User์˜ ์ž๊ฒฉ ์ฆ๋ช… ์ƒํƒœ ํ™•์ธ

๐Ÿง  IAM Access Advisor (User-level)

  • User์—๊ฒŒ ๋ถ€์—ฌ๋œ ์„œ๋น„์Šค ๊ถŒํ•œ
  • ๋งˆ์ง€๋ง‰ ์‚ฌ์šฉ ์‹œ์  ํ‘œ์‹œ
  • ์ •์ฑ… ์ •๋ฆฌยท์ถ•์†Œ์— ํ™œ์šฉ

โœ… IAM Guidelines & Best Practices

๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ ํ•  ์šด์˜ ์›์น™

  • Root Account๋Š” ์ดˆ๊ธฐ ์„ค์ • ์™ธ ์‚ฌ์šฉ ๊ธˆ์ง€
  • 1๋ช… = 1 IAM User
  • ๊ถŒํ•œ์€ Group ๊ธฐ๋ฐ˜์œผ๋กœ ๊ด€๋ฆฌ
  • ๊ฐ•๋ ฅํ•œ Password Policy ์„ค์ •
  • MFA ํ•„์ˆ˜ ์ ์šฉ
  • AWS ์„œ๋น„์Šค์—๋Š” Role ์‚ฌ์šฉ
  • CLI / SDK ์ ‘๊ทผ์€ Access Key ์‚ฌ์šฉ
  • Credentials Report & Access Advisor๋กœ ์ •๊ธฐ ๊ฐ์‚ฌ
  • IAM User / Access Key ์ ˆ๋Œ€ ๊ณต์œ  ๊ธˆ์ง€

๐Ÿงพ IAM Section Summary

  • Users: ์‹ค์ œ ์‚ฌ์šฉ์ž, ์ฝ˜์†” ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณด์œ 
  • Groups: Users๋งŒ ํฌํ•จ
  • Policies: ๊ถŒํ•œ์„ ์ •์˜ํ•˜๋Š” JSON ๋ฌธ์„œ
  • Roles: EC2 ๋ฐ AWS ์„œ๋น„์Šค์šฉ ๊ถŒํ•œ
  • Security: MFA + Password Policy
  • AWS CLI: ์ปค๋งจ๋“œ๋ผ์ธ ๊ด€๋ฆฌ
  • AWS SDK: ์ฝ”๋“œ ๊ธฐ๋ฐ˜ ๊ด€๋ฆฌ
  • Access Keys: CLI / SDK ์ ‘๊ทผ์šฉ
  • Audit: Credential Reports & Access Advisor