PAYATHON 2026

GuardDuty 上传验证对象时为何提示 IAM 权限不足?

数据阿明

结论

从你提供的策略看,应先修正 GuardDuty 使用的 IAM role policy,让 s3:PutObject 权限匹配对象 ARN。当前的 Resource 是 arn:aws:s3:::*,属于 bucket ARN,不能匹配 bucket 中对象的 ARN。可以先为验证对象添加精确到对象 key 的权限,再确认 bucket policy 没有对该对象设置显式拒绝。

AWS 关于 INSUFFICIENT_TEST_OBJECT_PERMISSIONS 的排查文档说明,验证对象权限应添加到所选 IAM role 上。如果权限已经配置但仍出现此提示,还应检查 bucket policy 是否限制了写入。GuardDuty 验证对象排查文档

调整 IAM role policy

你贴出的 role policy 将多个 S3 操作放在同一条语句中,Resource 设置为:

"Action": ["s3:PutObject", "s3:GetObject", "s3:ListBucket"],
"Resource": "arn:aws:s3:::*"

这些操作需要不同类型的资源 ARN:s3:PutObject 需要对象 ARN,s3:ListBucket 需要 bucket ARN。建议为验证对象单独添加一条语句,并将 bucket 名替换为实际名称:

{
  "Sid": "AllowPutValidationObject",
  "Effect": "Allow",
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/malware-protection-resource-validation-object"
}

如果 GuardDuty 需要读取和扫描 bucket 中的对象,再根据实际扫描范围,为 s3:GetObject 和 s3:GetObjectVersion 配置对象 ARN,例如 arn:aws:s3:::YOUR_BUCKET_NAME/*。s3:ListBucket 则应单独使用 arn:aws:s3:::YOUR_BUCKET_NAME。AWS 提供的 role policy 示例也分别配置了验证对象写入、bucket 列举和对象读取权限。GuardDuty IAM role policy 示例

检查 bucket policy 的拒绝规则

你的拒绝语句通过 NotResource 排除了以下路径:

arn:aws:s3:::<bucket>/malware-protection-resource-validation-object*

请确认实际 bucket 名和对象 key 与该路径一致,并检查 bucket policy 中是否还有其他适用于这个 key 的显式 Deny。IAM role 上的 Allow 无法覆盖适用的显式拒绝。

还应复核策略中的 aws:PrincipalService 条件。GuardDuty Malware Protection for S3 会通过配置的 IAM service role 执行相关操作。如果 bucket policy 按调用身份豁免拒绝规则,需要核对请求实际使用的 role 身份和条件键。仅配置 GuardDuty service principal,并不能说明写对象请求会以该 service principal 作为请求主体。当前 NotResource 已排除验证对象时,先确认排除路径匹配,再逐条检查其他拒绝规则。

建议排查顺序

  1. 在当前使用的 GuardDuty IAM role policy 中,为验证对象添加上述精确的 s3:PutObject 权限。
  2. 检查 s3:ListBucket、对象读取权限和 KMS 权限是否使用了对应的资源 ARN。如果 bucket 使用客户管理的 KMS key,也要核对 role policy 和 KMS key policy 是否允许所需操作。
  3. 检查 bucket policy 中针对验证对象的显式 Deny,重点确认 NotResource 路径、加密条件和其他拒绝语句的匹配结果。
  4. 更新策略后等待其生效,再查看 Malware Protection plan 状态。AWS 文档提示,状态更新可能需要几分钟。验证对象权限缺失也可能显示为 warning,不一定会阻止新上传对象触发扫描。

以上判断基于题目中提供的策略片段。如果问题仍未解决,可结合完整 bucket policy、IAM role ARN、bucket 的默认加密设置和 KMS key policy 继续排查。

备注:内容仅供参考。