如何查看AWS Lambda关联IAM角色的实际操作权限以细化策略?
如何收紧AWS Lambda IAM角色权限:查看实际执行的资源操作
你完全不用再靠低效的试错法调整权限了,AWS有几个内置工具可以帮你精准定位角色实际使用的权限,下面是最实用的两种方法:
1. 使用AWS CloudTrail查看具体API调用记录
CloudTrail会完整记录所有AWS服务的API调用,包括你的Lambda角色发起的请求,操作步骤如下:
- 登录AWS控制台,打开CloudTrail服务,进入Event history页面
- 在筛选条件中,选择Event source,输入你关注的服务(比如
iot.amazonaws.com、ssm.amazonaws.com、sts.amazonaws.com),再添加Role name筛选器,填入你的Lambda角色名称 - 查看结果里的
Event name字段,这里就是角色实际执行的具体动作(比如IoTDataPlane.Publish、SSM.GetParameter、sts.AssumeRole),同时Resources列会显示对应的资源ARN(如果有明确资源的话) - 如果需要分析更长周期的记录,可以把CloudTrail日志导出到S3,用Athena做深度查询,或者用CloudWatch Insights进行日志分析
2. 用IAM Access Advisor快速查看权限使用情况
IAM的Access Advisor功能直接展示角色在过去90天内实际使用过的权限,操作更直观简单:
- 打开IAM控制台,找到你的Lambda角色,切换到Access advisor标签页
- 页面会按服务分组,列出每个服务下角色使用过的具体权限,以及最后一次使用的时间;从未被使用的权限会被明确标记出来
- 你可以直接基于这些已使用的权限,来裁剪原来过于宽松的策略
生成细粒度策略的小技巧
- 把收集到的具体动作(比如
ssm:GetParameter而非ssm:*)和对应的资源ARN(比如arn:aws:ssm:us-east-1:123456789012:parameter/my-app/config)整理出来 - 可以用IAM控制台的Policy Generator工具生成规范的JSON策略,或者直接手动修改原有的
iamRoleStatements:iamRoleStatements: - Effect: Allow Action: - iot:Publish - ssm:GetParameter - sts:AssumeRole Resource: - "arn:aws:iot:us-east-1:123456789012:topic/my-topic" - "arn:aws:ssm:us-east-1:123456789012:parameter/my-app/*" - "arn:aws:sts::123456789012:role/allowed-assume-role" - 调整后建议在测试环境验证一段时间,确保所有必要操作都能正常执行,避免遗漏低频使用的权限
内容的提问来源于stack exchange,提问作者Patrick W.
相关产品推荐
相关产品推荐

