因此,我无法设置 Cloudwatch 事件来触发 Lambda 函数。在当前情况下,我希望当任何人/事物发生变化时触发 Lambda任何事物在 IAM 中。
目前我在北弗吉尼亚州有一个全球 Cloudtrail,它正在记录所有 IAM 事件,我可以非常清楚地看到它们。
然后我有一个 Cloudwatch 事件,其触发器设置为 Lambda。在任何其他服务(例如 EC2)上测试触发器时,lambda 都会正确触发。但是当使用 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 中设置过滤器以从 CloudTrail 事件生成 CloudWatch 指标。这些指标用于触发警报。
您的 CloudWach 过滤器如下所示:
{ ($.eventSource = "iam.amazonaws.com") }
本文将帮助您了解该过程。分步说明并附带屏幕截图。
答案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"
]
}
}