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

AWS Lambda函数忽略指定执行角色权限配置问题求助

问题分析与排查方案

这问题我之前也碰到过,大概率是这几个常见原因之一,咱们一步步拆解排查:

1. IAM角色被附加了额外的权限策略

你创建的lamba-s3-orca-resources角色,可能除了你自定义的内联策略orca-resources-only,还被悄悄加上了其他托管/内联策略(比如AmazonS3FullAccess、AdministratorAccess这类权限范围极广的策略)。这些额外策略会直接赋予角色访问所有S3桶的权限,自然能读取orca-exe的内容。

排查方法:

  • 打开IAM控制台,找到lamba-s3-orca-resources角色
  • 切换到「权限」标签,查看所有已附加的策略(包括托管策略和内联策略)
  • 检查这些策略里是否有针对S3的全量权限,或者明确允许访问orca-exe的语句

2. 目标桶orca-exe的桶策略允许匿名/广泛访问

你之前把orca-resources设为公开,会不会不小心给orca-exe也配置了类似的公开访问桶策略?如果orca-exe的桶策略允许所有用户执行s3:ListBucket动作,那么即使你的Lambda执行角色没有显式授权,也能通过匿名身份成功调用listObjects接口。

排查方法:

  • 打开S3控制台,找到orca-exe桶
  • 切换到「权限」标签,查看「桶策略」
  • 检查是否有类似这样的危险语句:
{
  "Effect": "Allow",
  "Principal": "*",
  "Action": "s3:ListBucket",
  "Resource": "arn:aws:s3:::orca-exe"
}

如果有,说明这个桶允许任何人列出内容,自然包括你的Lambda。

3. AWS组织服务控制策略(SCP)的影响(若账号属于组织)

如果你的AWS账号是AWS Organizations的成员,可能存在SCP(服务控制策略)允许所有S3操作。SCP的优先级高于IAM用户/角色的自定义策略,会直接覆盖你设置的orca-resources-only策略。

排查方法:

  • 登录AWS Organizations控制台,查看当前账号的SCP配置,确认是否有允许全S3访问的策略。

修复建议

  1. 清理IAM角色的冗余权限:移除lamba-s3-orca-resources角色上所有不必要的附加策略,只保留你自定义的orca-resources-only策略。
  2. 修正orca-exe的桶策略:移除任何允许匿名或广泛访问的语句,确保只有你明确授权的主体能访问该桶。
  3. 用IAM Access Analyzer验证权限:使用IAM Access Analyzer工具,检查你的Lambda角色是否真的被允许访问orca-exe的s3:ListBucket动作,它会帮你精准定位所有权限来源。

另外补充个小细节:你代码里调用的s3.listObjects()对应的IAM动作确实是s3:ListBucket(AWS IAM动作是大小写敏感的,正确动作名是s3:ListBucket而非小写的s3:listObjects),你的自定义策略里已经针对orca-resources授权了这个动作,但这和访问orca-exe无关,所以不是问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:08:50