IAM - 100-hours-a-week/9-team-Devths-WIKI GitHub Wiki

๋ชฉ์ฐจ (ํŽผ์น˜๊ธฐ/์ ‘๊ธฐ)

๐Ÿ“„ IAM ๋ฐ ์ธํ”„๋ผ ์ ‘๊ทผ ์ œ์–ด ์„ค๊ณ„ ๋ช…์„ธ

๐Ÿ’ก ์ตœ์†Œ ๊ถŒํ•œ ์›์น™(Least Privilege)์ด๋ž€? ์‚ฌ์šฉ์ž์—๊ฒŒ ์—…๋ฌด ์ˆ˜ํ–‰์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌํ•˜์—ฌ, ์‹ค์ˆ˜๋‚˜ ๊ณ„์ • ํƒˆ์ทจ๋กœ ์ธํ•œ ํ”ผํ•ด๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ณด์•ˆ ์›์น™์ž…๋‹ˆ๋‹ค.


1. ๊ฐœ์š”

๋ณธ ๋ฌธ์„œ๋Š” ์šฐ๋ฆฌ ์„œ๋น„์Šค์˜ ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ(์ด๋ ฅ์„œ, ๊ฐœ์ธ์ •๋ณด)๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ IAM ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ธํ”„๋ผ ์ ‘๊ทผ์€ ์‹ ์› ์ธ์ฆ(MFA)์ด ์™„๋ฃŒ๋œ ์ƒํƒœ์—์„œ๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. MFA๊ฐ€ ๋˜์–ด์žˆ์ง€์•Š์œผ๋ฉด, ๊ถŒํ•œ ๋ถ€์กฑ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

2. ์‚ฌ์šฉ์ž๋ณ„ ๊ถŒํ•œ ํ• ๋‹น ํ˜„ํ™ฉ

๊ตฌ๋ถ„ ์‚ฌ์šฉ์ž ์ฃผ์š” ํ• ๋‹น ์ •์ฑ… ์ ‘๊ทผ ์ˆ˜์ค€
Cloud david, henry AdministratorAccess, Force-MFA-Factor, SSM-Session ์ธํ”„๋ผ ์ „๊ถŒํ•œ ๋ฐ ๋ณด์•ˆ ๊ด€๋ฆฌ
Full-Stack neon, yun ReadOnlyAccess (S3, EC2, DB ๋“ฑ), SSM-Session, Force-MFA-Factor, S3-Access-Devths-dev ๋ฆฌ์†Œ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์ฝ๊ธฐ ๊ถŒํ•œ
AI estar ReadOnlyAccess (S3, EC2 ๋“ฑ), SSM-Session, Force-MFA-Factor, S3-Access-Devths-dev ๋ฆฌ์†Œ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์ฝ๊ธฐ ๊ถŒํ•œ
Backend s3 S3-Access-Devths-dev [Non-MFA] CLI์šฉ ๊ฐœ๋ฐœ์šฉ S3 ๊ถŒํ•œ (Presigned-URL)
CI/CD github-actions S3-Access-Devths-artifact, AWSCodeDeployRole [Non-MFA] CLI์šฉ CICD ์ „์šฉ S3 ๋ฒ„ํ‚ท ๊ถŒํ•œ

3. ํ•ต์‹ฌ ๋ณด์•ˆ ์„ค๊ณ„ ์ „๋žต

3-1. MFA ๊ฐ•์ œ ์ •์ฑ… (Force-MFA-Factor)

์šฐ๋ฆฌ ์„œ๋น„์Šค์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž๋Š” ๋กœ๊ทธ์ธ ์‹œ MFA(2์ฐจ ์ธ์ฆ)๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ๋™์ž‘ ๋ฐฉ์‹: DenyAllExceptListedIfNoMFA ๊ตฌ๋ฌธ์„ ํ†ตํ•ด MFA ๋ฏธ์ธ์ฆ ์‹œ ๋ชจ๋“  Actions์„ Deny ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ž์œจ์„ฑ ๋ถ€์—ฌ: ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ํŒจ์Šค์›Œ๋“œ์™€ MFA ๊ธฐ๊ธฐ๋Š” ์ง์ ‘ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก iam:CreateVirtualMFADevice ๋“ฑ์˜ ๊ถŒํ•œ์€ ์˜ˆ์™ธ์ ์œผ๋กœ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

3-2. ์ง๋ฌด๋ณ„ ์ฐจ๋“ฑ ๊ถŒํ•œ (RBAC)

  • Admin: ์ธํ”„๋ผ ๊ตฌ์ถ• ๋ฐ ๋ณด์•ˆ ์„ค์ •์„ ์œ„ํ•ด ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • Full-Stack: ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ํ™•์ธ์„ ์œ„ํ•ด ์ฝ๊ธฐ ๊ถŒํ•œ(ReadOnly)์„ ๋ถ€์—ฌํ•˜๋˜, ์‹ค์ˆ˜๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ์‚ญ์ œ๋‚˜ ์ธํ”„๋ผ ๋ณ€๊ฒฝ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

3-3. SSM ๊ธฐ๋ฐ˜์˜ ์„ธ์…˜ ์ œ์–ด

SSM-Session ๊ถŒํ•œ์€ ๊ธฐ์กด SSH ํ‚ค ๊ณต์œ  ๋ฐฉ์‹์˜ ์œ„ํ—˜์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.ํŠน์ • ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ผญ ํ•„์š”ํ•œ ssm:StartSession ๊ถŒํ•œ๋งŒ ์ง์ ‘ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ถŒํ•œ ์˜ค๋‚จ์šฉ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, SSM๊ณผ CloudWatch+S3๋ฅผ ํ†ตํ•ด์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์•…์„ฑ ํ‚ค์›Œ๋“œ(rm -rf ๋“ฑ)์ด ์ž…๋ ฅ๋˜๋ฉด ๋ชจ๋‹ˆํ„ฐ๋ง ์ฑ„๋„๋กœ ์•Œ๋ฆผ์ด ์˜ค๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์œ„ํ—˜ํ•œ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด์„œ ํ˜„์žฌ ์ •ํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. (sudo su๋Š” ์ฒดํฌ์šฉ)

๋กœ๊ทธ ๊ธฐ๋ก ๋ฐ ์•Œ๋ฆผ ์ด๋ฏธ์ง€ (ํŽผ์น˜๊ธฐ/์ ‘๊ธฐ) image image

4. ์„œ๋น„์Šค ํŠน์„ฑ์— ๋”ฐ๋ฅธ ์„ค๊ณ„ ์ด์œ 

Q. ์™œ CLI์šฉ ๊ถŒํ•œ์ด ๋”ฐ๋กœ ์žˆ๋Š”๊ฑด๊ฐ€์š”?

  • Github Actions๋‚˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์˜ ์Šคํฌ๋ฆฝํŠธ(CLI)๋Š” ์‚ฌ๋žŒ์ด ์ง์ ‘ OTP ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ๊ณ„์ •๋“ค์€ MFA๊ฐ€ ์—†๋Š” ๋Œ€์‹ , ์ „์ฒด ์ธํ”„๋ผ ๊ถŒํ•œ์ด ์•„๋‹Œ ํŠน์ • S3 ๋ฒ„ํ‚ท(dev-data, artifact)์—๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒํ•œ์„ ์ข๊ฒŒ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ CI/CD ํ‚ค๊ฐ€ ํƒˆ์ทจ๋˜๋”๋ผ๋„ ๊ณต๊ฒฉ์ž๋Š” ๋ฐฐํฌ ํŒŒ์ผ ์ €์žฅ์†Œ ์™ธ์— ๋‹ค๋ฅธ ์ธํ”„๋ผ(DB, VPC ์„ค์ • ๋“ฑ)์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Q. ์™œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ReadOnly๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์ฃผ๋‚˜์š”?

์šฐ๋ฆฌ ์„œ๋น„์Šค๋Š” ์ด๋ ฅ์„œ์™€ ํฌํŠธํด๋ฆฌ์˜ค๋ผ๋Š” ๋ฏผ๊ฐํ•œ ๊ฐœ์ธ์ •๋ณด๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

  • ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ DB ๋‚ด์šฉ์„ ํ™•์ธํ•ด์•ผ ํ•˜์ง€๋งŒ, ์šด์˜ ํ™˜๊ฒฝ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ํ–‰์œ„๋Š” ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์— ์น˜๋ช…์ ์ž…๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ '์ฝ๊ธฐ ์ „์šฉ'์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ํœด๋จผ ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

Q. ์™œ MFA ์ •์ฑ…์ด ์ดํ† ๋ก ๊ฐ•๋ ฅํ•œ๊ฐ€์š”?

  • ๊ด€๋ฆฌ์ž๋‚˜ ๊ฐœ๋ฐœ์ž์˜ ๊ณ„์ •์ด ํƒˆ์ทจ๋  ๊ฒฝ์šฐ, ์ˆ˜๋งŒ ๋ช…์˜ ์ด๋ ฅ์„œ ํŒŒ์ผ์ด๋‚˜ ๊ฐœ์ธ์ •๋ณด๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ์œ ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ID/PW ์™ธ์— ๋ฌผ๋ฆฌ์  ์žฅ์น˜(OTP)๋ฅผ ํ†ตํ•œ 2์ค‘ ๋ฐฉ์–ด์„ ์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์œ ์ถœ ์‚ฌ๊ณ ๋ฅผ ์›์ฒœ ์ฐจ๋‹จํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

Q. ์™œ SSM ๊ถŒํ•œ์„ ์‚ฌ์šฉํ–ˆ๋‚˜์š”?

โš ๏ธ **GitHub.com Fallback** โš ๏ธ