DataDog AWS CloudTrail集成报错:调用ListObjects时Access Denied
问题分析与解决方案
核心问题定位
报错里的AccessDenied是针对**CloudTrail日志存储的S3桶(aws-cloudtrail-logs-ListObjects操作,和DataDog栈创建的datadogintegration-forwarderstack-forwarderbucket-<redacted>桶无关——那个桶的当前策略仅限制非SSL请求,配置是正常的,不需要修改。
需要添加的IAM权限
给DataDog CloudFormation栈创建的Lambda执行角色(通常名称包含datadog-forwarder-role类似前缀)添加以下S3权限:
- 权限动作:
s3:ListBucket:对应报错里的ListObjects操作(ListObjects属于S3桶级操作,对应IAM权限为s3:ListBucket)s3:GetObject:Lambda需要读取CloudTrail日志文件内容才能转发到DataDog
- 权限资源:
- CloudTrail日志桶的ARN:
arn:aws:s3:::aws-cloudtrail-logs-<redacted>-<redacted> - 桶内所有日志对象:
arn:aws:s3:::aws-cloudtrail-logs-<redacted>-<redacted>/*
- CloudTrail日志桶的ARN:
示例IAM权限策略片段:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::aws-cloudtrail-logs-<redacted>-<redacted>", "arn:aws:s3:::aws-cloudtrail-logs-<redacted>-<redacted>/*" ] } ] }
额外检查点
如果添加上述权限后仍报错,需要检查CloudTrail日志桶的桶策略:确保没有拒绝该Lambda角色的访问,或者明确添加允许该角色执行s3:ListBucket和s3:GetObject的语句。
内容的提问来源于stack exchange,提问作者hotmeatballsoup
相关产品推荐
相关产品推荐

