aws-cli - AWS CLI 不支持 MultiFactorAuthAge
问题描述
我正在尝试将我的 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 分钟后,令牌仍然有效,不会再次询问 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 令牌,即使时间差是秒级。
我在这里错过了什么吗?
AWS CLI 版本:aws-cli/2.0.49 Python/3.7.4 Darwin/19.6.0 exe/x86_64
感谢任何帮助。
提前致谢!
解决方案
所以,我发现了这种行为的原因:
如本 Github 问题中所述,AWS CLI 将 15 分钟内的任何会话视为过期,自动刷新凭据(或在 MFA 的情况下要求新的一次性密码)。
因此,将会话持续时间设置为 15 分钟(900 秒)与获得一次性凭证基本相同。
我刚刚测试了设置session_duration
为930
(15min + 30s),会话确实有效 30 秒。
推荐阅读
- mysql - Mysql IN关键字以List为String
- axios - 不是主要/另一个api上的cors问题
- vba - Word VBA:每次用户按下快捷方式时,如何跳转到多个搜索词的下一个实例?
- javascript - 如何知道以烧瓶形式按下了哪个按钮?(烧瓶,HTML)
- debugging - 如何找出 Haskell 中发生异常的行号?
- java - 你能在 Java 中捕捉到“包 x 不存在”错误吗?
- c# - 存储过程返回多个临时表结果。我想使用 C# 将它们复制到一个 CSV 文件中
- visual-studio-code - 是否可以从 VS 代码中的问题选项卡中排除文件夹
- typescript - 创建具有自身链接的类成员
- java - Mapstruct 映射器扩展