AWS ElasticSearch n'accepte pas certains documents CloudTrail
Update2
J'ai été pointé vers ce projet. Je vais l'implémenter comme j'aime la solution.
https://github.com/chariotsolutions/aws-examples/tree/trunk/cloudtrail_to_elasticsearch
Question originale:
Certains types d'événements AWS CloudTrail ne parviennent pas à AWS ElasticSearch. Enfin, je me suis réduit à un document JSON très simplifié qui échoue, et à ce stade, je pourrais utiliser quelques informations.
Donc malgré cela, je POST un index aléatoire à chaque fois / _doc
POST ddd/_doc
{
"eventVersion": "1.05",
"eventTime": "2020-10-21T00:37:26Z",
"eventSource": "s3.amazonaws.com",
"eventName": "PutBucketPolicy",
"awsRegion": "eu-central-1",
"errorCode": "AccessDenied",
"errorMessage": "Access Denied",
"requestParameters": {
"bucketPolicy": {
"Version": "2012-10-17",
"Statement": [
{
"Principal": {
"Service": "logs.eu-central-1.amazonaws.com"
}
},
{
"Principal": {
"Service": "logs.eu-central-1.amazonaws.com"
}
},
{
"Principal": {
"AWS": [
"arn:aws:iam::1234567890:root"
]
}
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::1234567890:root"
]
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::whatever/*"
},
{
"Sid": "ProtectLogs",
"Effect": "Deny",
"Principal": "*"
}
]
}
}
}
J'obtiens la même erreur tout le temps:
{
"type": "illegal_argument_exception",
"reason": "mapper [requestParameters.bucketPolicy.Statement.Principal] of different type, current_type [text], merged_type [ObjectMapper]"
}
Si je supprime ce bloc de JSON - le document est accepté:
{
"Sid": "ProtectLogs",
"Effect": "Deny",
"Principal": "*"
}
Mise à jour 1 :
Je pense que je devrais créer un modèle et définir un mappage pour ce champ afin que ES ne soit pas mélangé
Réponses
Le problème se produit en raison d'un Principalchamp qui est présent au même niveau mais dans votre premier bloc, il est de type objectcomme ci-dessous
{
"Principal": {
"Service": "logs.eu-central-1.amazonaws.com"
}
},
Et dans le dernier bloc, qui lorsque vous l'avez supprimé a fonctionné, il est de type text, ce qui crée le problème et le message d'erreur est également très clair et se plaint de types de fusion incompatibles, textà objecttaper.
Au lieu de supprimer le bloc, vous pouvez essayer de renommer le champ en Principal_newet cela fonctionnera, sinon créez un mappage / modèle statique pour tous vos champs d'index afin que ces champs ne soient pas mélangés, ce que vous avez déjà deviné