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

如何禁止用户修改AWS EC2安全组?现有IAM策略未生效求助

无法阻止用户修改EC2安全组规则的排查思路

你遇到的问题是IAM Deny策略未生效,用户仍能修改指定安全组的入站/出站规则,以下是几个关键排查方向:

1. 检查用户是否有其他Allow策略覆盖Deny

IAM权限模型中,显式Deny会覆盖所有Allow,但如果用户被附加了其他包含Allow上述安全组操作的策略(比如AmazonEC2FullAccess、自定义EC2权限策略),且这些策略的资源范围包含你的目标安全组,需要确认是否存在权限冲突:

  • 查看用户的所有附加策略(包括用户组策略、权限边界),确认没有其他策略允许ec2:AuthorizeSecurityGroupIngress等操作作用于这些安全组。
  • 用AWS CLI模拟权限测试,验证用户执行目标操作时的实际权限:
    aws iam simulate-custom-policy \
        --policy-input-list '{"Version": "2012-10-17", "Statement": [{"Sid": "PreventUpdateOfCoreSecurityGroups", "Effect": "Deny", "Action": ["ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress", "ec2:ModifySecurityGroupRules"], "Resource": ["arn:aws:ec2:us-west-2:************:security-group/sg-1"]}]}' \
        --action-names ec2:AuthorizeSecurityGroupIngress \
        --resource-arns arn:aws:ec2:us-west-2:************:security-group/sg-1 \
        --principal-arn arn:aws:iam::************:user/[目标用户名]
    
    查看返回结果中的EvalDecision,如果是Allowed,说明存在其他Allow策略干扰权限计算。

2. 确认安全组ARN完全正确

检查策略中列出的安全组ARN是否与实际资源一致:

  • 核对ARN中的账户ID、区域、安全组ID,确保没有拼写错误(比如sg-1是否是目标安全组的真实ID,区域us-west-2是否匹配)。
  • 可以通过AWS控制台直接复制安全组的ARN,避免手动输入错误。

3. 补充遗漏的操作权限

除了你列出的操作,控制台的“编辑规则”功能可能调用额外的API,建议将以下操作也加入Deny列表:

"ec2:UpdateSecurityGroupRuleDescriptionsIngress",
"ec2:UpdateSecurityGroupRuleDescriptionsEgress"

虽然这些操作不修改规则本身,但如果需要完全限制用户对安全组规则的任何编辑行为,建议补充。

4. 验证Terraform的执行权限隔离

确保Terraform使用的IAM身份(角色/用户)与普通用户完全隔离:

  • Terraform的执行身份需要单独拥有Allow这些安全组操作的权限,且该身份未被普通用户复用。
  • 避免普通用户被赋予Terraform执行角色的切换权限(比如sts:AssumeRole)。

5. 检查组织SCP和权限边界

如果你使用AWS Organizations,确认服务控制策略(SCP)没有允许所有账户用户执行这些安全组操作;同时检查用户的权限边界(Permission Boundary)是否包含允许这些操作的规则,权限边界会限制用户的最大权限范围,如果边界允许,可能导致IAM Deny策略失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:42:43