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

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

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

答案1

您可以启用API 访问上的 MFA但任何使用这些凭证的服务(包括 CLI)都必须使用临时安全凭证(即,您进行 AssumeRole 调用并提供您的访问密钥、机密和 MFA 令牌,它会返回临时访问密钥,这些密钥在 MFA 身份验证有效期间有效)。

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

您的“登录”帐户应已启用 MFA,但没有访问凭据。您可以使用此帐户创建其他“访问凭据”用户,这些用户只能访问您特别需要访问的服务/功能。

答案2

由于这种情况有所改变,因此添加了一个新答案。如果您使用角色,CLI 可以为您管理很多此类问题。描述如下: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 该角色需要 MFA。

当我调用aws s3 ls --profile my_admin_role它时Enter MFA code:,我粘贴代码后它会返回列表。

注意:我还没有找到让 CLI 在调用用户配置文件时请求 MFA 的方法(--profile my_iam_user),只有调用角色配置文件才会触发 MFA 请求。

然后,MFA 令牌将被延续,并且用户配置文件也可以使用:

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"
 # }

相关内容