将威胁列表上传到 AWS Guard Duty 时出现内部服务器错误

将威胁列表上传到 AWS Guard Duty 时出现内部服务器错误

我目前正在使用 CloudFormation 模板自动将威胁情报集上传到 AWS Guard Duty。经过数周的成功测试,现在每当我尝试上传威胁情报集时,都会收到内部服务器错误。无论是尝试通过控制台上传还是通过 Boto3 以编程方式上传,都会发生这种情况。在我的个人账户上测试时,我仍然可以正常上传威胁列表。有什么建议可以继续吗?我有点不知所措,因为从客户端调试服务器错误显然很困难

答案1

我最终只是与 AWS 支持人员进行了交谈,我将粘贴答案以帮助遇到类似问题的人。 tldr;这是一个已知的错误,可能不会在生产环境中发生,并且有一个相对简单的修复

在讨论修复方法之前,让我先解释一下 GuardDuty、IAM 和 S3 如何交互(您可能已经知道这一点)。当用户调用“CreateThreatIntelSet”API 时,后端会调用“PutRolePolicy”[IAM],这允许服务角色“AWSServiceRoleForAmazonGuardDuty”对托管威胁列表的 S3 对象执行“GetObject”[S3]。更多详细信息:

https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload_lists.html

因此,记住以上信息,您应该注意到,GuardDuty 调用的“PutRolePolicy”的 IAM API 调用因 10240 字节的策略大小限制而失败,进而导致“CreateThreatIntelSet”出现内部错误而失败。

请参阅:IAM 限制:https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-limits.html

因此我相信“CreateThreatIntelSet”被多次调用,从而在 AWSServiceRoleForAmazonGuardDuty 服务角色中创建了多个内联策略。

拥有重复的内联策略不是问题,但由于重复的策略,我们达到了 IAM 策略限制。您可以导航到以下位置以确认这一点:

https://console.aws.amazon.com/iam/home?region=us-east-1#/roles/AWSServiceRoleForAmazonGuardDuty

解决该问题的一个简单方法是删除 AWSServiceRoleForAmazonGuardDuty 服务角色中重复的内联策略,然后再次创建威胁列表。

...

行动计划:1- 请删除 AWSServiceRoleForAmazonGuardDuty 服务角色中重复的内联策略,然后重新创建威胁列表。2- 如果您定期更新威胁列表,那么我们建议使用 UpdateThreatIntelSet API,而不是删除令人兴奋的威胁列表然后创建新的威胁列表: https://docs.aws.amazon.com/guardduty/latest/ug/update-threat-intel-set.html

这个答案实际上有点不正确:我找不到删除内联策略的方法,因为 boto3 抱怨用户无权编辑与服务相关的角色。所以我最终删除了该角色并重新创建了它(减去 50 个内联策略),这有效

相关内容