AWS CLI เบœเปˆเบฒเบ™ MFA

ะ”ะฐะปะตะต ะฟะพัะปะตะดัƒะตั‚ ะธะฝัั‚ั€ัƒะบั†ะธั ะฟะพ ะฝะฐัั‚ั€ะพะนะบะต AWS MFA, ะธ ะฟะพัะปะตะดัŽั‰ะตะน ัƒัั‚ะฐะฝะพะฒะบะต ะธ ะฝะฐัั‚ั€ะพะนะบะต AWS CLI.

ะš ัะพะถะฐะปะตะฝะธัŽ, ัƒ ะผะตะฝั ะฝะฐ ัั‚ัƒ ะพะฑัะทะฐั‚ะตะปัŒะฝัƒัŽ ะฟั€ะพั†ะตะดัƒั€ัƒ ัƒัˆะปะฐ ะฟะพะปะพะฒะธะฝะฐ ั€ะฐะฑะพั‡ะตะณะพ ะดะฝั. ะงั‚ะพะฑั‹ ะดั€ัƒะณะธะผ ะฝะตัƒะฒะตั€ะตะฝะฝั‹ะผ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัะผ AWS ๐Ÿ˜‰ ะบะฐะบ ะธ ั ัะฐะผ, ะฝะต ั‚ั€ะฐั‚ะธั‚ัŒ ะดั€ะฐะณะพั†ะตะฝะฝะพะต ะฒั€ะตะผั ะฝะฐ ะฑะฐะฝะฐะปัŒะฝะพะต, ั€ะตัˆะธะป ัะพัั‚ะฐะฒะธั‚ัŒ ะธะฝัั‚ั€ัƒะบั†ะธัŽ.

ะ”ะฐะถะต ะดะปั sandbox ะฐะบะบะฐัƒะฝั‚ะฐ ะฝะฐัั‚ั€ะพะนะบะฐ MFA โ€” ัั‚ะพ, ะบะฐะบ ะฟั€ะฐะฒะธะปะพ, ะพะฑัะทะฐั‚ะตะปัŒะฝะพะต ั‚ั€ะตะฑะพะฒะฐะฝะธะต. ะฃ ะฝะฐั ัั‚ะพ ั‚ะฐะบ.

ะะฐัั‚ั€ะพะนะบะฐ MFA

  1. เบ•เบฑเป‰เบ‡ ัะพะฒะผะตัั‚ะธะผะพะต ะผะพะฑะธะปัŒะฝะพะต ะฟั€ะธะปะพะถะตะฝะธะต
  2. เป„เบ›เบซเบฒ AWS ะบะพะฝัะพะปัŒ
  3. My Security Credentials -> Assign MFA Device
    AWS CLI เบœเปˆเบฒเบ™ MFA
  4. Virtual MFA Device
    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. My Security Credentials -> Create access key
    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

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™