
Estou tendo problemas para configurar eventos do Cloudwatch para acionar uma função Lambda. No cenário atual, quero acionar um Lambda quando alguém/coisa mudarqualquer coisano IAM.
Atualmente tenho um Cloudtrail global no Norte da Virgínia que registra todos os eventos IAM e posso vê-los com muita clareza.
Eu então tenho um evento Cloudwatch com seu gatilho configurado para Lambda. Ao testar o gatilho em qualquer outro serviço, como EC2, o lambda é acionado corretamente. Ao usar o IAM, no entanto,semprefalhar.
Aqui está o padrão de evento que estou usando, que parece ser a única coisa que pode estar errada neste momento:
{
"detail-type": [
"AWS API Call via CloudTrail"
],
"detail": {
"eventSource": [
"iam.amazonaws.com"
]
}
}
Se alguém já tentou configurar isso antes, por favor ajude. Está me deixando maluco.
Responder1
Para monitorar alterações no IAM, você precisará usar uma combinação de CloudWatch, CloudWatch Logs e CloudTrail. Certifique-se de que o CloudTrail esteja habilitado para cada região que você deseja monitorar.
O CloudTrail registrará chamadas para o IAM e as armazenará nos logs do CloudTrail. O CloudTrail publicará eventos nos logs do CloudWatch. Você configura um filtro no CloudWatch para gerar métricas do CloudWatch a partir dos eventos do CloudTrail. Essas métricas são usadas para acionar alarmes.
Seu filtro CloudWach é assim:
{ ($.eventSource = "iam.amazonaws.com") }
Este artigo ajudará você a entender o processo. Passo a passo com capturas de tela.
Como receber alertas quando a configuração do IAM for alterada
Responder2
Então descobri qual era o problema: os padrões que eu estava tentando usar não forneciam um escopo pequeno ou grande o suficiente. Monitorar o IAM desta forma requer o seguinteesseguia e quando ele informa o padrão de evento a ser inserido como um padrão de evento Cloudwatch, você precisa especificar EXATAMENTE os nomes dos eventos necessários.
É bastante longo, mas demonstra o quão minucioso você precisa ser e que nenhum globbing é suportado. Aqui está o padrão que acabei usando:
{
"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"
]
}
}