Comment puis-je activer la journalisation AWS WAF et envoyer les journaux vers CloudWatch, Amazon S3 ou vers Kinesis Data Firehose ?

Lecture de 8 minute(s)
0

Je souhaite activer la journalisation AWS WAF et envoyer les journaux vers Amazon CloudWatch, Amazon Simple Storage Service (Amazon S3) ou vers Amazon Kinesis Data Firehose. Comment puis-je activer les journaux AWS WAF et quelles sont les autorisations requises ?

Brève description

Choisissez d'abord une destination prise en charge pour votre ACL Web AWS WAF. AWS WAF prend en charge les destinations de journaux suivantes :

Assurez-vous de disposer des autorisations requises pour activer les journaux AWS WAF sur vos ressources. Activez ensuite les journaux AWS WAF dans la destination que vous avez choisie.

Résolution

Les destinations suivantes sont prises en charge pour le stockage de vos journaux AWS WAF :

Amazon CloudWatch logs

Pour envoyer les journaux vers un groupe de journaux CloudWatch Logs, choisissez la destination Groupe de journaux CloudWatch Logs lorsque vous activez la journalisation AWS WAF.

Créez un groupe de journaux ou utilisez un groupe de journaux existant. Une fois la journalisation AWS WAF activée, les journaux sont envoyés vers les groupes de journaux dans des flux de journaux. Vous pouvez analyser ces journaux à l'aide de Logs Insights. Pour plus d'informations, reportez-vous à Quelles sont les options disponibles pour analyser les journaux AWS WAF stockés dans CloudWatch ou Amazon S3 ?

Lorsque vous utilisez les journaux CloudWatch, tenez compte des éléments suivants :

  • Les noms des groupes de journaux doivent commencer par le préfixe aws-waf-logs-.
  • Les groupes de journaux doivent se trouver dans le même compte AWS et dans la même région que votre ACL Web. Pour les ACL Web mondiales associées à CloudFront, le groupe de journaux doit se trouver dans la région USA Est (Virginie du Nord).
  • Les groupes de journaux sont soumis à des quotas de groupes de journaux lors du stockage des journaux.
  • Les flux de journaux créés dans les groupes de journaux ont le format suivant :
Region_web-acl-name_log-stream-number

Autorisations requises

Le compte qui active la journalisation AWS WAF dans un groupe de journaux CloudWatch Logs doit disposer des autorisations suivantes :

  • wafv2:PutLoggingConfiguration
  • wafv2:DeleteLoggingConfiguration
  • logs:CreateLogDelivery
  • logs:DeleteLogDelivery
  • logs:PutResourcePolicy
  • logs:DescribeResourcePolicies
  • logs:DescribeLogGroups

Ces autorisations sont nécessaires pour modifier la configuration de la journalisation pour l'ACL Web, pour configurer la diffusion des journaux et pour récupérer et modifier les autorisations d'un groupe de journaux. Ces autorisations doivent être associées à l'utilisateur qui gère AWS WAF.

Lorsque ces autorisations sont attribuées, AWS ajoute automatiquement la stratégie suivante dans les stratégies basées sur les ressources de CloudWatch Logs. Cela permet aux services de diffusion de transférer les journaux vers un groupe de journaux CloudWatch Logs.
Remarque : le numéro de compte et l'ARN (Amazon Resource Name) seront spécifiques à votre compte pour la stratégie suivante.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AWSLogDeliveryWrite20150319",
      "Effect": "Allow",
      "Principal": {
        "Service": ["delivery.logs.amazonaws.com"]
      },
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": ["arn:aws:logs:us-east-1:0123456789:log-group:my-log-group:log-stream:*"],
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": ["0123456789"]
        },
        "ArnLike": {
          "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"]
        }
      }
    }
  ]
}

Si vous ne voyez aucun journal dans votre groupe de journaux, vérifiez si les autorisations requises indiquées ci-dessus sont bien ajoutées à la stratégie basée sur les ressources de votre groupe de journaux à l'aide de l'API DescribeResourcePolicies. Vous pouvez modifier la stratégie basée sur les ressources des services de journalisation à l'aide de PutResourcePolicy.

Pour plus d'informations sur les autorisations requises pour les groupes de journaux, reportez-vous à Activation de la journalisation à partir de certains services AWS.

Compartiment Amazon S3

Pour envoyer les journaux vers un compartiment Amazon S3, choisissez la destination compartiment S3 lorsque vous activez les journaux AWS WAF.

Les ACL Web publient des fichiers journaux dans un compartiment S3 toutes les cinq minutes. La taille maximale des fichiers est de 75 mégaoctets (Mo). En cas de dépassement de la limite maximale, un nouveau fichier est enregistré. Lorsque la journalisation est activée, vous pouvez analyser les journaux à l'aide d'Amazon Athena. Pour plus d'informations, reportez-vous à Interrogation des journaux AWS WAF.

Les noms des compartiments S3 utilisés pour la journalisation AWS WAF doivent commencer par le préfixe aws-waf-logs-.

Autorisations requises

Le compte qui active la journalisation AWS WAF dans un compartiment S3 doit disposer des autorisations suivantes :

  • wafv2:PutLoggingConfiguration
  • wafv2:DeleteLoggingConfiguration
  • logs:CreateLogDelivery
  • logs:DeleteLogDelivery
  • s3:PutBucketPolicy
  • s3:GetBucketPolicy

Ces autorisations sont requises pour activer la journalisation AWS WAF et pour configurer la diffusion des journaux dans un compartiment S3. Elles permettent également de récupérer et de modifier la stratégie de compartiment afin d'autoriser la diffusion des journaux AWS WAF dans un compartiment S3.

Lorsque ces autorisations sont attribuées, l'exemple de stratégie suivant est automatiquement ajouté à la stratégie du compartiment afin de permettre la diffusion des journaux dans le compartiment S3 :
Remarque : le numéro de compte et l'ARN (Amazon Resource Name) seront spécifiques à votre compte pour la stratégie suivante.

{
  "Version": "2012-10-17",
  "Id": "AWSLogDeliveryWrite20150319",
  "Statement": [
    {
      "Sid": "AWSLogDeliveryAclCheck",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:GetBucketAcl",
      "Resource": "arn:aws:s3:::my-bucket",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": [
            "0123456789"
          ]
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:logs:us-east-1:0123456789:*"
          ]
        }
      }
    },
    {
      "Sid": "AWSLogDeliveryWrite",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::my-bucket/AWSLogs/account-ID/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control",
          "aws:SourceAccount": [
            "0123456789"
          ]
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:logs:us-east-1:0123456789:*"
          ]
        }
      }
    }
  ]
}

Si vous ne voyez pas de journaux AWS WAF dans le compartiment S3, vérifiez si les autorisations requises figurent bien dans la stratégie du compartiment à l'aide de l'API GetBucketPolicy. Vous pouvez modifier la stratégie du compartiment à l'aide de l'API PutBucketPolicy.

Pour envoyer des journaux vers un autre compte ou une autre région AWS, reportez-vous à Comment puis-je envoyer des journaux AWS WAF vers un compartiment Amazon S3 dans un compte de journalisation centralisé ?

Amazon Kinesis Data Firehose

Pour envoyer les journaux AWS WAF vers un flux Kinesis Data Firehose, vous devez créer un flux de diffusion. Le flux de diffusion stocke les journaux dans des destinations différentes.

Lorsque vous utilisez le flux Kinesis Data Firehose, tenez compte des éléments suivants :

  • Le nom du flux Kinesis Data Firehose doit commencer par le préfixe aws-waf-logs-.
  • Le flux de diffusion Kinesis Data Firehose doit se trouver dans le même compte AWS et dans la même région que votre ACL Web. Pour les ACL Web mondiales associées à CloudFront, le flux Kinesis Data Firehose doit se trouver dans la région USA Est (Virginie du Nord).
  • Un journal AWS WAF équivaut à un enregistrement Kinesis Data Firehose et est soumis aux quotas Amazon Kinesis Data Firehose.
    Important : si vous recevez plus de 10 000 demandes par seconde, vos données sont limitées et les demandes ne sont pas toutes journalisées. Pour éviter les limitations, vous devez demander une augmentation de quota pour le flux Kinesis Data Firehose.

Autorisations requises

Le compte qui active la journalisation AWS WAF dans la destination Kinesis Data Firehose doit disposer des autorisations suivantes :

  • wafv2:PutLoggingConfiguration
  • wafv2:DeleteLoggingConfiguration
  • iam:CreateServiceLinkedRole
  • firehose:ListDeliveryStreams

Pour plus d'informations sur les rôles liés à un service et sur l'autorisation iam:CreateServiceLinkedRole, reportez-vous à Utilisation de rôles liés à un service pour AWS WAF.

Pour créer un flux de diffusion Kinesis Data Firehose, procédez comme suit :

  1. Ouvrez la console Amazon Kinesis.
  2. Dans le champ Région, choisissez la région AWS dans laquelle vous avez créé votre ACL Web.
    Remarque : choisissez Global si votre ACL Web est configurée pour Amazon CloudFront.
  3. Dans le volet de navigation, choisissez Flux de diffusion.
  4. Choisissez Créer un flux de diffusion.
  5. Pour le champ Source, sélectionnezPUT direct.
  6. Pour le champ Destination, choisissez parmi les destinations disponibles pour le flux Kinesis Firehose.
  7. Pour le champ Nom du flux de diffusion, saisissez un nom pour votre flux de diffusion préfixé de aws-waf-logs-.
  8. Vérifiez que les options Transformation des données et Conversion du format d'enregistrement sont toutes deux désactivées.
  9. Saisissez les **paramètres de destination ** en fonction de la méthode de destination choisie à l'étape 6.
  10. (Facultatif) Définissez les paramètres Indices, compression et mise en mémoire tampon selon vos spécifications ou conservez les paramètres par défaut.
  11. (Facultatif) Définissez les paramètres avancés selon vos spécifications ou conservez les paramètres par défaut.
  12. Vérifiez les paramètres du flux de diffusion. Si les paramètres correspondent à vos spécifications, choisissez Créer un flux de diffusion.

Activer les journaux AWS WAF

Après avoir choisi la destination vers laquelle vous souhaitez envoyer vos journaux AWS WAF, activez la journalisation AWS WAF en procédant comme suit :

  1. Ouvrez la console AWS WAF.
  2. Dans le champ Région, choisissez la région AWS dans laquelle vous avez créé votre ACL Web.
    Remarque : choisissez Global si votre ACL Web est configurée pour Amazon CloudFront.
  3. Sélectionnez votre ACL Web.
  4. Choisissez Journalisation et métriques, puis sélectionnez Activer.
  5. Choisissez la destination dans laquelle vous souhaitez stocker les journaux AWS WAF parmi les destinations prises en charge.
  6. Pour Champs expurgés, sélectionnez les champs que vous souhaitez exclure des journaux.
  7. Pour Filtrer les journaux, ajoutez le filtre pour contrôler les demandes que vous souhaitez stocker.
  8. Choisissez Enregistrer.
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans