
因此,我在設定 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"
]
}
}