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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди