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

如何让单个ARN绕过AWS SCP拒绝策略?问题排查求助

AWS SCP策略问题排查与修复

问题分析

你当前的SCP策略逻辑是拒绝所有主体执行指定网络操作,仅豁免特定ARN的主体,但实际测试中该ARN仍被拒绝。核心可能出在以下几个方面:

1. Assumed-Role ARN的会话名动态性

当用户通过IAM角色登录时,aws:PrincipalArn的格式为arn:aws:sts::ACCOUNT-ID:assumed-role/ROLE-NAME/SESSION-NAME,其中SESSION-NAME并非固定值——不同登录客户端(如AWS控制台、CLI、SDK)生成的会话名可能不同,若CloudTrail中记录的ARN会话名与策略中写的companyuser@company.com不一致,会触发ArnNotLike条件,导致拒绝。

2. IAM角色权限缺失

SCP仅作为组织层面的权限边界,它只限制哪些操作被允许/拒绝,但账户内的IAM角色必须明确授予对应操作的权限。如果myawsrole角色本身没有允许ec2:CreateVpc等操作的IAM策略,即使SCP不拒绝,IAM的隐式拒绝仍会阻止操作。

3. 条件运算符使用场景不匹配

ArnNotLike用于带通配符的模糊匹配,若你需要精确豁免固定ARN,使用ArnNotEquals更严谨,避免通配符逻辑带来的意外匹配。


修复步骤

1. 确认CloudTrail中的完整ARN

查看CloudTrail日志里对应操作的userIdentity.arn字段,确认是否与策略中的ARN完全一致(包括大小写、会话名):

  • 如果会话名是动态变化的,改用通配符匹配该角色下的所有会话;
  • 如果会话名固定,确保策略中的ARN与日志完全一致。

2. 修正SCP策略

场景A:允许该角色下所有会话(忽略动态会话名)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "MyCompanyNetworkPolicy",
            "Effect": "Deny",
            "Action": [
                "ec2:CreateInternetGateway",
                "ec2:AttachInternetGateway",
                "ec2:CreateTransitGateway",
                "ec2:CreateTransitGatewayPeeringAttachment",
                "ec2:CreateTransitGatewayRoute",
                "ec2:CreateTransitGatewayRouteTable",
                "ec2:CreateTransitGatewayVpcAttachment",
                "ec2:CreateVpc",
                "ec2:CreateVpcPeeringConnection",
                "ec2:CreateVpnConnection",
                "ec2:CreateVpnConnectionRoute",
                "ec2:CreateVpnGateway",
                "ec2:DeleteDhcpOptions",
                "ec2:DeleteRoute",
                "ec2:DeleteRouteTable",
                "ec2:DeleteSubnet",
                "ec2:DeleteTransitGateway",
                "ec2:DeleteTransitGatewayRoute",
                "ec2:DeleteTransitGatewayRouteTable",
                "ec2:DeleteVpc",
                "ec2:ModifyTransitGateway",
                "ec2:ModifyTransitGatewayVpcAttachment",
                "ec2:ModifyVpcPeeringConnectionOptions",
                "ec2:ModifyVpcTenancy",
                "ec2:ModifyVpnConnection",
                "ec2:RejectTransitGatewayPeeringAttachment",
                "ec2:RejectTransitGatewayVpcAttachment"
            ],
            "Resource": "*",
            "Condition": {
                "ArnNotLike": {
                    "aws:PrincipalArn": [
                        "arn:aws:sts::1111111:assumed-role/myawsrole/*"
                    ]
                }
            }
        }
    ]
}

场景B:精确豁免固定ARN

将条件运算符改为ArnNotEquals:

"Condition": {
    "ArnNotEquals": {
        "aws:PrincipalArn": [
            "arn:aws:sts::1111111:assumed-role/myawsrole/companyuser@company.com"
        ]
    }
}

3. 补充IAM角色权限

确保myawsrole角色的IAM策略包含允许目标操作的语句,示例:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateVpc",
                "ec2:CreateInternetGateway",
                // 其他需要允许的操作
            ],
            "Resource": "*"
        }
    ]
}

4. 验证SCP应用范围

确认该SCP已正确关联到目标账户或其所在OU,且没有其他优先级更高的冲突SCP(如全局拒绝策略)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:55:57