Answers:
答案是肯定的。通过使用条件。例如,对于管理员帐户:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*",
"Condition":
{
"Null":{"aws:MultiFactorAuthAge":"false"}
}
}
]
}
它将使用API对密码身份验证和基于令牌的身份验证强制实施MFA。
环顾四周后,答案似乎是“有点”。在IAM中,管理员可以为另一个IAM用户配置MFA。尽管如果您要设置虚拟MFA,这可能会有些棘手,但有可能。然后,如果未授予用户更新/删除其MFA的权限,则实际上是必需的。
虽然我尚未确定应拒绝(或根本不批准)的动作的完整列表,但此帖子似乎已经包含了信息,并且我将在测试后更新此答案。
[更新]
我能够将用户设置为超级用户(因此,尽管我确信您可以更详细地了解它们,但不授予他们访问IAM功能的权限),并与他们一起实现MFA。使用这种方法,他们将无法禁用它。
是的,您可以同时为Web控制台和awscli
命令行要求IAM帐户的MFA 。实际上,不可能可靠地为Web控制台要求MFA,而对于awscli
命令行则不需要,因为两者都使用相同的API。我之所以说“可靠”是因为,通过复杂的IAM策略,可以在awscli
不使用MFA的情况下允许某些操作,同时为Web控制台实施MFA。但是,结果有些不可预测,此外,IAM密钥即使不是更危险的未受保护,也具有同样的作用。我的建议是同时要求两者,然后在绝对禁止MFA的特殊用途中创建不受保护的密钥。对于自动化流程,角色通常是一个更好的选择。
为了使命令行上的MFA操作更容易,我创建了一组bash脚本和精心设计的MFA实施策略示例,可轻松附加/分离vMFAd以及启动和管理MFA会话。它们适用于macOS和Linux变体,但可能不适用于Windows(未经测试)。
我们记录了几个方面的考虑,一般为AWS API多因素(其中加了条件,会造成什么影响等)进行一些自定义工具(在文档中https://github.com/kreuzwerker/awsu我们使用Yubikeys开发)作为TOTP令牌的来源。这使得使用角色和长期凭证+会话令牌非常容易。
接受的答案不再是有效的AFAICT。AWS已通过其教程文章在此处记录了如何执行此操作:
https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.html
我为新的AWS账户和团队遵循了这一规定,并且效果很好。