¿Cómo configurar eventos de Cloudwatch para que se activen en llamadas a la API de IAM?

¿Cómo configurar eventos de Cloudwatch para que se activen en llamadas a la API de IAM?

Entonces tengo problemas para configurar eventos de Cloudwatch para activar una función Lambda. En el escenario actual, quiero activar un Lambda cuando alguien/algo cambiecualquier cosaen IAM.

Actualmente tengo un Cloudtrail global en el norte de Virginia que registra todos los eventos de IAM y puedo verlos con mucha claridad.

Luego tengo un evento de Cloudwatch con su activador configurado en Lambda. Al probar el disparador en cualquier otro servicio, digamos EC2, la lambda se activa correctamente. Sin embargo, al utilizar IAMsiemprefallar.

Aquí está el patrón de eventos que estoy usando y que parece ser lo único que podría estar mal en este momento:

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

Si alguien ha intentado configurar esto antes, por favor ayuda. Me está haciendo daño.

Respuesta1

Para monitorear los cambios en IAM, deberá utilizar una combinación de CloudWatch, CloudWatch Logs y CloudTrail. Asegúrese de que CloudTrail esté habilitado para cada región que desee monitorear.

CloudTrail registrará las llamadas a IAM y las almacenará en sus registros de CloudTrail. CloudTrail publicará eventos en los registros de CloudWatch. Configura un filtro en CloudWatch para generar métricas de CloudWatch a partir de los eventos de CloudTrail. Estas métricas se utilizan para activar alarmas.

Su filtro CloudWach se ve así:

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

Este artículo le ayudará a comprender el proceso. Paso a paso con capturas de pantalla.

Cómo recibir alertas cuando cambia su configuración de IAM

Respuesta2

Entonces descubrí cuál era el problema: los patrones que intentaba utilizar no proporcionaban un alcance lo suficientemente pequeño o grande. Monitorear IAM de esta manera requiere seguiresteguía y cuando le indica el patrón de evento que debe ingresar como patrón de evento de Cloudwatch, debe especificar EXACTAMENTE los nombres de eventos que necesita.

Es bastante largo, pero demuestra lo minucioso que debes ser y que no se admite ningún globbing. Aquí está el patrón con el que terminé:

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

información relacionada