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

通过Amazon S3访问点为角色授权时出现AccessDenied问题求助

问题根因

这是AWS IAM权限评估逻辑的正常表现,当通过S3访问点发起操作请求时,需要同时通过4层权限校验:

  1. 调用者身份策略(角色策略)的权限校验
  2. 访问点策略的权限校验
  3. 桶策略的权限校验
  4. 对象ACL(如果配置的话)的权限校验

你当前的配置只有全局拒绝规则,没有配置桶侧的权限委托,也没有在角色策略中授予底层S3桶/对象的访问权限,因此默认的隐式拒绝规则会生效。你观察到的现象完全符合该逻辑:当你在角色策略中同时添加访问点ARN和底层桶ARN时,角色策略同时满足了「访问点资源操作允许」和「底层S3资源操作允许」两个要求,结合已配置的拒绝规则会过滤掉非指定访问点、非指定角色的请求,因此访问正常。如果移除任意一端的ARN配置,就会触发对应层的隐式拒绝,返回AccessDenied。


可选解决方案

方案1:保持现有角色策略补充桶ARN的配置(推荐,配置简单安全)

不需要修改现有桶策略和访问点策略,直接保留角色策略中同时存在访问点ARN、底层桶ARN的配置即可,符合AWS默认的权限最小化要求,所有访问依然会被限制为仅指定角色通过指定访问点操作。

方案2:配置桶权限委托,避免在角色策略中配置桶ARN

在现有桶策略中新增一条允许语句,将对应操作的权限判断委托给访问点,配置如下:

{
    "Sid": "DelegatePermissionsToAccessPoint",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
        "s3:ListBucket",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:PutObject"
    ],
    "Resource": [
        "arn:aws:s3:::XXX-YYY-ZZZ",
        "arn:aws:s3:::XXX-YYY-ZZZ/*"
    ],
    "Condition": {
        "StringEquals": {
            "s3:DataAccessPointArn": "arn:aws:s3:us-east-1:XXX-YYY-ZZZ:accesspoint/XXX-YYY-ZZZ"
        }
    }
}

添加后即可删除角色策略中的底层桶ARN配置,仅保留访问点ARN即可正常访问。


额外优化建议

你当前访问点策略仅配置了拒绝规则,可以补充一条显式允许指定角色操作的语句,避免依赖其他层的权限传递,配置逻辑更清晰:

{
    "Sid": "AllowSpecifiedRoleOperateThroughAccessPoint",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::XXX-YYY-ZZZ:role/XXX-YYY-ZZZ"
    },
    "Action": [
        "s3:ListBucket",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:PutObject"
    ],
    "Resource": [
        "arn:aws:s3:us-east-1:XXX-YYY-ZZZ:accesspoint/XXX-YYY-ZZZ",
        "arn:aws:s3:us-east-1:XXX-YYY-ZZZ:accesspoint/XXX-YYY-ZZZ/object/*"
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:24:00