bash - 如何提示输入 MFA key 以生成和使用 AWS CLI 访问凭证?

标签 bash amazon-web-services aws-cli multi-factor-authentication

我有几个调用 AWS CLI 命令的 Bash 脚本,这些脚本的权限已更改为需要 MFA,我希望能够在这些脚本中提示输入由我的 MFA 设备生成的代码,以便它们可以在必要的身份验证下运行.

但是似乎没有简单的内置方法可以做到这一点。我能找到的唯一文档涉及使用 aws sts get-session-token 的复杂过程。然后将每个值保存在配置中,然后不清楚如何使用。

要清楚我想要的是,当我运行一个包含需要 MFA 的 AWS CLI 命令的脚本时,我只是提示输入代码,以便提供它允许 AWS CLI 操作完成.像这样的东西:

#!/usr/bin/env bash

# (1) prompt for generated MFA code
# ???

# (2) use entered code to generate necessary credentials
aws sts get-session-token ... --token-code $ENTERED_VALUE

# (3) perform my AWS CLI commands requiring MFA
# ....

我不清楚如何在需要时提示它(这可能归结为不精通 bash)或如何使用 get-session-token 的输出.

有什么方法可以满足我的要求吗?


我已经 tried to trigger a prompt通过指定带有 mfa_serial 条目的 --profile;但这也不起作用。

最佳答案

好的,在与同事一起花更多时间研究这个脚本之后 - 我们已经想出了一个更简单的脚本。这会为您完成所有凭证文件,并且更容易阅读。它还允许您所有环境的新 token 都在同一个 creds 文件中。获取 MFA 的初始调用需要凭证文件中的默认帐户 key - 然后它会生成您的 MFA token 并将它们放回凭证文件中。

#!/usr/bin/env bash

function usage {
  echo "Example: ${0} dev 123456 "
  exit 2
}

if [ $# -lt 2 ]
then
  usage
fi

MFA_SERIAL_NUMBER=$(aws iam list-mfa-devices --profile bh${1} --query 'MFADevices[].SerialNumber' --output text)

function set-keys {
  aws configure set aws_access_key_id  ${2} --profile=${1}
  aws configure set aws_secret_access_key  ${3} --profile=${1}
  aws configure set aws_session_token  ${4} --profile=${1}
}


case ${1} in
  dev|qa|prod) set-keys ${1} $(aws sts get-session-token --profile bh${1} --serial-number ${MFA_SERIAL_NUMBER} --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' --output text --token-code ${2});;
  *) usage ;;
esac

关于bash - 如何提示输入 MFA key 以生成和使用 AWS CLI 访问凭证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051993/

相关文章:

docker - 使用 AWS ECR 设置 Docker 身份验证 token 的问题

bash - 如何在 PS1 中设置条件换行符?

node.js - 使用 sqs-consumer Nodejs 的 SQS 队列并行处理消息

linux - grep + 如何忽略许多标记行的情况

php - 无法通过 AWS EC2 实例使用 PHP 连接到 AWS MYSQL RDS 实例

amazon-web-services - AWS Elastic Beanstalk上的Docker中的Docker

amazon-web-services - AWS Amplify/CLI 与 AWS 移动中心

amazon-web-services - AWS Lambda函数访问策略

python - #!/usr/bin/python(sha-bang 或 she-bang)在 bash 中不起作用

linux - cp 命令不在 sh\bash 脚本中创建目录,为什么?