Sam Baek, The Dev's Corner

๐Ÿ”ง AWS - MFA ์„ค์ • ๋ฐฉ๋ฒ•

17 Jul 2023

์„œ๋ก 



์ตœ๊ทผ ๋“ค์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ SQL์„ ํ’€์–ด๋ณด๋Š” ์žฌ๋ฏธ์— ๋น ์ ธ์„œ
๊ฒŒ์ž„ ํ•˜๋“ฏ์ด ๋ฌธ์ œ ํ’€๋ฉฐ ์‹œ๊ฐ„์„ ๋ณด๋‚ด๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
์ค‘๊ฐ„์ค‘๊ฐ„ Redux๋„ ์ปค์Šคํ…€ํ•˜๊ธฐ ์œ„ํ•ด ์—ฐ๊ตฌํ•˜๋‹ค๊ฐ€ Hook์ด๋ž‘ ์—ฐ๋™๋„ ํ•ด๋ณด๋‹ค
๊ฒฐ๊ตญ ์–ด๋А์ƒŒ๊ฐ€ Node๋ฅผ ๋ถ™์žก๊ณ  ์žˆ๋Š”๋ฐ
ํ†ฐ์บฃ๊ณผ ์ž๋ฐ”, mysql์„ ๋…๋ฆฝ์ ์œผ๋กœ ์จ์˜ค๋‹ค๊ฐ€ AWS RDS๋ฅผ ์ƒ์„ฑํ•˜๊ณ 
mysql์„ ์‚ฌ์šฉํ•˜๋‹ˆ ์ด๋ ‡๊ฒŒ ์‹ ๋‚  ์ˆ˜๊ฐ€ ์—†๋‹ค.
JS๋กœ ๋ฐฑ์—”๋“œ๊นŒ์ง€ ํ•จ๊ป˜ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑด ์ •๋ง์ด์ง€ ์•„๋ฆ„๋‹ต๋‹ค.

์—ฌํŠผ, ์„œ๋ก ์ด ๊ธธ์—ˆ์ง€๋งŒ ์˜ค๋Š˜ ์ •๋ฆฌ๋Š” AWS์— ๋Œ€ํ•ด ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€
์ฒ˜์Œ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๊ฒƒ๋“ค์„ ์•Œ์•„๋‘ฌ์•ผ ํ•˜๋Š”์ง€ ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค.

AWS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ, ์ฒ˜์Œ ์ ‘ํ•˜๊ฒŒ ๋˜๋Š” ์ด์œ ์—”
๊ธฐ์—… ๊ณต๊ณ ์— ์ ํ˜€์žˆ๋Š” โ€˜aws ๋ฐฐํฌ ๊ฒฝํ—˜์žโ€™ ํ˜น์€ โ€˜์‚ฌ์šฉ ๊ฒฝํ—˜์žโ€™๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.
๋‚ด๊ฐ€ ๊ทธ๋ ‡๋‹ค. AWS์™€ ์ฒซ ๋งŒ๋‚จ์€ ๊ทธ๋ ‡๊ฒŒ ์‹œ์ž‘ํ–ˆ๋‹ค.
๋ง‰์—ฐํžˆ ์•Œ์•„๋‘ฌ์•ผํ•˜๋Š” ๊ธฐ์ˆ ์ด๊ฒ ๊ฑฐ๋‹ˆ ์ƒ๊ฐํ–ˆ์ง€๋งŒ
๊ฒฝํ—˜ํ•˜๋Š” ์ง€๊ธˆ, ์™œ ์ ์œ ์œจ์ด ๋†’์€์ง€, ๊ธฐ์—…์ด ์›ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

AWS์˜ MFA


AWS๋ฅผ ์ฒ˜์Œ ์ด์šฉํ•˜๋ฉด, ๊ผญ ๋†“์น˜์ง€ ๋ง์•„์•ผํ•  ๊ฒƒ์ด ์žˆ๋‹ค.
๊ทธ๊ฒƒ์€ MFA ์„ค์ •์ด๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด MFA๋ž€ ๋„๋Œ€์ฒด ๋ฌด์—‡์ผ๊นŒ?
MFA๋Š” Multi-Factor Authentication์˜ ์•ฝ์ž๋กœ
๋‹ค์ค‘ ์ธ์ฆ์„ ์˜๋ฏธํ•œ๋‹ค.
์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ผ๊นŒ ์‹ถ๊ธฐ๋„ํ•œ๋ฐ
ํ”ํžˆ ๊ฒŒ์ž„์„ ํ•ด๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ์ด์ค‘ ๋ณด์•ˆ์„ ์ด์šฉํ•ด๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.
๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ๊ทธ๊ฒƒ์œผ๋กœ ๋๋‚œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ
ํ•œ๋ฒˆ ๋” ๋ณธ์ธ๋งŒ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ธ์ฆํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
ํ•œ์ฐธ ๊ฒŒ์ž„์„ ํ•  ๋•Œ๋Š” ํ•ธ๋“œํฐ์œผ๋กœ ์ธ์ฆํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐโ€ฆ
์‹ค์ œ๋กœ MFA ์„ค์ • ํŽ˜์ด์ง€๋ฅผ ๊ฐ€๋ณด๋ฉด ํ•ธ๋“œํฐ ์ธ์ฆ(๊ฐ€์ƒ ๋””๋ฐ”์ด์Šค)์ด๋‚˜
๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋“ค๋กœ๋„ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ์†Œ๊ฐœ๋˜์–ด ์žˆ๋‹ค.

์ฒ˜์Œ AWS ๊ณ„์ •์„ ์ƒ์„ฑํ–ˆ์„ ๋•Œ


์ฒ˜์Œ AWS ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€
root ๊ณ„์ •์œผ๋กœ ์ƒ์„ฑ์ด ๋œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๊ณต์‹ ๋ฌธ์„œ์—๋„ ๋‚˜์™€์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ
root ๊ณ„์ •์œผ๋กœ ์ž‘์—…์„ ๊ณ„์† ํ•ด๋‚˜๊ฐ€๋‹ค๋ณด๋ฉด
๋ณด์•ˆ ์ด์Šˆ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๊ณ 
ํ•œ๊ตญ์—์„œ๋„ ๊ฐ„ํ˜น ๋“ค๋ ค์˜ค๋Š” ์†Œ์‹์ฒ˜๋Ÿผ ํ•ดํ‚น์„ ๋‹นํ•ด
์ •๋ง ์ƒ๋‹นํ•œ ์š”๊ธˆ์ด ์ฒญ๊ตฌ๋œ ์‚ฌ๋ก€๋„ ๋ฐœ์ƒํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ๋ฃจํŠธ ๊ณ„์ •์„ ์ง์ ‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ 
๋ฃจํŠธ ๊ณ„์ •์— MFA๋ฅผ ์„ค์ •ํ•˜๊ณ ,
๋ฃจํŠธ ๊ณ„์ • ๋‚ด ์–ด๋“œ๋ฏผ ๊ทธ๋ฅฉ ํ˜น์€ ์–ด๋“œ๋ฏผ ๊ณ„์ •์„ ์ƒ์„ฑํ•ด
ํ•ด๋‹น ๊ทธ๋ฃน์ด๋‚˜ ๊ณ„์ •์— ๊ถŒํ•œ์„ ์ง์ ‘์ ์œผ๋กœ ๋ถ€์—ฌํ•ด
์–ด๋“œ๋ฏผ ๊ณ„์ •์œผ๋กœ ์ž‘์—…ํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.
๋ฌผ๋ก , ์ด๋ ‡๊ฒŒ ๋งŒ๋“  ์–ด๋“œ๋ฏผ ๊ณ„์ •๋„ MFA ๋ณด์•ˆ์„ ์„ค์ •ํ•ด์ค˜์•ผํ•œ๋‹ค.

MFA ์ธ์ฆ ๋ฐฉ๋ฒ•


๋ฃจํŠธ ๊ณ„์ •์—์„œ MFA๋ฅผ ์„ค์ •ํ•  ๋•, ๋ณด์•ˆ ์„ค์ •์—์„œ ์ž‘์—…ํ•˜๋ฉด ๋œ๋‹ค.
MFA๋ฅผ ํ•ธ๋“œํฐ์—์„œ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋„๋กํ•˜๋ ค๋ฉด
๊ตฌ๊ธ€ OTP ๋‚˜ Authy ๊ฐ™์€ ์–ดํ”Œ์„ ์ด์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ
๊ณต์‹ ๋ฌธ์„œ๋Š” Authy๋ฅผ ์‚ฌ์šฉํ•˜๊ธธ ๊ถŒ์žฅํ•œ๋‹ค.
์™œ๋ƒ๋ฉด ๊ตฌ๊ธ€ OTP๋Š” ํ•œ ๊ฐœ์˜ ๋””๋ฐ”์ด์Šค๋งŒ ๋“ฑ๋ก์ด ๊ฐ€๋Šฅํ•œ๋ฐ
๋งŒ์•ฝ ํ•ธ๋“œํฐ์ด ๋ถ„์‹ค ๋˜๊ฑฐ๋‚˜ ๊ณ ์žฅ์ด ๋‚œ๋‹ค๋ฉด
MFA๋ฅผ ์ธ์ฆํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒ๋‹นํžˆ ๋‚œ์ฒ˜ํ•œ ์ƒํ™ฉ์ด ์—ฐ์ถœ๋œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ, Authy๋Š” ๋ฉ€ํ‹ฐ ๋””๋ฐ”์ด์Šค์— ๋“ฑ๋ก์ด ๊ฐ€๋Šฅํ•˜๊ณ 
์žƒ์–ด๋ฒ„๋ ค๋„ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—
ํ˜น์‹œ ํ•ธ๋“œํฐ์„ ์žƒ์–ด๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ ๋†“๊ณ  ์˜ค๋”๋ผ๋„
๋ฏธ๋ฆฌ ๋“ฑ๋กํ•ด๋†“์€ ๋‹ค๋ฅธ ๋””๋ฐ”์ด์Šค๋กœ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฌผ๋ก , ๊ด€์ ์˜ ์ฐจ์ด์ง€๋งŒ ์˜คํžˆ๋ ค ๋ฉ€ํ‹ฐ ๋””๋ฐ”์ด์Šค๋ผ
๋ณด์•ˆ์„ ๋” ์™„๋ฒฝํ•˜๊ฒŒ(?) ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ถ€๋ถ„์ด ๊ฑธ๋ฆด ์ˆ˜๋„ ์žˆ์„ํ…Œ๋‹ˆ
์ด ๋ถ€๋ถ„์€ ์„ ํƒํ•˜๋ฉด ๋ณธ์ธ์ด ์„ ํƒํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

์‚ฌ์šฉ์ž ๊ทธ๋ฃน๊ณผ ์‚ฌ์šฉ์ž ์ƒ์„ฑ


๋ฃจํŠธ ๊ณ„์ •์— MFA๋ฅผ ์„ค์ •ํ•œ๋‹ค๋ฉด IAM ๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ํ™œ์„ฑํ™” ๋  ๊ฒƒ์ด๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•ด
๊ทธ๋ฃน์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ฐœ์ธ ๊ณ„์ •์ด๋ผ๋ฉด
AWS Management Console์— ๋Œ€ํ•œ
์‚ฌ์šฉ์ž ์•ก์„ธ์Šค ๊ถŒํ•œ ์ œ๊ณต์„ ์ฒดํฌํ•˜๊ณ ,
IAM ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์Œ์„ ์„ ํƒํ•œ๋‹ค.
๋˜๋ ค AWS๋Š” ํ•ด๋‹น ํ•ญ๋ชฉ๋ณด๋‹จ ์œ„์— ์žˆ๋Š” ํ•ญ๋ชฉ์„ ์ฒดํฌํ•˜๊ธธ ๊ถŒํ•˜๋Š”๋ฐ
๊ทœ๋ชจ๊ฐ€ ํšŒ์‚ฌ์ •๋„๋Š” ๋˜์•ผ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
AWS SSO๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋„ ์•Š๊ณ , ๋ณดํ†ต 2-3๊ฐœ์˜ ๊ถŒํ•œ์„
์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌํ•˜๋Š” ์ •๋„๋กœ ๊ฐœ์ธ ๊ณ„์ •์„ ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—
์Œโ€ฆ ์ฆ‰, ํ‚ค ๊ด€๋ฆฌ๋‚˜ ๊ถŒํ•œ์„ ์ฃผ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋ถˆํŽธํ•จ์ด
ํฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— IAM ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์Œ์„ ์„ ํƒํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹คํ•œ๋‹ค.

๋‹ค๋งŒ, ์‚ฌ์šฉ์ž ์ƒ์„ฑ์ด ๋๋‚˜๋ฉด ํ•ด์•ผํ•  ๊ฒƒ์ด ๋‘ ๊ฐ€์ง€ ์žˆ๋Š”๋ฐ
์–ด๋“œ๋ฏผ ๊ณ„์ •์˜ URL์„ ๋ณต์‚ฌ ํ›„ ๋ฐ”๋กœ ์ด๋™ํ•˜์ง€ ๋ง๊ณ 
๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ผญ ๋ณต์‚ฌํ•ด์„œ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค
URL ์ด๋™ํ•˜๋ฉด ๋ฃจํŠธ ๊ณ„์ •์˜ ๋กœ๊ทธ์ธ์ด ํ’€๋ ค ์ƒ๋‹นํžˆ ๋ฒˆ๊ฑฐ๋กœ์›Œ์ง„๋‹ค.
๊ทธ๋ฆฌ๊ณ  AWS๊ฐ€ ์•„์˜ˆ ์ฒ˜์Œ์ด๋ผ๋ฉด ๊ผญ ์ƒ์„ฑ์ž ์•„์ด๋””๋ฅผ ์ ์–ด๋‘๊ฑฐ๋‚˜
๋ณ„์นญ์„ ์„ค์ •ํ•ด๋‘๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.
๋ณดํ†ต ์–ด๋“œ๋ฏผ ๊ณ„์ •์˜ ๋กœ๊ทธ์ธ์€ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ๋กœ๊ทธ์ธํ•˜๋Š”๋ฐ
๊ฐ€์žฅ ์œ„์— Account ID๋„ ํ•จ๊ป˜ ์ž…๋ ฅํ•˜๋„๋ก ๋˜์–ด์žˆ๋‹ค.
๊ทธ๋ž˜์„œ 12์ž๋ฆฌ์˜ Account ID๋ฅผ ๋ฉ”๋ชจํ•ด๋‘๊ฑฐ๋‚˜
๋ณ„์นญ์„ ์„ค์ •ํ•ด๋‘ฌ์„œ ๋ณ„์นญ์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๋„๋ก ํ•œ๋‹ค.