如何配置 Cloudwatch 事件以在 IAM API 呼叫上觸發?

如何配置 Cloudwatch 事件以在 IAM API 呼叫上觸發?

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

本文將幫助您了解該過程。透過螢幕截圖逐步進行。

如何在 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"
    ]
  }
}

相關內容