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 <╨╛╨┤╨╜╨╛╤А╨░╨╖╨╛╨▓╤Л╨╣ ╨┐╨░╤А╨╛╨╗╤М>

рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣реА рд╕реВрдЪрдирд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдзрд┐рдХреГрдд рдХрд╛рдЧрджрдкрддреНрд░рд╛рдВрджреНрд╡рд╛рд░реЗ рд▓рд╛рдВрдм рднрдЯрдХрдВрддреА рдЯрд╛рд│рдгреНрдпрд╛рд╕ рдорджрдд рдХрд░реЗрд▓ ЁЯШЙ

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛