我正在使用aws cli,而我的IAM用户拥有完整的管理员权限。我们公司需要MFA,因此我的IAM用户有一个MFA强制执行政策。要使用cli,我使用aws sts get-session-token
获取令牌。
这一切都让我使用aws cli就好了,直到我尝试获取AWS容器注册表的docker登录。然后我收到错误......
$ aws ecr get-login --registry-ids XXXXX
An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::XXXXX:user/yyyyy is not authorized to perform: ecr:GetAuthorizationToken on resource: *
如果我暂时从IAM用户中删除MFA强制策略,则该命令会成功。
问题是,如何在启用MFA强制执行的情况下使用aws ecr get-login
?
答案 0 :(得分:3)
首先需要获取会话令牌。这可以通过以下方式完成:
aws sts get-session-token --serial-number <arn-of-the-mfa-device> --token-code <code-generated-by-MFA-device>
可以通过转到AWS控制台的IAM部分中的用户详细信息找到该设备的arn-of-mfa-device。 上述命令的输出将为您提供使用其他访问凭据的会话令牌。然后你应该运行:
aws configure set aws_session_token <the-session-token-in-the-output-of-above-command>
之后,像往常一样进行aws ecr登录。
答案 1 :(得分:2)
这个答案有所改变。我建议看看这篇文章: https://aws.amazon.com/premiumsupport/knowledge-center/authenticate-mfa-cli/
如果您正在使用CLI
,则除了会话令牌之外,还需要设置会话和访问密钥