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

AWS SCP配置异常:指定IAM用户切换角色后无法删除S3桶

问题分析与排查方案

你的SCP策略失效的核心原因是切换角色后aws:username条件键无法匹配原管理账号的用户名,以下是具体排查点和修正方案:

1. aws:username条件键的局限性

当BobSmith从管理账号切换到OU账号的IAM角色时,当前会话的身份是目标角色而非原用户,此时aws:username的值会变为角色的会话名称(默认是原用户名,但并非可靠匹配项),甚至在部分场景下该条件键不会存在。原策略中StringNotEqualsIfExists会在aws:username不匹配或不存在时触发Deny,导致BobSmith切换角色后被拒绝操作。

2. 关键排查步骤

  • 验证当前身份上下文:让BobSmith在切换角色后执行以下AWS CLI命令,确认身份信息:
    aws sts get-caller-identity
    
    查看返回的Arn字段,此时身份是OU账号的角色ARN,而非BobSmith的用户ARN,aws:username也不会是原管理账号的用户名。
  • 检查SCP应用范围:确认该SCP是否已正确关联到目标OU,且OU包含了被切换的账号。注意:管理账号默认不受SCP约束,但若将管理账号加入OU则会受影响。

3. 修正后的SCP策略

如果需要允许BobSmith直接以管理账号用户身份操作OU账号的S3桶(不切换角色),可将条件键改为aws:PrincipalArn并明确指定用户ARN:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowBobSmithDeleteBucket",
      "Effect": "Deny",
      "Action": "s3:DeleteBucket",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::[管理账号ID]:user/BobSmith"
        }
      }
    }
  ]
}

如果需要允许BobSmith切换到OU账号的角色后执行删除操作,需在SCP中同时包含角色ARN,并确保角色的信任策略允许BobSmith切换:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowBobSmithOrRoleDeleteBucket",
      "Effect": "Deny",
      "Action": "s3:DeleteBucket",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalArn": [
            "arn:aws:iam::[管理账号ID]:user/BobSmith",
            "arn:aws:iam::[OU账号ID]:role/[切换的角色名]"
          ]
        }
      }
    }
  ]
}

4. 额外注意事项

  • SCP是权限上限约束:即使SCP允许操作,目标账号的IAM策略仍需明确授予BobSmith(或切换的角色)s3:DeleteBucket权限,SCP仅做权限范围限制。
  • 控制台操作的隐性权限:S3控制台删除桶时会额外调用s3:GetBucketLocation、s3:ListBucket等权限,需确保这些权限也被允许(通过IAM策略或SCP)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:30:18