рдПрдордПрдлрдП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ

рдЖрдЧреЗ AWS MFA рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ AWS CLI рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рд╣реЛрдВрдЧреЗред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдЕрдирд┐рд╡рд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореБрдЭреЗ рдЕрдкрдирд╛ рдЖрдзрд╛ рдХрд╛рд░реНрдп рджрд┐рд╡рд╕ рд▓рдЧ рдЧрдпрд╛ред рддрд╛рдХрд┐ рдореЗрд░реЗ рдЬреИрд╕реЗ рдЕрдиреНрдп рдЕрд╕реБрд░рдХреНрд╖рд┐рдд AWS рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ЁЯШЙ рдЫреЛрдЯреА-рдЫреЛрдЯреА рдмрд╛рддреЛрдВ рдкрд░ рдЕрдкрдирд╛ рдХреАрдорддреА рд╕рдордп рдмрд░реНрдмрд╛рдж рди рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдирд┐рд░реНрджреЗрд╢ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЦрд╛рддрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рднреА рдПрдордПрдлрдП рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ. рд╣рдорд╛рд░реЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реА рд╣реИ.

рдПрдордПрдлрдП рдХреА рд╕реНрдерд╛рдкрдирд╛

  1. рд╕реНрдерд┐рдд рд╕рдВрдЧрдд рдореЛрдмрд╛рдЗрд▓ рдРрдк
  2. рдХреЗ рд▓рд┐рдП рдЬрд╛рдУ рдПрдбрдмреНрд▓реВрдПрд╕ рдХрдВрд╕реЛрд▓
  3. рдореЗрд░реА рд╕реБрд░рдХреНрд╖рд╛ рд╕рд╛рдЦ -> рдПрдордПрдлрдП рдбрд┐рд╡рд╛рдЗрд╕ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ
    рдПрдордПрдлрдП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ
  4. рд╡рд░реНрдЪреБрдЕрд▓ рдПрдордПрдлрдП рдбрд┐рд╡рд╛рдЗрд╕
    рдПрдордПрдлрдП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ
  5. рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░реЗрдВ
    рдПрдордПрдлрдП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ
    рдПрдордПрдлрдП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ
  6. рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рддреИрдпрд╛рд░ рд╣реИ
    рдПрдордПрдлрдП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ

рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

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

рдирд╛рдорд┐рдд рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯ рдХрд░рдирд╛

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

  1. рдореЗрд░реА рд╕реБрд░рдХреНрд╖рд╛ рд╕рд╛рдЦ -> рдПрдХреНрд╕реЗрд╕ рдХреБрдВрдЬреА рдмрдирд╛рдПрдВ
    рдПрдордПрдлрдП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ
  2. рдХреБрдВрдЬреА рдХреЛ рдЕрдкрдиреЗ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ. рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
  3. $ aws configure --profile <your profile name>

рдПрдордПрдлрдП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ

  1. рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╡рд╛рдЗрд╕ ARN рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ
    рдПрдордПрдлрдП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ
  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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ