Je souhaite envoyer les journaux AWS WAF vers un compartiment Amazon Simple Storage Service (Amazon S3) qui se trouve dans un autre compte AWS ou une autre région AWS.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Créer un compartiment S3
Créez le compartiment S3 dans le compte de journalisation centralisé de la région sélectionnée. Pour le nom du compartiment, entrez un nom de compartiment commençant par le préfixe aws-waf-logs-, tel que aws-waf-logs-example-bucket.
Ajouter une stratégie de compartiment au compartiment S3
Ajoutez la stratégie de compartiment S3 suivante à votre compartiment S3 :
{
"Version": "2012-10-17",
"Id": "AWSLogDeliveryWrite20150319",
"Statement": [
{
"Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::aws-waf-logs-example-bucket/AWSLogs/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control",
"aws:SourceAccount": [
"111111111111",
"222222222222"
]
},
"ArnLike": {
"aws:SourceArn": [
"arn:aws:logs:region:111111111111:*",
"arn:aws:logs:region:222222222222:*"
]
}
}
},
{
"Sid": "AWSLogDeliveryAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::aws-waf-logs-example-bucket",
"Condition": {
"StringEquals": {
"aws:SourceAccount": [
"111111111111",
"222222222222"
]
},
"ArnLike": {
"aws:SourceArn": [
"arn:aws:logs:region:111111111111:*",
"arn:aws:logs:region:222222222222:*"
]
}
}
}
]
}
Dans la stratégie précédente, remplacez les valeurs suivantes :
- Les ID de compte dans aws:SourceAccount par les ID des comptes source auxquels vous souhaitez envoyer des journaux.
- Les Amazon Resource Names (ARN) dans aws:SourceArn par les ARN des ressources source dont vous souhaitez publier les journaux. Utilisez le format suivant : arn:aws:logs:region:source-account-id:*
- aws-waf-logs-example-bucket par le nom du compartiment S3.
Configurer vos ACL Web pour envoyer les journaux au compartiment S3
Dans l'exemple suivant, le compartiment S3 se trouve dans un compte ou une région différent de celui d'AWS WAF. Pour configurer la liste de contrôle d'accès Web (ACL Web), vous devez exécuter la commande put-logging-configuration à partir du compte propriétaire de l'ACL Web :
aws wafv2 put-logging-configuration --logging-configuration ResourceArn=arn:aws:wafv2:us-west-1:111111111111:regional/webacl/testing/b4a768c9-4895-4f35-9354-3049ab8acc29,LogDestinationConfigs=arn:aws:s3:::aws-waf-logs-example-bucket --region us-west-1
Dans la commande précédente, remplacez les valeurs suivantes :
- L'arn de ResourceArn par l'ARN de votre ACL Web.
- L’arn pour LogDestinationConfigs par l'ARN du compartiment S3 qui se trouve dans votre compte de journalisation centralisé.
- us-west-1 par la région dans laquelle se trouve votre ACL Web. Pour les ACL Web dans la région Amazon CloudFront (Global), remplacez us-west-1 par us-east-1.
Répétez l'étape précédente pour chaque ACL Web de votre AWS WAF.
Chiffrer votre compartiment S3
AWS WAF prend en charge le chiffrement avec des compartiments S3 pour les clés de chiffrement côté serveur dans Amazon S3 et AWS Key Management Service (AWS KMS). AWS WAF ne prend pas en charge le chiffrement des clés gérées par AWS.
Si vous utilisez les deux configurations suivantes, AWS WAF a besoin d'une autorisation pour utiliser votre clé KMS :
- Votre destination de journalisation utilise des clés de chiffrement côté serveur stockées par AWS KMS.
- Vous utilisez une clé gérée par le client.
Pour permettre à AWS WAF de se connecter à votre compartiment S3, ajoutez la stratégie de clé suivante à votre clé KMS :
{
"Sid": "Allow AWS WAF to use the key",
"Effect": "Allow",
"Principal": {
"Service": [
"delivery.logs.amazonaws.com"
]
},
"Action": "kms:GenerateDataKey*",
"Resource": "*"
}
Informations connexes
Autorisations requises pour publier des journaux sur Amazon S3