AWS:我们可以启用MFA来进行命令行访问吗?

我为AWS用户启用了MFA,当用户loginAWS控制台时,它可以工作。 但是,此用户也可以通过CLI(通过访问密钥和密钥)访问所有服务,这是否意味着CLI将始终绕过MFA,即使它已启用此用户?

您可以在API访问上启用MFA,但任何使用这些凭证(包括CLI)的服务都必须使用临时安全证书 (即,您进行AssumeRole调用,以提供您的访问密钥,秘密密钥和MFA令牌,并返回有效的临时访问密钥为只要MFAauthentication有效)。

话虽如此,通常认为最好的做法是将您的“login”帐户(即通过AWS控制台login的帐户)从“访问凭证”帐户(即API密钥在其他软件中使用的帐户)中分离出来, 。

您的“login”帐户应该启用了MFA,但没有访问凭证。 您可以使用此帐户创build其他“访问凭证”用户,这些用户只能访问您特别需要访问的服务/function。

因为这种情况有所改变,所以增加一个新的答案。 如果您使用angular色,CLI可以为您pipe理很多这样的事情。 在这里描述: http : //docs.aws.amazon.com/cli/latest/userguide/cli-roles.html

在我的凭证文件中,我有:

[my_iam_user] aws_access_key_id = AKIABLAHBLAHBLAHBLAH aws_secret_access_key = <blah> region = us-east-1 [my_admin_role] role_arn = arn:aws:iam::123456789123:role/my_admin_role source_profile = my_iam_user mfa_serial = arn:aws:iam::123456789123:mfa/my_iam_user region = us-east-1 

注意mfa_serial条目。 您可以从AWS IAM控制台中的用户详细信息中获取此值。 该条目告诉CLI,该angular色需要MFA。

当我打电话给aws s3 ls --profile my_admin_role它说Enter MFA code: ,我粘贴代码后返回列表。

注意:在调用用户简档( --profile my_iam_user )时,我没有find一种方法来让CLI询问MFA,只调用一个angular色简档会触发MFA请求。

然后结转MFA令牌,也可以使用用户configuration文件:

 aws sts get-caller-identity --profile my_iam_user # { # "Account": "123456789123", # "UserId": "AIDABLAHBLAHBLAHBLAH", # "Arn": "arn:aws:iam::123456789123:user/my_iam_user" # } aws sts get-caller-identity --profile my_admin_role # { # "Account": "123456789123", # "UserId": "AROABLAHBLAHBLAHBLAH:AWS-CLI-session-1234567890", # "Arn": "arn:aws:sts::123456789123:assumed-role/my_admin_role/AWS-CLI-session-1234567890" # }