Как отправить данные журнала Cloudwatch по электронной почте?

На приведенной ниже диаграмме я пытаюсь достичь. Короче говоря, для отправки журналов CloudTrail в группу журналов CloudWatch, затем сканирование их на наличие определенных событий и, наконец, отправка предупреждений по электронной почте, если есть согласованное событие.

CloudTrail для отправки предупреждений

Я слежу за этой официальной документацией, в которой также есть образцы шаблонов CloudFormation: http://docs.aws.amazon.com/awscloudtrail/latest/userguide/use-cloudformation-template-to-create-cloudwatch-alarms.html

Используя указанные выше шаблоны CloudFormation, я смог отправлять оповещения по электронной почте. Однако предупреждения очень простые; он не отправляет ключевую информацию, например, какой пользователь инициировал это событие, когда оно произошло и т. д.

Логически мышление AWS::Logs::MetricFilter должно передать значение AWS::CloudWatch::Alarm, который затем отправит информацию. Я просмотрел документацию по MetricFilter < / a> и службы Alarm . Dimension приближается к тому, что я хочу, но пока не могу читать информацию из журналов.

Я бы подумал, что это обычный вариант использования, и там будет документация. Я упустил здесь что-то явно очевидное? Кто-нибудь здесь решил эту проблему?

AWS::Logs::MetricFilter блок:

"AuthorizationFailuresMetricFilter": {
    "Type": "AWS::Logs::MetricFilter",
    "Properties": {
        "LogGroupName": { "Ref" : "LogGroupName" },
        "FilterPattern": "{ ($.errorCode = \"*UnauthorizedOperation\") || ($.errorCode = \"AccessDenied*\") }",
        "MetricTransformations": [
            {
                "MetricNamespace": "CloudTrailMetrics",
                "MetricName": "AuthorizationFailureCount",
                "MetricValue": "1"
            }
        ]
    }
},

AWS::CloudWatch::Alarm блок

  "AuthorizationFailuresAlarm": {
      "Type": "AWS::CloudWatch::Alarm",
      "Properties": {
          "AlarmName" : "CloudTrailAuthorizationFailures",
          "AlarmDescription" : "Alarms when an unauthorized API call is made.",
          "AlarmActions" : [{ "Ref" : "AlarmNotificationTopic" }],
          "Dimensions": [
             {
                "Name": "errorCode",
                "Value": ""
             },
             {
                "Name": "userIdentity",
                "Value": ""
             }
          ],
          "MetricName" : "AuthorizationFailureCount",
          "Namespace" : "CloudTrailMetrics",
          "ComparisonOperator" : "GreaterThanOrEqualToThreshold",
          "EvaluationPeriods" : "1",
          "Period" : "300",
          "Statistic" : "Sum",
          "Threshold" : "1"

      }
  },

comment
Вы не можете этого сделать. Это недостающая функция CloudWatch Logs, которую Amazon действительно нужно добавить.   -  person Mark B    schedule 16.08.2017
comment
Казалось бы, это один из самых распространенных вариантов использования. Странно, но это еще не реализовано.   -  person Sushan Ghimire    schedule 16.08.2017


Ответы (1)


Это невозможно.

Amazon CloudWatch Logs принимает информацию от AWS CloudTrail и при обнаружении сообщений, соответствующих предварительно заданному фильтру, увеличивает счетчик показателей.

Затем может сработать сигнал Amazon CloudWatch, когда показатель превысит определенный порог. Однако нет прямой связи между входящими данными, которые генерируют метрики, и сигналом тревоги, который срабатывает на основе порогового значения.

Думайте об этом как о турникете, который подсчитывает людей, заходящих в метро. Турникет считает количество людей, но не сохраняет информацию о прошедших. Точно так же сигнализация CloudWatch подсчитывает события, но не имеет никакой информации о подсчитанных событиях.

person John Rotenstein    schedule 16.08.2017
comment
Спасибо за ответ, Джон. Я действительно хочу прослушивать журналы CloudTrail и отправлять оповещения группам реагирования на инциденты со всеми возможными деталями. Как бы вы сами это решили? - person Sushan Ghimire; 17.08.2017
comment
Вы хотите уведомлять об одном конкретном событии или только тогда, когда вычисленный порог был превышен (например, более 5 случаев возникновения события за период в 1 час)? Первое должно быть простым, второе - сложным, потому что с течением времени данные распределяются по множеству событий. - person John Rotenstein; 17.08.2017
comment
Я хочу отправить предупреждение, когда происходит событие, не обязательно рассчитанный порог. Но что мне действительно нужно, так это подробное и полезное для расследования предупреждение. - person Sushan Ghimire; 24.08.2017
comment
Если вы просто хотите получать уведомления, когда происходит определенное событие, настройте это с помощью Amazon CloudWatch Events. Вы можете определить вызов или событие API в качестве триггера, а тему SNS в качестве пункта назначения. - person John Rotenstein; 24.08.2017