Поэтому у меня проблемы с настройкой событий Cloudwatch для запуска функции Lambda. В текущем сценарии я хочу запускать лямбду, когда кто-то / вещь меняется что-нибудь в IAM.
В настоящее время у меня есть глобальный Cloudtrail в Северной Вирджинии, который регистрирует все события IAM, и я могу их очень четко видеть.
Затем у меня есть событие Cloudwatch с триггером, настроенным на Lambda. При тестировании триггера на любом другом сервисе, скажем EC2, лямбда срабатывает правильно. Однако при использовании IAM он будет всегда потерпеть поражение.
Вот шаблон событий, который я использую, и это, кажется, единственное, что может быть неправильным на данный момент:
{
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"iam.amazonaws.com"
]
}
}
Если кто-то пробовал это настраивать раньше, помогите пожалуйста. Это меня заводит.
Итак, я выяснил, в чем проблема: шаблоны, которые я пытался использовать, либо не обеспечивали маленькую, либо достаточно большую область действия. Такой мониторинг IAM требует следующих этот Guide, и когда он сообщает вам шаблон событий для ввода в качестве шаблона событий 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"
]
}
}
Чтобы отслеживать изменения в IAM, вам необходимо использовать комбинацию CloudWatch, CloudWatch Logs и CloudTrail. Убедитесь, что CloudTrail включен для каждого региона, который вы хотите отслеживать.
CloudTrail будет записывать звонки в IAM и сохранять их в журналах CloudTrail. CloudTrail будет публиковать события в журналах CloudWatch. Вы настраиваете фильтр в CloudWatch для генерации метрик CloudWatch на основе событий CloudTrail. Эти показатели используются для активации сигналов тревоги.
Ваш фильтр CloudWach выглядит так:
{ ($.eventSource = "iam.amazonaws.com") }
Эта статья поможет вам разобраться в этом процессе. Пошаговая инструкция со скриншотами.