Как настроить события Cloudwatch для срабатывания при вызовах API IAM?

Как настроить события Cloudwatch для срабатывания при вызовах API IAM?

Итак, у меня возникли проблемы с настройкой событий Cloudwatch для запуска функции Lambda. В текущем сценарии я хочу запускать Lambda, когда кто-то/что-то меняетсячто-либов ИАМ.

В настоящее время у меня есть глобальный Cloudtrail в Северной Вирджинии, который регистрирует все события IAM, и я могу видеть их очень четко.

Затем у меня есть событие Cloudwatch с триггером, настроенным на Lambda. При тестировании триггера на любой другой службе, например EC2, лямбда срабатывает правильно. Однако при использовании IAM это будетвсегданеудача.

Вот шаблон событий, который я использую, и, похоже, это единственное, что может быть неверным на данном этапе:

{
   "detail-type": [
     "AWS API Call via CloudTrail"
   ],
   "detail": {
     "eventSource": [
       "iam.amazonaws.com"
     ]
   }
}

Если кто-то уже пытался это настроить, помогите, пожалуйста. Это меня сводит с ума.

решение1

Для мониторинга изменений в IAM вам понадобится использовать комбинацию CloudWatch, CloudWatch Logs и CloudTrail. Убедитесь, что CloudTrail включен для каждого региона, который вы хотите отслеживать.

CloudTrail будет записывать вызовы IAM и сохранять их в журналах CloudTrail. CloudTrail будет публиковать события в журналах CloudWatch. Вы настраиваете фильтр в CloudWatch для генерации метрик CloudWatch из событий CloudTrail. Эти метрики используются для срабатывания оповещений.

Ваш фильтр CloudWach выглядит так:

{ ($.eventSource = "iam.amazonaws.com") }

Эта статья поможет вам понять процесс. Пошагово со скриншотами.

Как получать оповещения об изменении конфигурации IAM

решение2

Итак, я выяснил, в чем проблема, шаблоны, которые я пытался использовать, либо не обеспечивали малую, либо достаточно большую область действия. Мониторинг IAM таким образом требует соблюденияэтотруководство и когда оно сообщает вам шаблон событий для ввода в качестве шаблона событий Cloudwatch, вам необходимо указать ТОЧНО те имена событий, которые вам требуются.

Он довольно длинный, но демонстрирует, насколько тщательным вам нужно быть, и что подстановка не поддерживается. Вот шаблон, который у меня получился в итоге:

{
  "source": [
    "aws.iam"
  ],
  "detail-type": [
    "AWS API Call via CloudTrail"
  ],
  "detail": {
    "eventSource": [
      "iam.amazonaws.com"
    ],
    "eventName": [
      "AddClientIDToOpenIDConnectProvider",
      "AddRoleToInstanceProfile",
      "AddUserToGroup",
      "ChangePassword",
      "CreateAccessKey",
      "CreateAccountAlias",
      "CreateInstanceProfile",
      "CreateLoginProfile",
      "CreateOpenIDConnectProvider",
      "CreateRole",
      "CreateSAMLProvider",
      "CreateServiceLinkedRole",
      "CreateServiceSpecificCredential",
      "CreateUser",
      "CreateVirtualMFADevice",
      "DeactivateMFADevice",
      "DeleteVirtualMFADevice",
      "EnableMFADevice",
      "ResyncMFADevice",
      "UpdateAccessKey",
      "UpdateAccountPasswordPolicy",
      "UpdateGroup",
      "UpdateLoginProfile",
      "UpdateOpenIDConnectProviderThumbprint",
      "UpdateRoleDescription",
      "UpdateSAMLProvider",
      "UpdateServerCertificate",
      "UpdateServiceSpecificCredential",
      "UpdateSigningCertificate",
      "UpdateSSHPublicKey",
      "UpdateUser",
      "UploadServerCertificate",
      "UploadSigningCertificate",
      "UploadSSHPublicKey",
      "AttachGroupPolicy",
      "AttachRolePolicy",
      "AttachUserPolicy",
      "CreatePolicy",
      "CreatePolicyVersion",
      "DeleteAccountPasswordPolicy",
      "DeleteGroupPolicy",
      "DeletePolicy",
      "DeletePolicyVersion",
      "DeleteRolePolicy",
      "DeleteUserPolicy",
      "DetachGroupPolicy",
      "DetachRolePolicy",
      "DetachUserPolicy",
      "PutGroupPolicy",
      "PutRolePolicy",
      "PutUserPolicy",
      "SetDefaultPolicyVersion",
      "UpdateAssumeRolePolicy"
    ]
  }
}

Связанный контент