MFA๋ฅผ ํ†ตํ•œ AWS CLI

๋‹ค์Œ์€ AWS MFA๋ฅผ ์„ค์ •ํ•œ ํ›„ AWS CLI๋ฅผ ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์ž…๋‹ˆ๋‹ค.

์•ˆํƒ€๊น๊ฒŒ๋„ ์ด ํ•„์ˆ˜ ์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ๊ทผ๋ฌด ์‹œ๊ฐ„์˜ ์ ˆ๋ฐ˜์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ์ €์ฒ˜๋Ÿผ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋‹ค๋ฅธ AWS ์‚ฌ์šฉ์ž๋“ค์ด ์‚ฌ์†Œํ•œ ์ผ์— ๊ท€์ค‘ํ•œ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š๋„๋ก ์ง€์นจ์„ ์ปดํŒŒ์ผํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ƒŒ๋“œ๋ฐ•์Šค ๊ณ„์ • ์„ค์ •์—๋„ MFA ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ•„์ˆ˜ ์š”๊ตฌ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

MFA ์„ค์ •

  1. ์„ธํŠธ ํ˜ธํ™˜๋˜๋Š” ๋ชจ๋ฐ”์ผ ์•ฑ
  2. ์ด๋™ AWS ์ฝ˜์†”
  3. ๋‚ด ๋ณด์•ˆ ์ž๊ฒฉ ์ฆ๋ช… -> MFA ์žฅ์น˜ ํ• ๋‹น
    MFA๋ฅผ ํ†ตํ•œ AWS CLI
  4. ๊ฐ€์ƒ MFA ๋””๋ฐ”์ด์Šค
    MFA๋ฅผ ํ†ตํ•œ AWS CLI
  5. ํ™”๋ฉด์˜ ์ง€์‹œ๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค
    MFA๋ฅผ ํ†ตํ•œ AWS CLI
    MFA๋ฅผ ํ†ตํ•œ AWS CLI
  6. ๊ฐ€์ƒ ์žฅ์น˜๊ฐ€ ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค
    MFA๋ฅผ ํ†ตํ•œ AWS CLI

AWS CLI ์„ค์น˜

https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html

๋ช…๋ช…๋œ ํ”„๋กœํ•„ ์„ค์ •

https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html

  1. ๋‚ด ๋ณด์•ˆ ์ž๊ฒฉ ์ฆ๋ช… -> ์•ก์„ธ์Šค ํ‚ค ์ƒ์„ฑ
    MFA๋ฅผ ํ†ตํ•œ AWS CLI
  2. ํ‚ค๋ฅผ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌํ•˜์„ธ์š”. ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  3. $ aws configure --profile <your profile name>

MFA๋ฅผ ํ†ตํ•œ AWS CLI

  1. ๊ฐ€์ƒ ๋””๋ฐ”์ด์Šค ARN ๋ณต์‚ฌ
    MFA๋ฅผ ํ†ตํ•œ AWS CLI
  2. aws sts get-session-token --profile <ะธะผั ะฟั€ะพั„ะธะปั> --serial-number <ARN ะฒะธั€ั‚ัƒะฐะปัŒะฝะพะณะพ ัƒัั‚ั€ะพะนัั‚ะฒะฐ> --token-code <ะพะดะฝะพั€ะฐะทะพะฒั‹ะน ะฟะฐั€ะพะปัŒ>
    ์ผํšŒ์šฉ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์ด์ „์— ๊ตฌ์„ฑํ•œ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ด ๋ช…๋ น์€ JSON์„ ์ถœ๋ ฅํ•˜๋ฉฐ, ํ•ด๋‹น ๊ฐœ๋ณ„ ํ•„๋“œ๋Š” ํ•ด๋‹น ํ™˜๊ฒฝ ๋ณ€์ˆ˜ AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN์œผ๋กœ ๋Œ€์ฒด๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž๋™ํ™”ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์–ด์š” ~/.bash_profile
JSON์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๋ ค๋ฉด ์ด ์Šคํฌ๋ฆฝํŠธ์— ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. jq.

#!/usr/bin/env bash

aws_login() {
    session=$(aws sts get-session-token "$@")
    echo "${session}"
    AWS_ACCESS_KEY_ID=$(echo "${session}" | jq -r '.Credentials.AccessKeyId')
    export AWS_ACCESS_KEY_ID
    AWS_SECRET_ACCESS_KEY=$(echo "${session}" | jq -r '.Credentials.SecretAccessKey')
    export AWS_SECRET_ACCESS_KEY
    AWS_SESSION_TOKEN=$(echo "${session}" | jq -r '.Credentials.SessionToken')
    export AWS_SESSION_TOKEN
}

alias aws-login-dev='aws_login --profile <ะธะผั dev ะฟั€ะพั„ะธะปั> --serial-number <ARN ะฒะธั€ั‚ัƒะฐะปัŒะฝะพะณะพ ัƒัั‚ั€ะพะนัั‚ะฒะฐ> --token-code '
alias aws-login-prod='aws_login --profile <ะธะผั prod ะฟั€ะพั„ะธะปั> --serial-number <ARN ะฒะธั€ั‚ัƒะฐะปัŒะฝะพะณะพ ัƒัั‚ั€ะพะนัั‚ะฒะฐ> --token-code '

ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต :

$ aws-login-dev <ะพะดะฝะพั€ะฐะทะพะฒั‹ะน ะฟะฐั€ะพะปัŒ>

์ด ์ง€์นจ์ด ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ—ค๋งค๋Š” ๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์„ ํ”ผํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค ๐Ÿ˜‰

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€