ื•ื•ื™ื™ึทื˜ืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืคึฟืึทืจ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ AWS MFA, ืื•ืŸ ื“ืขืžืึธืœื˜ ื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ AWS CLI.

ืฆื•ื ื‘ืึทื“ื•ื™ืขืจืŸ, ื“ืขื ืžืึทื ื“ืึทื˜ืึธืจื™ ืคึผืจืึธืฆืขื“ื•ืจ ื’ืขื ื•ืžืขืŸ ืžื™ืจ ื”ืึทืœื‘ ืคื•ืŸ ืžื™ื™ืŸ ืึทืจื‘ืขื˜ ื˜ืึธื’. ืึทื–ื•ื™ ืึทื– ืื ื“ืขืจืข ื™ื ืกืึทืงื™ืขืจ AWS ื™ื•ื–ืขืจื– ๐Ÿ˜‰, ื•ื•ื™ ืžื™ืจ, ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกื˜ ื˜ื™ื™ึทืขืจ ืฆื™ื™ื˜ ืื•ื™ืฃ ื“ื™ ื˜ืจื™ื•ื•ื™ืึทืœ, ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ื–ืึทืžืœืขืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื–.

ืืคื™ืœื• ืคึฟืึทืจ ื–ืึทืžื“ืงืึทืกื˜ืŸ ื—ืฉื‘ื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืžืคืึท ื“ืึธืก ืื™ื– ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ืึท ืžืึทื ื“ืึทื˜ืึธืจื™ ืคืึธื“ืขืจื•ื ื’. ืื–ื•ื™ ืื™ื– ืขืก ื‘ื™ื™ ืื•ื ื–.

ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ MFA

  1. ืฉื˜ืขืœืŸ ืงืึทืžืคึผืึทื˜ืึทื‘ืึทืœ ืจื™ืจืขื•ื•ื“ื™ืง ืึทืคึผ
  2. ื’ื™ื™ ืฆื• AWS ืงืึทื ืกืึธื•ืœ
  3. ืžื™ื™ึทืŸ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืงืจืึทื“ืขื ื˜ืฉืึทืœื– -> ื‘ืึทืฉื˜ื™ืžืขืŸ ืžืคืึท ืžื™ื˜ืœ
    AWS CLI ื“ื•ืจืš MFA
  4. ื•ื•ื™ืจื˜ื•ืึทืœ ืžืคืึท ืžื™ื˜ืœ
    AWS CLI ื“ื•ืจืš MFA
  5. ื’ื™ื™ ื“ื™ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืื•ื™ืฃ ื“ืขื ืขืงืจืึทืŸ
    AWS CLI ื“ื•ืจืš MFA
    AWS CLI ื“ื•ืจืš MFA
  6. ื•ื•ื™ืจื˜ื•ืึทืœ ืžื™ื˜ืœ ืื™ื– ื’ืจื™ื™ื˜
    AWS CLI ื“ื•ืจืš MFA

ื™ื ืกื˜ืึทืœื™ืจืŸ 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. ืžื™ื™ึทืŸ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืงืจืึทื“ืขื ื˜ืฉืึทืœื– -> ืฉืึทืคึฟืŸ ืึทืงืกืขืก ืฉืœื™ืกืœ
    AWS CLI ื“ื•ืจืš MFA
  2. ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืฉืœื™ืกืœ ืฆื• ื“ื™ื™ืŸ ืงืœื™ืคึผื‘ืึธืจื“. ืื™ืจ ื•ื•ืขื˜ ื“ืึทืจืคึฟืŸ ืขืก ืื™ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืฉืจื™ื˜
  3. $ aws configure --profile <your profile name>

AWS CLI ื“ื•ืจืš MFA

  1. ื ืึธื›ืžืึทื›ืŸ ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžื™ื˜ืœ ARN
    AWS CLI ื“ื•ืจืš MFA
  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 <ะพะดะฝะพั€ะฐะทะพะฒั‹ะน ะฟะฐั€ะพะปัŒ>

ืื™ืš ื”ืึธืคึฟืŸ ืึทื– ื“ื™ ืœื™ืžืขื“ ื•ื•ืขื˜ ื”ืขืœืคึฟืŸ ืื™ืจ ื•ื™ืกืžื™ื™ื“ืŸ ืœืึทื ื’ ื•ื•ืึทื ื“ืขืจื™ื ื’ื– ื“ื•ืจืš ื“ื™ ื‘ืึทืึทืžื˜ืขืจ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ๐Ÿ˜‰

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’