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

AWS IAM策略异常:指定S3文件夹外仍可访问问题排查

AWS IAM策略限制S3特定文件夹访问失效的原因分析

针对你遇到的问题——配置了仅允许访问Data-mocks/data.io/*的IAM策略,但关联角色的用户仍能访问Data-mocks/companyid文件夹,核心原因大概率是权限评估逻辑中的允许权限叠加,或者存在其他未被排查的访问授权路径,具体拆解如下:

可能的原因

  • 存在额外的允许权限策略
    AWS权限评估遵循「允许优先」原则(除非有明确的Deny策略覆盖)。如果该用户/角色除了你配置的策略外,还附加了其他IAM策略(比如直接绑定到用户的策略、用户组策略),或者S3存储桶配置了允许该主体访问的桶策略,都会授予超出预期的访问权限。例如用户所属的用户组有arn:aws:s3:::Data-mocks/*的访问权限,或者桶策略中给该角色开了全桶读写权限,都会绕过你配置的路径限制。

  • 用户未通过目标角色访问
    你配置的是角色的权限策略,但如果用户直接使用自身IAM用户身份访问S3,而非通过sts:AssumeRole切换到该角色,那么角色的权限限制完全不会生效。需确认用户操作时是否确实切换到了目标角色。

  • S3 ACL的遗留授权
    若S3桶或对象的ACL(访问控制列表)设置了允许该用户/角色的访问权限,也会绕过IAM策略的限制。比如桶的ACL给了该用户"读"权限,用户就能直接访问桶内所有对象。

  • ListBucket权限的额外授权
    你的策略仅授权了s3:GetObject和s3:PutObject,但用户能看到companyid文件夹,说明存在其他策略授予了s3:ListBucket权限。虽然列出文件夹本身不代表能访问其中对象,但如果同时有其他允许访问该路径对象的权限,就会出现你看到的现象。

验证与解决步骤

  1. 用IAM Policy Simulator排查权限
    使用AWS IAM控制台的Policy Simulator,模拟该角色对Data-mocks/companyid/*路径的s3:GetObject操作,查看哪些策略触发了允许授权,定位额外权限来源。

  2. 清理冗余授权

    • 检查用户自身的IAM策略、所属用户组的策略,移除不必要的S3访问权限;
    • 检查S3存储桶的桶策略,确保没有给该用户/角色开放过度的访问权限;
    • 检查S3桶和对象的ACL,删除不符合需求的授权条目。
  3. 添加明确的Deny策略(可选)
    如果需要严格限制访问范围,可在角色策略中添加Deny语句,覆盖其他允许权限:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": ["s3:GetObject", "s3:PutObject"],
                "Resource": "arn:aws:s3:::Data-mocks/data.io/*"
            },
            {
                "Effect": "Deny",
                "Action": ["s3:GetObject", "s3:PutObject"],
                "Resource": "arn:aws:s3:::Data-mocks/*",
                "Condition": {
                    "StringNotLike": {
                        "s3:prefix": "data.io/*"
                    }
                }
            }
        ]
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:55:02