Vie*_*iet 5 amazon-web-services amazon-iam multi-factor-authentication
如何强制 AWS IAM 用户使用 MFA,但允许他们在首次登录时更改密码?
如果您遵循AWS 文档并强制执行 MFA,新用户在首次获得账户时将无法更改密码。
我知道您可以强制执行 MFA,也可以不强制执行 MFA ,并允许用户管理自己的密码和凭据。此外,AWS 有一种方法可以解决该问题,但不建议这样做:
此示例策略不允许用户在登录时重置密码。新用户和密码过期的用户可能会尝试这样做。您可以通过将 iam:ChangePassword 添加到语句 DenyAllExceptListedIfNoMFA 来允许此操作。但是,IAM 不建议这样做。允许用户在没有 MFA 的情况下更改密码可能会存在安全风险。
那么“推荐”的方式是什么呢?
这个问题也在AWS论坛上被问到,但没有真正的答案。
这里推荐的路径是使用SSO / 联合身份验证,但我提出了一种手动的单策略解决方案,如果您还没有 SSO,可以更轻松地进行管理。我的解决方案仍然存在风险,但其范围仅限于初始帐户设置过程。它涉及使用标签手动标记新的 IAM 用户NewUser,然后在重置密码并配置 MFA 后手动取消标记。
以下指南假设您使用AWS 推荐的策略来允许经过 MFA 身份验证的 IAM 用户在“我的安全凭证”页面上管理自己的凭证。
编辑您的"Sid": "DenyAllExceptListedIfNoMFA"阻止所在的 MFA 策略,并将其替换为以下内容:
{
"Sid": "DenyAllExceptListedIfNoMFAAndNewUser",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken",
"iam:ChangePassword"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
},
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
},
"StringNotEqualsIfExists": {
"iam:ResourceTag/NewUser": "true"
}
}
}
Run Code Online (Sandbox Code Playgroud)
创建一个新用户并添加一个NewUser标签,并将值设置为true。

将凭据发送给新用户。他们首次登录后,NewUser从其 IAM 用户资源中删除标签。
您可以在此处查看我的完整政策的示例。
| 归档时间: |
|
| 查看次数: |
2056 次 |
| 最近记录: |