Activation de la journalisation à partir de certains services AWS - Amazon CloudWatch Logs

Activation de la journalisation à partir de certains services AWS

Alors que de nombreux services publient des journaux uniquement vers CloudWatch Logs, certains services AWS peuvent publier des journaux directement vers Amazon Simple Storage Service ou Amazon Kinesis Data Firehose. Si votre principale exigence pour les journaux est le stockage ou le traitement dans l'un de ces services, vous pouvez facilement demander au service qui produit les journaux de les envoyer directement à Amazon S3 ou Kinesis Data Firehose sans configuration supplémentaire.

Même lorsque les journaux sont publiés directement sur Amazon S3 ou Kinesis Data Firehose, des frais s'appliquent. Pour plus d'informations, consultez Journaux payants dans l'onglet Journaux de la rubrique Tarification Amazon CloudWatch.

Autorisations

Certains de ces services AWS utilisent une infrastructure commune pour envoyer leurs journaux à CloudWatch Logs, Amazon S3 ou Kinesis Data Firehose. Pour permettre aux services AWS répertoriés dans le tableau suivant d'envoyer leurs journaux vers ces destinations, vous devez être connecté en tant qu'utilisateur disposant de certaines autorisations.

En outre, des autorisations doivent être accordées à AWS pour permettre l'envoi des journaux. AWS peut créer automatiquement ces autorisations lorsque les journaux sont configurés, ou vous pouvez les créer vous-même avant de configurer la journalisation.

Si vous choisissez qu'AWS configure automatiquement les autorisations et les politiques de ressources nécessaires lorsque vous ou quelqu'un de votre organisation configure pour la première fois l'envoi de journaux, l'utilisateur qui configure l'envoi de journaux doit disposer de certaines autorisations, comme expliqué plus loin dans cette section. Vous pouvez également créer les politiques de ressources vous-même, de sorte que les utilisateurs qui configurent l'envoi des journaux n'ont pas besoin d'autant d'autorisations.

Le tableau suivant résume les types de journaux et les destinations des journaux auxquels s'appliquent les informations de cette section.

Les sections suivantes fournissent plus de détails pour chacune de ces destinations.

Journaux envoyés à CloudWatch Logs

Important

Lorsque vous configurez les types de journaux de la liste suivante pour qu'ils soient envoyés à CloudWatch Logs, AWS crée ou modifie, si nécessaire, les politiques de ressources associées au groupe de journaux qui reçoit les journaux. Continuez à lire cette section pour voir les détails.

Cette section s'applique lorsque les types de journaux répertoriés dans la table de la section précédente sont envoyés à CloudWatch Logs :

Autorisations des utilisateurs

Pour pouvoir configurer l'envoi de l'un de ces types de journaux à CloudWatch Logs pour la première fois, vous devez être connecté à un compte disposant des autorisations suivantes.

  • logs:CreateLogDelivery

  • logs:PutResourcePolicy

  • logs:DescribeResourcePolicies

  • logs:DescribeLogGroups

Si l'un de ces types de journaux est déjà envoyé à un groupe de journaux dans CloudWatch Logs, il vous suffit de disposer de l'autorisation logs:CreateLogDelivery pour configurer l'envoi d'un autre de ces types de journaux à ce même groupe de journaux.

Politique de ressources du groupe de journaux

Le groupe de journaux dans lequel les journaux sont envoyés doit avoir une politique de ressources qui inclut certaines autorisations. Si le groupe de journaux n'a pas de politique de ressources et que l'utilisateur qui configure la journalisation dispose des autorisations logs:PutResourcePolicy, logs:DescribeResourcePolicies et logs:DescribeLogGroups pour le groupe de journaux, AWS crée automatiquement la politique suivante lorsque vous commencez à envoyer les journaux à CloudWatch Logs.

{ "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 le groupe de journaux dispose d'une politique de ressources mais que cette politique ne contient pas l'instruction indiquée dans la politique précédente, et que l'utilisateur qui configure la journalisation dispose des autorisations logs:PutResourcePolicy, logs:DescribeResourcePolicies et logs:DescribeLogGroups pour le groupe de journaux, cette instruction est ajoutée à la politique de ressources du groupe de journaux.

Considérations sur la limite de taille de la politique de ressources des groupes de journaux

Ces services doivent énumérer chaque groupe de journaux auquel ils envoient des journaux dans la politique de ressources. Les politiques de ressources de CloudWatch Logs sont limitées à 5120 caractères. Un service qui envoie des journaux à un grand nombre de groupes de journaux peut atteindre cette limite.

Pour atténuer ce problème, CloudWatch Logs surveille la taille des politiques de ressources utilisées par le service qui envoie les journaux et lorsqu'il détecte qu'une politique approche la limite de 5120 caractères, CloudWatch Logs active automatiquement /aws/vendedlogs/* dans la politique de ressources pour ce service. Vous pouvez alors commencer à utiliser des groupes de journaux dont les noms commencent par /aws/vendedlogs/ comme destinations des journaux provenant de ces services.

Journaux envoyés à Amazon S3

Important

Lorsque vous configurez les types de journaux de la liste suivante pour qu'ils soient envoyés à Amazon S3, AWS crée ou modifie, si nécessaire, les politiques de ressources associées au compartiment S3 qui reçoit les journaux. Continuez à lire cette section pour voir les détails.

Cette section s'applique lorsque les types de journaux suivants sont envoyés à Amazon S3 :

  • Journaux d'accès CloudFront et journaux d'accès en streaming. CloudFront utilise un modèle d'autorisations différent de celui des autres services de cette liste. Pour plus d'informations, consultez Autorisations requises pour configurer la journalisation standard et pour accéder à vos fichiers journaux.

  • Flux de données des instances Spot Amazon EC2

  • Journaux de flux AWS Global Accelerator

  • Journaux de l'agent Amazon Managed Streaming for Apache Kafka

  • Journaux d'accès de Network Load Balancer

  • Journaux d'AWS Network Firewall

  • Journaux de flux d'Amazon Virtual Private Cloud

Les journaux publiés directement sur Amazon S3 le sont dans un compartiment existant que vous spécifiez. Un ou plusieurs fichiers journaux sont créés toutes les cinq minutes dans le compartiment spécifié.

Lorsque vous livrez des journaux pour la première fois à un compartiment Amazon S3, le service qui livre les journaux enregistre le propriétaire du compartiment pour s'assurer que les journaux sont livrés uniquement à un compartiment appartenant à ce compte. Par conséquent, pour changer le propriétaire du compartiment Amazon S3, vous devez recréer ou mettre à jour l'abonnement au journal dans le service d'origine.

Autorisations des utilisateurs

Pour pouvoir configurer l'envoi de l'un de ces types de journaux à Amazon S3 pour la première fois, vous devez être connecté à un compte disposant des autorisations suivantes.

  • logs:CreateLogDelivery

  • S3:GetBucketPolicy

  • S3:PutBucketPolicy

Si l'un de ces types de journaux est déjà envoyé vers un compartiment Amazon S3, il vous suffit de disposer de l'autorisation logs:CreateLogDelivery pour configurer l'envoi d'un autre de ces types de journaux vers le même compartiment.

Politique de ressources du compartiment S3

Le compartiment S3 où les journaux sont envoyés doit avoir une politique de ressources qui inclut certaines autorisations. Si le compartiment ne comporte aucune politique de ressources et que l'utilisateur qui configure la journalisation dispose des autorisations S3:GetBucketPolicy et S3:PutBucketPolicy pour le compartiment, AWS crée automatiquement la politique suivante lorsque vous commencez à envoyer les journaux à Amazon S3.

{ "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:*"] } } } ] }

Dans la politique précédente, pour aws:SourceAccount, spécifiez la liste des ID de comptes pour lesquels les journaux sont transmis à ce compartiment. Pour aws:SourceArn, spécifiez la liste des ARN de la ressource qui génère les journaux, dans le formulaire arn:aws:logs:source-region:source-account-id:*.

Si le compartiment dispose d'une politique de ressources, mais que celle-ci ne contient pas la déclaration indiquée dans la politique précédente et que l'utilisateur qui configure la journalisation dispose des autorisations S3:GetBucketPolicy et S3:PutBucketPolicy pour le compartiment, cette instruction est ajoutée à la politique de ressources du compartiment.

Chiffrement côté serveur des compartiments Amazon S3

Vous pouvez protéger les données de votre compartiment Amazon S3 en activant soit le chiffrement côté serveur avec les clés gérées Amazon S3 (SSE-S3), soit le chiffrement côté serveur avec les clés AWS KMS stockées dans AWS Key Management Service (SSE-KMS). Pour plus d'informations, consultez Protection des données à l'aide du chiffrement côté serveur.

Si vous choisissez l'option SSE-S3, aucune configuration supplémentaire n'est requise. Amazon S3 gère la clé de chiffrement.

Avertissement

Si vous choisissez l'option SSE-KMS, vous devez utiliser une clé gérée par le client, car les clés gérées AWS ne sont pas prises en charge pour ce scénario. Si vous configurez le chiffrement à l'aide d'une clé gérée par AWS, les journaux seront livrés dans un format illisible.

Lorsque vous utilisez une clé AWS KMS gérée par le client, vous pouvez spécifier son Amazon Resource Name (ARN) lors de l'activation du chiffrement des compartiments. Vous devez ajouter les informations suivantes à la politique de votre clé gérée par le client (pas à la politique du compartiment S3), afin que le compte de livraison des journaux puisse écrire des données dans votre compartiment S3.

Si vous choisissez l'option SSE-KMS, vous devez utiliser une clé gérée par le client, car les clés gérées AWS ne sont pas prises en charge pour ce scénario. Lorsque vous utilisez une clé AWS KMS gérée par le client, vous pouvez spécifier son Amazon Resource Name (ARN) lors de l'activation du chiffrement des compartiments. Vous devez ajouter les informations suivantes à la politique de votre clé gérée par le client (pas à la politique du compartiment S3), afin que le compte de livraison des journaux puisse écrire des données dans votre compartiment S3.

{ "Sid": "Allow Logs Delivery to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": ["0123456789"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"] } } }

Pour aws:SourceAccount, spécifiez la liste des ID de comptes pour lesquels les journaux sont transmis à ce compartiment. Pour aws:SourceArn, spécifiez la liste des ARN de la ressource qui génère les journaux, dans le formulaire arn:aws:logs:source-region:source-account-id:*.

Journaux envoyés à Kinesis Data Firehose

Cette section s'applique lorsque les types de journaux répertoriés dans la table de la section précédente sont envoyés à Kinesis Data Firehose :

Autorisations des utilisateurs

Pour pouvoir configurer l'envoi de l'un de ces types de journaux à Kinesis Data Firehose pour la première fois, vous devez être connecté à un compte disposant des autorisations suivantes.

  • logs:CreateLogDelivery

  • firehose:TagDeliveryStream

  • iam:CreateServiceLinkedRole

Si l'un de ces types de journaux est déjà envoyé à Kinesis Data Firehose, il suffit de disposer des autorisations logs:CreateLogDelivery et firehose:TagDeliveryStream pour configurer l'envoi d'un autre de ces types de journaux à Kinesis Data Firehose.

Rôles IAM utilisés pour les autorisations

Étant donné que Kinesis Data Firehose n'utilise pas de politiques de ressources, AWS utilise des rôles IAM lors de la configuration de ces journaux à envoyer à Kinesis Data Firehose. AWS crée un rôle lié au service appelé AWSServiceRoleForLogDelivery. Ce rôle lié à un service comprend les autorisations suivantes.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:ListTagsForDeliveryStream" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/LogDeliveryEnabled": "true" } }, "Effect": "Allow" } ] }

Ce rôle lié à un service accorde des autorisations pour tous les flux de diffusion de Kinesis Data Firehose dont l'identification LogDeliveryEnabled est définie sur true. AWS attribue cette identification au flux de diffusion de destination lorsque vous configurez la journalisation.

Ce rôle lié à un service possède également une politique d'approbation qui permet au principal du service delivery.logs.amazonaws.com d'assumer le rôle lié au service nécessaire. Cette politique d'approbation est la suivante :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Prévention du député confus entre services

Le problème de député confus est un problème de sécurité dans lequel une entité qui n'est pas autorisée à effectuer une action peut contraindre une entité plus privilégiée à le faire. Dans AWS, l'emprunt d'identité entre services peut entraîner le problème de député confus. L'usurpation d'identité entre services peut se produire lorsqu'un service (le service appelant) appelle un autre service (le service appelé). Le service appelant peut être manipulé et ses autorisations utilisées pour agir sur les ressources d'un autre client auxquelles on ne serait pas autorisé d'accéder autrement. Pour éviter cela,AWS fournit des outils qui vous aident à protéger vos données pour tous les services avec des principaux de service qui ont eu accès aux ressources de votre compte.

Nous vous recommandons d'utiliser les clés de contexte de condition globale aws:SourceArn et aws:SourceAccount dans les politiques de ressources pour limiter les autorisations accordées par CloudWatch Logs et Amazon S3 aux services qui génèrent des journaux. Si vous utilisez les deux clés de contexte de condition globale, la valeur aws:SourceAccount et le compte de la valeur aws:SourceArn doit utiliser le même ID de compte lorsqu'il est utilisé dans la même déclaration de politique.

Les valeurs de aws:SourceArn doivent être les ARN des ressources AWS qui génèrent des journaux.

Le moyen le plus efficace de se protéger contre le problème de député confus consiste à utiliser la clé de contexte de condition globale aws:SourceArn avec l'ARN complet de la ressource. Si vous ne connaissez pas l'ARN complet de la ressource ou si vous spécifiez plusieurs ressources, utilisez la clé de contexte de condition globale aws:SourceArn avec des caractères génériques (*) pour les parties inconnues de l'ARN.

Les politiques des sections précédentes de cette page indiquent comment utiliser les clés de contexte de condition globale aws:SourceArn et aws:SourceAccount pour éviter le problème de député confus.

Mises à jour de CloudWatch Logs vers les politiques gérées par AWS

Affiche les détails des mises à jour des politiques gérées par AWS pour CloudWatch Logs depuis que ce service a commencé à assurer le suivi de ces modifications. Pour recevoir des alertes automatiques sur les modifications apportées à cette page, abonnez-vous au flux RSS sur la page Historique du document CloudWatch Logs.

Modification Description Date

Politique de rôle lié au service AWSServiceRoleForLogDelivery – Mise à jour d'une politique existante

CloudWatch Logs a modifié les autorisations dans la politique IAM associée au rôle lié au service AWSServiceRoleForLogDelivery. La modification suivante a été apportée :

  • La clé de condition firehose:ResourceTag/LogDeliveryEnabled": "true" a été modifiée en aws:ResourceTag/LogDeliveryEnabled": "true".

15 juillet 2021

CloudWatch Logs a commencé à assurer le suivi des modifications

CloudWatch Logs a commencé à assurer le suivi des modifications pour ses politiques gérées par AWS.

10 juin 2021