You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS中能否对组级(如管理员)强制MFA?能否通过IAM规则或SCP实现?

在AWS中强制组/权限用户启用MFA的方法

Great question! 虽然你没法直接在组级别启用MFA(因为MFA是IAM中用户专属的设置),但完全可以通过IAM策略或AWS Organizations的SCP(组织控制策略),间接实现对特定用户组(比如管理员组)或拥有特定权限的用户强制启用MFA的要求。下面分两种方案详细说明:

1. 使用IAM策略强制特定用户组启用MFA

核心思路是创建一条IAM策略,拒绝未激活MFA会话的用户执行关键操作,再把这条策略附加到目标用户组(比如管理员组)上。这样一来,组内用户如果不启用MFA,就无法完成日常工作,间接达到强制要求的效果。

关键注意点

  • 必须把MFA相关的设置操作从拒绝规则中排除,否则用户连启用MFA的权限都没有,会陷入死循环!
  • 策略会覆盖组内所有用户,哪怕是资深管理员,只要没启用MFA就无法执行核心操作。

示例IAM策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowMfaSetup",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice"
            ],
            "Resource": ["arn:aws:iam::ACCOUNT_ID:user/${aws:username}"]
        },
        {
            "Sid": "DenyAllWithoutMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices",
                "iam:ListVirtualMFADevices",
                "iam:ResyncMFADevice",
                "iam:ChangePassword",
                "sts:GetSessionToken"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}

记得把ACCOUNT_ID替换成你的AWS账号ID。这条策略允许用户自行设置MFA,但会阻止所有其他操作,除非用户有激活的MFA会话。

2. 使用SCP强制MFA(适用于AWS Organizations)

如果你用AWS Organizations管理多个账号,SCP可以在OU(组织单元)或账号级别强制MFA,甚至能精准针对拥有管理员权限的用户。

示例SCP(强制管理员用户使用MFA)

这条SCP会拒绝所有未激活MFA的用户执行管理员级操作,不管他们属于哪个用户组:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyAdminActionsWithoutMFA",
            "Effect": "Deny",
            "Action": [
                "iam:*",
                "organizations:*",
                "account:*",
                "s3:PutBucketPolicy",
                "ec2:RunInstances"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        },
        {
            "Sid": "AllowMfaSetup",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:GetUser",
                "iam:ListMFADevices"
            ],
            "Resource": "*"
        }
    ]
}

把这条SCP附加到包含管理员账号的OU上,就能阻止所有未启用/未使用MFA的用户执行管理员操作。

额外提示

  • 已经启用MFA的用户,在登录AWS控制台或使用CLI/SDK时,需要输入MFA令牌(CLI用户可以通过aws sts get-session-token --serial-number <MFA_ARN> --token-code <MFA_CODE>获取会话令牌)。
  • 你还可以用AWS Config规则审计哪些用户未启用MFA,再通过Amazon SNS发送告警,及时发现遗漏的情况。

内容的提问来源于stack exchange,提问作者bin2hex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:57:30