aws-cli - AWS CLI 不支持 MultiFactorAuthAge

标签 aws-cli multi-factor-authentication

我正在尝试将我的 AWS CLI 设置为使用 MFA 承担一个角色,并在 15 分钟后使凭证过期(显然,允许的最小 duration_seconds)。
我的 IAM 角色政策是:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::XXXXXXXXXXXX:user/myuser"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": "true"
        },
        "NumericLessThan": {
          "aws:MultiFactorAuthAge": "900"
        }
      }
    }
  ]
}

我的 CLI 配置设置如下:
[profile xxx]
role_arn = arn:aws:iam::XXXXXXXXXXXX:role/mfa
mfa_serial = arn:aws:iam::XXXXXXXXXXXX:mfa/foobar
source_profile = mfa
当我使用 xxx 运行命令时配置文件中,第一次询问 MFA 并且对所有后续请求保持有效。但是,15 分钟后, token 仍然有效并且不会再次询问 MFA。
$ aws s3 ls --profile xxx
我尝试设置 duration_seconds我的 CLI 上的参数如下:
[profile xxx]
role_arn = arn:aws:iam::XXXXXXXXXXXX:role/mfa
mfa_serial = arn:aws:iam::XXXXXXXXXXXX:mfa/foobar
source_profile = mfa
duration_seconds = 900
但是现在,即使时间差在几秒内,我也会为发出的每个命令询问 MFA token 。
我在这里错过了什么吗?

AWS CLI version: aws-cli/2.0.49 Python/3.7.4 Darwin/19.6.0 exe/x86_64


感谢任何帮助。
提前致谢!

最佳答案

所以,我发现了这种行为的原因:
this Github Issue 中所述,AWS CLI 将 15 分钟内的任何 session 视为已过期,自动刷新凭据(或在 MFA 的情况下要求新的一次性密码)。
因此,将 session 持续时间设置为 15 分钟(900 秒)与获取一次性凭证基本相同。
我刚刚测试了设置 session_duration930 (15 分钟 + 30 秒),并且 session 确实有效 30 秒。

关于aws-cli - AWS CLI 不支持 MultiFactorAuthAge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65733122/

相关文章:

amazon-web-services - 如果我使用 AWS CLI S3 'mv' 命令,那背后是什么类型的请求?

authentication - 在Grails应用程序中针对TOTP或其他多因素身份验证的完美解决方案?

amazon-s3 - 从 S3 复制文件时 AWS CodeBuild 错误 - COMMAND_EXECUTION_ERROR : Reason: exit status 1 (NodeJS)

amazon-web-services - AWS CLI 返回带有控制代码的 JSON,导致 JQ 失败

azure - 使用远程桌面连接 Azure VM 的 MFA 支持

azure - 用于访问 Azure VM 的两因素身份验证 - 可能吗?

amazon-web-services - 使用托管 UI 的 AWS Cognito 多重身份验证

python - 覆盖 simple-jwt 的 TokenObtainPairSerializer 以实现 2FA

aws-cloudformation - 从 CFN 模板在本地动态创建 Step Function 状态机

amazon-web-services - 有没有一种方法可以将一个 AWS CLI 命令的输出作为另一个命令的输入?