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
相关产品推荐
相关产品推荐

