В настоящее время я использую шаблоны CloudFormation для автоматизации загрузки наборов аналитики угроз в AWS Guard Duty. После нескольких недель успешного тестирования я теперь получаю внутренние ошибки сервера всякий раз, когда пытаюсь загрузить набор аналитики угроз. Это происходит как при попытке загрузки через консоль, так и программно через Boto3. При тестировании в моей личной учетной записи я все еще могу нормально загружать списки угроз. Есть предложения, как это сделать? Я немного растерялся, так как, очевидно, сложно отлаживать ошибки сервера со стороны клиента
В итоге я просто поговорил со службой поддержки AWS и вставлю ответ, чтобы помочь кому-либо еще с аналогичной проблемой. tldr; это известная ошибка, которая, вероятно, не возникнет в производственной среде и имеет относительно простое исправление.
Прежде чем мы поговорим об исправлении, позвольте мне объяснить, как взаимодействуют GuardDuty, IAM и S3 (возможно, вы уже знаете это). Когда пользователь вызывает API CreateThreatIntelSet, тогда на серверной стороне вызывается PutRolePolicy [IAM], который позволяет роли службы AWSServiceRoleForAmazonGuardDuty выполнять GetObject [S3] объекту S3, содержащему список угроз. Подробнее:
https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload_lists.html
Итак, имея в виду приведенную выше информацию, вы должны заметить, что вызов IAM API «PutRolePolicy», который вызывается GuardDuty, не работает из-за ограничения размера политики в 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 встроенных политик), и это сработало.