AWS配置强制MFA的IAM策略后用户访问S3、配置MFA报错
问题根因
- 当前部署的强制MFA策略
NotAction权限列表不全,缺少控制台配置MFA、清理残留MFA设备必需的IAM操作权限,导致用户配置MFA的流程被显式拒绝规则拦截 - 目标IAM用户名下存在残留的虚拟MFA设备实体,与新建MFA设备的路径/名称冲突,直接触发"实体已存在"报错
- 未完成MFA认证时,S3相关操作(包括
s3:ListBucket)不在策略豁免列表内,访问被拒绝是策略正常生效的表现,不是S3权限配置错误
修复步骤
- 补全强制MFA策略的豁免权限
将缺失的必要IAM操作加入策略的NotAction数组,修正后的策略片段如下:{ "Sid": "BlockMostAccessUnlessSignedInWithMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:ListMFADevices", "iam:ListUsers", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "iam:DeleteVirtualMFADevice", "iam:GetUser", "iam:ChangePassword", "iam:CreateAccessKey", "iam:UpdateAccessKey", "iam:DeleteAccessKey", "iam:ListAccessKeys", "sts:GetSessionToken" ], "Resource": "*", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "false" } } } - 清理残留MFA设备
使用管理员账号执行CLI命令,先查询目标用户名下绑定的所有MFA设备:aws iam list-mfa-devices --user-name <替换为目标IAM用户名>
从返回结果中获取残留设备的SerialNumber字段值,执行删除命令:aws iam delete-virtual-mfa-device --serial-number <替换为上一步查询到的设备序列号>若残留为硬件MFA设备,需先执行
aws iam deactivate-mfa-device --user-name <用户名> --serial-number <设备序列号>解绑后再删除 - 验证MFA配置流程
- 让IAM用户退出控制台后重新登录,此时未绑定MFA的状态下无法访问S3等服务属于策略预期效果
- 直接进入IAM用户安全凭证页面,选择分配虚拟MFA设备,按指引完成二维码扫描、双验证码校验即可完成绑定
- 绑定完成后退出控制台,重新登录时输入MFA验证码,登录后即可正常访问S3等授权资源
内容的提问来源于stack exchange,提问作者Santosh Baruah
相关产品推荐
相关产品推荐

