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

配置强制CLI使用MFA的正确AWS策略

解决方案:配置MFA强制验证的IAM策略

1. 修正用户的IAM策略(附加到newUserMumbai用户)

你的现有策略存在两个关键问题:

  • 第二个sts:AssumeRole的Statement未添加MFA条件,导致无需验证MFA就能执行角色切换,直接绕开MFA限制
  • 第三个Statement用了泛用的apigateway:POST,但import-rest-api对应的IAM动作是apigateway:ImportRestApi,需使用具体动作名

正确的用户策略需确保所有操作(包括AssumeRole)都必须通过MFA验证:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "iam:ListMFADevices",
            "Resource": "arn:aws:iam::681278469643:user/newUserMumbai"
        }
    ]
}
  • 第一个Statement:强制所有操作必须携带MFA验证才能执行
  • 第二个Statement:允许用户查看自身MFA设备(可选,若脚本已硬编码或用户手动输入序列号则可省略)

2. 配置角色的信任策略(针对TestiRooli1角色)

仅靠用户策略还不够,需确保只有经过MFA验证的用户才能假设该角色,在角色的信任关系中添加MFA条件:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::681278469643:user/newUserMumbai"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        }
    ]
}

3. 配置角色的权限策略(针对TestiRooli1角色)

给角色分配实际需要的操作权限,比如允许apigateway:ImportRestApi及其他你需要的CLI操作:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "apigateway:ImportRestApi",
                // 在此添加其他需要的CLI操作,例如s3:ListBuckets等
                "sts:GetCallerIdentity"
            ],
            "Resource": "*"
        }
    ]
}

4. 脚本执行的关键注意事项

执行sts assume-role时必须携带MFA参数,否则会被拒绝:

aws sts assume-role `
    --role-arn "arn:aws:iam::681278469643:role/TestiRooli1" `
    --role-session-name "MFA-Auth-Session" `
    --serial-number "arn:aws:iam::681278469643:mfa/newUserMumbai" `
    --token-code "你的MFA令牌"
  • 执行完成后,需将返回的AccessKeyId、SecretAccessKey、SessionToken设置为环境变量,或写入AWS配置文件,确保后续apigateway import-rest-api命令使用这些已通过MFA验证的临时凭证

验证逻辑说明

  • 若用户未提供正确MFA令牌,sts assume-role会直接失败(用户策略和角色信任策略均要求MFA)
  • 即使绕过用户策略,角色的信任策略也会拒绝未验证MFA的角色切换请求
  • 成功切换角色后,临时凭证自带MFA验证标识,后续所有CLI操作会自动满足用户策略中的aws:MultiFactorAuthPresent条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:59:53