Wie konfiguriere ich Cloudwatch-Ereignisse so, dass sie bei IAM-API-Aufrufen ausgelöst werden?

Wie konfiguriere ich Cloudwatch-Ereignisse so, dass sie bei IAM-API-Aufrufen ausgelöst werden?

Ich habe also Probleme, Cloudwatch-Ereignisse so einzurichten, dass sie eine Lambda-Funktion auslösen. Im aktuellen Szenario möchte ich eine Lambda-Funktion auslösen, wenn sich jemand/etwas ändertirgendetwasim IAM.

Derzeit habe ich einen globalen Cloudtrail in N. Virginia, der alle IAM-Ereignisse protokolliert und ich kann sie sehr deutlich sehen.

Ich habe dann ein Cloudwatch-Ereignis mit seinem Trigger, der auf Lambda eingestellt ist. Wenn ich den Trigger auf einem anderen Dienst teste, beispielsweise EC2, wird das Lambda korrekt ausgelöst. Bei Verwendung von IAM wird es jedochstetsscheitern.

Dies ist das von mir verwendete Ereignismuster, das an dieser Stelle das Einzige zu sein scheint, was falsch sein könnte:

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

Wenn jemand schon einmal versucht hat, dies einzurichten, bitte helfen Sie. Es macht mich wahnsinnig.

Antwort1

Um Änderungen an IAM zu überwachen, müssen Sie eine Kombination aus CloudWatch, CloudWatch Logs und CloudTrail verwenden. Stellen Sie sicher, dass CloudTrail für jede Region aktiviert ist, die Sie überwachen möchten.

CloudTrail zeichnet Aufrufe an IAM auf und speichert sie in Ihren CloudTrail-Protokollen. CloudTrail veröffentlicht Ereignisse in CloudWatch-Protokollen. Sie richten in CloudWatch einen Filter ein, um CloudWatch-Metriken aus den CloudTrail-Ereignissen zu generieren. Diese Metriken werden zum Auslösen von Alarmen verwendet.

Ihr CloudWach-Filter sieht folgendermaßen aus:

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

Dieser Artikel hilft Ihnen, den Vorgang zu verstehen. Schritt für Schritt mit Screenshots.

So erhalten Sie Benachrichtigungen, wenn sich Ihre IAM-Konfiguration ändert

Antwort2

Ich habe also herausgefunden, wo das Problem lag. Die Muster, die ich zu verwenden versuchte, boten entweder keinen ausreichend kleinen oder großen Umfang. Um IAM auf diese Weise zu überwachen, müssen folgende Schritte ausgeführt werden:DasAnleitung, und wenn Ihnen das Ereignismuster zur Eingabe als Cloudwatch-Ereignismuster mitgeteilt wird, müssen Sie GENAU die Ereignisnamen angeben, die Sie benötigen.

Es ist ziemlich lang, zeigt aber, wie gründlich Sie vorgehen müssen und dass Globbing nicht unterstützt wird. Hier ist das Muster, das bei mir herausgekommen ist:

{
  "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"
    ]
  }
}

verwandte Informationen