上次更新时间:2020 年 6 月 16 日
我创建了一个 Multi-Factor Authentication (MFA) 条件策略,以限制 AWS Identity and Access Management (IAM) 用户访问 AWS 服务。该策略可与 AWS 管理控制台配合使用,但不能与 AWS 命令行界面 (AWS CLI) 配合使用。如何将 MFA 与 AWS CLI 配合使用?
以下示例说明了 IAM 策略要求 IAM 用户使用 MFA 访问特定的 AWS 服务:
{
"Sid": "BlockMostAccessUnlessSignedInWithMFA",
"Effect": "Deny",
"NotAction": ,
"Resource": "*",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
系统将提示使用 AWS 管理控制台的 IAM 用户输入 MFA 身份验证凭证,然后才能访问 AWS 服务。但是,系统不会提示使用 AWS CLI 的 IAM 用户输入 MFA 身份验证凭证以便访问 AWS 服务。
</p
注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
MultiFactorAuthPresent 密钥仅适用于检查是否使用 MFA 的临时安全凭证。MultiFactorAuthPresent 密钥不会拒绝访问使用长期凭证发出的请求,也不会拒绝通过 AWS CLI 访问 MFA 请求。
使用 AWS 管理控制台的 IAM 用户会生成临时凭证,并且仅在使用 MFA 时允许访问。
通过 Bool 条件运算符,您可以将密钥值设置为 true 或 false 来限制访问。您可以添加 BoolIfExists 条件运算符,以检查请求中是否存在 MultiFactorAuthPresent 密钥。如果 MultiFactorAuthPresent 密钥不存在,IfExists 会将条件元素评估为 true,类似于以下内容:
"Effect" : "Deny",
"Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "false" } }
使用具有长期凭证的 AWS CLI 的 IAM 用户将被拒绝访问,必须使用 MFA 进行身份验证。
有关更多信息,请参阅布尔条件运算符。
</p