AWS IAM 强制 MFA 但允许首次更改密码

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论坛上被问到,但没有真正的答案。

eva*_*vie 0

这里推荐的路径是使用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描述先前声明的 AWS IAM 控制台屏幕截图

将凭据发送给新用户。他们首次登录后,NewUser从其 IAM 用户资源中删除标签。

您可以在此处查看我的完整政策的示例