如何在启用MFA强制执行的情况下使用`aws ecr get-login`?

时间:2017-07-24 14:23:04

标签: amazon-web-services aws-cli

我正在使用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

2 个答案:

答案 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

,则除了会话令牌之外,还需要设置会话和访问密钥