starchx Asked: 2014-12-05 17:53:17 +0800 CST2014-12-05 17:53:17 +0800 CST 2014-12-05 17:53:17 +0800 CST AWS:我们可以为命令行访问启用 MFA 吗? 772 我为 AWS 用户启用了 MFA,当用户登录 AWS 控制台时,它可以工作。但是,该用户也可以通过 CLI 访问所有服务(通过访问密钥和密钥),这是否意味着 CLI 将始终绕过 MFA,即使它已为该用户启用? amazon-web-services 2 个回答 Voted Best Answer thexacre 2014-12-06T14:24:58+08:002014-12-06T14:24:58+08:00 您可以在 API 访问中启用MFA,但任何使用这些凭据(包括 CLI)的服务都必须使用临时安全凭据(即,您进行 AssumeRole 调用,提供您的访问密钥、秘密和 MFA 令牌,它会返回有效的临时访问密钥只要 MFA 身份验证有效)。 话虽如此,通常认为将“登录”账户(即通过 AWS 控制台登录的账户)与“访问凭证”账户(即在其他软件中使用 API 密钥的地方)分开是最佳实践. 您的“登录”帐户应该启用了 MFA,但没有访问凭据。您使用此帐户创建其他“访问凭据”用户,这些用户只能访问您特别需要访问的服务/功能。 Joe Harris 2017-02-01T10:39:11+08:002017-02-01T10:39:11+08:00 随着这种情况发生了一些变化,添加了一个新的答案。如果您使用角色,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 在调用用户配置文件 ( --profile my_iam_user) 时请求 MFA,仅调用角色配置文件会触发 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" # }
您可以在 API 访问中启用MFA,但任何使用这些凭据(包括 CLI)的服务都必须使用临时安全凭据(即,您进行 AssumeRole 调用,提供您的访问密钥、秘密和 MFA 令牌,它会返回有效的临时访问密钥只要 MFA 身份验证有效)。
话虽如此,通常认为将“登录”账户(即通过 AWS 控制台登录的账户)与“访问凭证”账户(即在其他软件中使用 API 密钥的地方)分开是最佳实践.
您的“登录”帐户应该启用了 MFA,但没有访问凭据。您使用此帐户创建其他“访问凭据”用户,这些用户只能访问您特别需要访问的服务/功能。
随着这种情况发生了一些变化,添加了一个新的答案。如果您使用角色,CLI 可以为您管理很多这些。此处描述:http: //docs.aws.amazon.com/cli/latest/userguide/cli-roles.html
在我的凭据文件中,我有:
注意
mfa_serial
条目。您可以从 AWS IAM 控制台中的用户详细信息中获取此值。此条目告诉 CLI 该角色需要 MFA。当我调用
aws s3 ls --profile my_admin_role
它时Enter MFA code:
,在我粘贴代码后它会返回列表。注意:我还没有找到一种方法让 CLI 在调用用户配置文件 (
--profile my_iam_user
) 时请求 MFA,仅调用角色配置文件会触发 MFA 请求。然后将 MFA 令牌结转,也可以使用用户配置文件: