如何查看授予/拒绝访问AWS Kinesis数据流的策略及写入权限主体
一、找出有Kinesis写入权限的IAM主体
1. 用IAM Access Analyzer排查
打开IAM控制台,进入Access Analyzer模块,创建或选择已有的分析器。在分析结果里,筛选资源类型为Kinesis Stream,然后找包含kinesis:PutRecord或kinesis:PutRecords权限的策略语句。这些结果会列出所有被授予写入权限的IAM用户、角色或组,不管是直接附加的权限,还是通过IAM策略、资源策略继承来的。
2. 检查Kinesis数据流的资源策略
进入Kinesis控制台,找到目标数据流,切换到权限标签页。这里能看到直接绑定在数据流上的资源策略,看看里面有没有允许kinesis:PutRecord/kinesis:PutRecords操作的语句,语句里的Principal字段就是拥有写入权限的主体——可能是IAM实体、AWS账户,甚至匿名用户。
3. 用IAM策略模拟器验证
打开IAM策略模拟器,选好要验证的IAM用户/角色,添加kinesis:PutRecord和kinesis:PutRecords操作,指定目标数据流的ARN。运行模拟后,结果会明确告诉你这个主体有没有写入权限,还能看到是哪些策略(用户策略、角色策略、资源策略)导致了权限允许或拒绝。
二、追踪实际写入数据流的主体
1. 调整CloudTrail的查询条件
之前没找到数据大概率是查询条件不对。进入CloudTrail控制台的事件历史:
- 筛选事件名称为
PutRecord或PutRecords,资源类型选AWS::Kinesis::Stream,再指定目标数据流的ARN。 - 查看事件里的
userIdentity字段,这里会记录实际执行写入操作的主体——可能是IAM用户、角色,或者AWS服务的主体(比如Lambda的执行角色)。
2. 启用Kinesis监控辅助追踪(可选)
给数据流开CloudWatch指标,结合CloudWatch Logs Insights查询日志也能追踪写入来源,但CloudTrail是更直接的方式,优先用它。
三、查看特定资源的访问权限策略
1. 查看资源自身的权限配置
对Kinesis数据流来说,直接在控制台的权限标签页看资源策略就行,也能用AWS CLI命令:
# 先获取数据流ARN aws kinesis describe-stream-summary --stream-name <你的数据流名称> --query 'StreamDescriptionSummary.StreamARN' # 然后获取资源策略 aws kinesis get-resource-policy --resource-arn <数据流ARN>
2. 查看IAM主体的关联权限
针对某个IAM用户/角色,在IAM控制台的权限标签页,查看它附加的所有策略,筛选带kinesis:前缀的权限,重点看PutRecord/PutRecords操作和对应的资源ARN。也能用CLI命令:
# 列出用户附加的所有策略 aws iam list-attached-user-policies --user-name <用户名> # 获取指定策略的详情 aws iam get-user-policy --user-name <用户名> --policy-name <策略名>
3. 生成IAM Access Analyzer权限报告
在Access Analyzer里生成权限报告,筛选目标Kinesis数据流,就能拿到所有具备该资源访问权限的主体列表,以及对应的权限细节。
内容的提问来源于stack exchange,提问作者Sagoito

