Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Activer la journalisation à partir AWS des services
Alors que de nombreux services publient des CloudWatch journaux uniquement dans Logs, certains AWS services peuvent publier des journaux directement sur Amazon Simple Storage Service ou Amazon Data Firehose. Si votre principale exigence en matière de 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 Firehose sans configuration supplémentaire.
Même lorsque les journaux sont publiés directement sur Amazon S3 ou Firehose, des frais s'appliquent. Pour plus d'informations, consultez la section Vended Logs dans l'onglet Logs d'Amazon CloudWatch Pricing
Certains AWS services utilisent une infrastructure commune pour envoyer leurs journaux. Pour activer la journalisation à partir de ces services, vous devez être connecté en tant qu'utilisateur disposant de certaines autorisations. En outre, vous devez accorder des autorisations AWS pour permettre l'envoi des journaux.
Pour les services qui exigent ces autorisations, il existe deux versions des autorisations nécessaires. Les services qui exigent ces autorisations supplémentaires sont indiqués comme étant Pris en charge [Autorisations V1] et Pris en charge [Autorisations V2] dans le tableau. Pour plus d'informations sur ces autorisations requises, consultez les sections situées après le tableau.
Journalisation nécessitant des autorisations supplémentaires [V1]
Certains AWS services utilisent une infrastructure commune pour envoyer leurs CloudWatch journaux à Logs, Amazon S3 ou 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 lors de la configuration des journaux, ou vous pouvez les créer vous-même avant de configurer la journalisation. Pour la livraison entre comptes, vous devez créer vous-même les politiques d'autorisation manuellement.
Si vous choisissez de configurer AWS automatiquement les autorisations et les politiques de ressources nécessaires lorsque vous ou un membre de votre organisation configurez l'envoi des journaux pour la première fois, l'utilisateur qui configure l'envoi des 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.
Logs envoyés à CloudWatch Logs
Important
Lorsque vous configurez les types de journaux dans la liste suivante à envoyer à CloudWatch Logs, vous AWS créez ou modifiez les politiques de ressources associées au groupe de journaux recevant les journaux, si nécessaire. Continuez à lire cette section pour voir les détails.
Cette section s'applique lorsque les types de journaux répertoriés dans le tableau 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 CloudWatch journaux à Logs pour la première fois, vous devez être connecté à un compte avec les autorisations suivantes.
logs:CreateLogDelivery
logs:PutResourcePolicy
logs:DescribeResourcePolicies
logs:DescribeLogGroups
Note
Lorsque vous spécifiez le
logs:DescribeLogGroups
logs:DescribeResourcePolicies
, ou l'logs:PutResourcePolicy
autorisation, veillez à définir laResource
ligne ARN de manière à utiliser un*
caractère générique, au lieu de ne spécifier qu'un seul nom de groupe de journaux. Par exemple,"Resource": "arn:aws:logs:us-east-1:111122223333:log-group:*"
Si l'un de ces types de journaux est déjà envoyé à un groupe de CloudWatch journaux dans Logs, vous n'avez besoin que de l'logs:CreateLogDelivery
autorisation 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 actuellement aucune politique de ressources et que l'utilisateur qui configure la journalisation dispose des logs:DescribeLogGroups
autorisations logs:PutResourcePolicy
logs:DescribeResourcePolicies
, et pour le groupe de journaux, crée AWS automatiquement la politique suivante pour celui-ci lorsque vous commencez à envoyer les CloudWatch journaux à 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 répertorier chaque groupe de journaux auquel ils envoient des journaux dans la politique de ressources, et les politiques de ressources de CloudWatch journaux sont limitées à 5 120 caractères. Un service qui envoie des journaux à un grand nombre de groupes de journaux peut respecter 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 taille de 5 120 caractères, CloudWatch Logs les active automatiquement /aws/vendedlogs/*
dans la politique de ressources de 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
Lorsque vous configurez les journaux à envoyer à Amazon S3, vous AWS créez ou modifiez les politiques de ressources associées au compartiment S3 qui reçoit les journaux, si nécessaire.
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.
Note
CloudFront utilise un modèle d'autorisation différent de celui des autres services qui envoient des journaux vendus à S3. Pour plus d'informations, consultez Autorisations requises pour configurer la journalisation standard et pour accéder à vos fichiers journaux.
En outre, si vous utilisez le même compartiment S3 pour les journaux CloudFront d'accès et une autre source de journaux, l'activation ACL du compartiment pour octroie CloudFront également l'autorisation à toutes les autres sources de journaux qui utilisent ce compartiment.
Important
Si vous envoyez des journaux vers un compartiment Amazon S3 et que la politique du compartiment contient un NotPrincipal
élément NotAction
ou, l'ajout automatique des autorisations de livraison des journaux au compartiment et la création d'un abonnement aux journaux échoueront. Pour créer un abonnement aux journaux avec succès, vous devez ajouter manuellement les autorisations de livraison des journaux à la politique de compartiment, puis créer l'abonnement aux journaux. Pour plus d'informations, consultez les instructions de cette section.
Si le compartiment est chiffré côté serveur à l'aide d'une AWS KMS clé gérée par le client, vous devez également ajouter la politique de clé pour votre clé gérée par le client. Pour de plus amples informations, veuillez consulter Amazon S3.
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 n'a actuellement aucune politique de ressources et que l'utilisateur qui configure la journalisation dispose des S3:PutBucketPolicy
autorisations S3:GetBucketPolicy
et des autorisations pour le compartiment, il crée AWS automatiquement la politique suivante pour celui-ci 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:::amzn-s3-demo-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:::amzn-s3-demo-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, pouraws:SourceAccount
, spécifiez la liste des comptes IDS pour lesquels les journaux sont envoyés à ce compartiment. Pouraws:SourceArn
, spécifiez la liste ARNs des ressources qui génèrent les journaux, dans le formulairearn: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 déclaration est ajoutée à la politique de ressources du compartiment.
Note
Dans certains cas, des AccessDenied
erreurs peuvent s'afficher AWS CloudTrail si l's3:ListBucket
autorisation n'a pas été accordéedelivery.logs.amazonaws.com
. Pour éviter ces erreurs dans vos CloudTrail journaux, vous devez accorder l's3:ListBucket
autorisation delivery.logs.amazonaws.com
et inclure les Condition
paramètres indiqués dans l's3:GetBucketAcl
autorisation définie dans la politique de compartiment précédente. Pour simplifier les choses, au lieu de créer un nouveau Statement
, vous pouvez directement mettre à jour le AWSLogDeliveryAclCheck
pour qu'il devienne “Action”: [“s3:GetBucketAcl”, “s3:ListBucket”]
Chiffrement côté serveur des compartiments Amazon S3
Vous pouvez protéger les données de votre compartiment Amazon S3 en activant le chiffrement côté serveur avec des clés gérées par Amazon SSE S3 (-S3) ou le chiffrement côté serveur avec une AWS KMS clé stockée 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 SSE -S3, aucune configuration supplémentaire n'est requise. Amazon S3 gère la clé de chiffrement.
Avertissement
Si vous choisissez SSE -KMS, vous devez utiliser une clé gérée par le client, car l'utilisation d'une clé AWS gérée n'est pas prise en charge dans ce scénario. Si vous configurez le chiffrement à l'aide d'une clé AWS gérée, les journaux seront fournis dans un format illisible.
Lorsque vous utilisez une AWS KMS clé gérée par le client, vous pouvez spécifier le nom de ressource Amazon (ARN) de la clé gérée par le client lorsque vous activez le 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 SSE -KMS, vous devez utiliser une clé gérée par le client, car l'utilisation d'une clé AWS gérée n'est pas prise en charge dans ce scénario. Lorsque vous utilisez une AWS KMS clé gérée par le client, vous pouvez spécifier le nom de ressource Amazon (ARN) de la clé gérée par le client lorsque vous activez le 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
:*"] } } }
Pouraws:SourceAccount
, spécifiez la liste des comptes IDS pour lesquels les journaux sont envoyés à ce compartiment. Pouraws:SourceArn
, spécifiez la liste ARNs des ressources qui génèrent les journaux, dans le formulairearn:aws:logs:
. source-region
:source-account-id
:*
Logs envoyés à Firehose
Cette section s'applique lorsque les types de journaux répertoriés dans le tableau de la section précédente sont envoyés à Firehose :
Autorisations des utilisateurs
Pour pouvoir configurer l'envoi de l'un de ces types de journaux à Firehose pour la première fois, vous devez être connecté à un compte avec les autorisations suivantes.
logs:CreateLogDelivery
firehose:TagDeliveryStream
iam:CreateServiceLinkedRole
Si l'un de ces types de journaux est déjà envoyé à Firehose, vous devez uniquement disposer des autorisations et pour configurer l'envoi d'un autre de ces types de journaux à Firehose. logs:CreateLogDelivery
firehose:TagDeliveryStream
IAMrôles utilisés pour les autorisations
Comme Firehose n'utilise pas de politiques de ressources, il AWS utilise des IAM rôles lors de la configuration de ces journaux à envoyer à Firehose. AWS crée un rôle lié à un service nommé AWSServiceRoleForLogDelivery. Ce rôle lié au service inclut 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 l'autorisation à tous les flux de diffusion Firehose dont la LogDeliveryEnabled
balise est définie sur. true
AWS attribue cette balise 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" } ] }
Journalisation nécessitant des autorisations supplémentaires [V2]
Certains AWS services utilisent une nouvelle méthode pour envoyer leurs journaux. Il s'agit d'une méthode flexible qui vous permet de configurer la livraison des journaux depuis ces services vers une ou plusieurs des destinations suivantes : CloudWatch Logs, Amazon S3 ou Firehose.
La livraison d'un journal de travail comprend trois éléments :
A
DeliverySource
, qui est un objet logique qui représente la ou les ressources qui envoient réellement les journaux.A
DeliveryDestination
, qui est un objet logique qui représente la destination de livraison réelle.A
Delivery
, qui connecte une source de livraison à une destination de livraison
Pour configurer la livraison des journaux entre un AWS service pris en charge et une destination, vous devez effectuer les opérations suivantes :
Créez une source de diffusion avec PutDeliverySource.
Créez une destination de livraison avec PutDeliveryDestination.
Si vous distribuez des journaux entre comptes, vous devez les utiliser PutDeliveryDestinationPolicydans le compte de destination pour attribuer une IAM politique à la destination. Cette politique autorise la création d'une livraison depuis la source de livraison dans le compte A vers la destination de livraison dans le compte B. Pour la livraison entre comptes, vous devez créer manuellement les politiques d'autorisation vous-même.
Créez une livraison en associant exactement une source de livraison et une destination de livraison, en utilisant CreateDelivery.
Les sections suivantes fournissent les détails des autorisations dont vous avez besoin lorsque vous êtes connecté pour configurer la livraison des journaux à chaque type de destination, à l'aide du processus V2. Ces autorisations peuvent être accordées à un IAM rôle avec lequel vous êtes connecté.
Important
Il est de votre responsabilité de supprimer les ressources de livraison de journaux après avoir supprimé la ressource génératrice de journaux. Pour ce faire, procédez comme suit.
Delivery
Supprimez-le à l'aide de l'DeleteDeliveryopération.DeliverySource
Supprimez-le à l'aide de l'DeleteDeliverySourceopération.Si le
DeliveryDestination
fichier associé àDeliverySource
celui que vous venez de supprimer n'est utilisé que pour ceDeliverySource
paramètre spécifique, vous pouvez le supprimer en utilisant l'DeleteDeliveryDestinationsopération.
Table des matières
Logs envoyés à CloudWatch Logs
Autorisations des utilisateurs
Pour activer l'envoi de CloudWatch journaux à Logs, vous devez être connecté avec les autorisations suivantes.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:
region
:account-id
:delivery:*", "arn:aws:logs:region
:account-id
:delivery-source:*", "arn:aws:logs:region
:account-id
:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyCWL", "Effect": "Allow", "Action": [ "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region
:account-id
:*" ] } ] }
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 actuellement aucune politique de ressources et que l'utilisateur qui configure la journalisation dispose des logs:DescribeLogGroups
autorisations logs:PutResourcePolicy
logs:DescribeResourcePolicies
, et pour le groupe de journaux, crée AWS automatiquement la politique suivante pour celui-ci lorsque vous commencez à envoyer les CloudWatch journaux à 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
:*"] } } } ] }
Considérations sur la limite de taille de la politique de ressources des groupes de journaux
Ces services doivent répertorier chaque groupe de journaux auquel ils envoient des journaux dans la politique de ressources, et les politiques de ressources de CloudWatch journaux sont limitées à 5 120 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 taille de 5 120 caractères, CloudWatch Logs les active automatiquement /aws/vendedlogs/*
dans la politique de ressources de 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
Autorisations des utilisateurs
Pour activer l'envoi de journaux à Amazon S3, vous devez être connecté avec les autorisations suivantes.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:
region
:account-id
:delivery:*", "arn:aws:logs:region
:account-id
:delivery-source:*", "arn:aws:logs:region
:account-id
:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyS3", "Effect": "Allow", "Action": [ "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": "arn:aws:s3:::bucket-name" } ] }
Le compartiment S3 où les journaux sont envoyés doit avoir une politique de ressources qui inclut certaines autorisations. Si le compartiment n'a actuellement aucune politique de ressources et que l'utilisateur qui configure la journalisation dispose des S3:PutBucketPolicy
autorisations S3:GetBucketPolicy
et des autorisations pour le compartiment, il crée AWS automatiquement la politique suivante pour celui-ci 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:::amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["
0123456789
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1
:0123456789
:delivery-source*"] } } }, { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-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
:delivery-source:*"] } } } ] }
Dans la politique précédente, pouraws:SourceAccount
, spécifiez la liste des comptes IDS pour lesquels les journaux sont envoyés à ce compartiment. Pouraws:SourceArn
, spécifiez la liste ARNs des ressources qui génèrent les journaux, dans le formulairearn: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 déclaration est ajoutée à la politique de ressources du compartiment.
Note
Dans certains cas, des AccessDenied
erreurs peuvent s'afficher AWS CloudTrail si l's3:ListBucket
autorisation n'a pas été accordéedelivery.logs.amazonaws.com
. Pour éviter ces erreurs dans vos CloudTrail journaux, vous devez accorder l's3:ListBucket
autorisation delivery.logs.amazonaws.com
et inclure les Condition
paramètres indiqués dans l's3:GetBucketAcl
autorisation définie dans la politique de compartiment précédente. Pour simplifier les choses, au lieu de créer un nouveau Statement
, vous pouvez directement mettre à jour le AWSLogDeliveryAclCheck
pour qu'il devienne “Action”: [“s3:GetBucketAcl”, “s3:ListBucket”]
Chiffrement côté serveur des compartiments Amazon S3
Vous pouvez protéger les données de votre compartiment Amazon S3 en activant le chiffrement côté serveur avec des clés gérées par Amazon SSE S3 (-S3) ou le chiffrement côté serveur avec une AWS KMS clé stockée 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 SSE -S3, aucune configuration supplémentaire n'est requise. Amazon S3 gère la clé de chiffrement.
Avertissement
Si vous choisissez SSE -KMS, vous devez utiliser une clé gérée par le client, car l'utilisation d'une clé AWS gérée n'est pas prise en charge dans ce scénario. Si vous configurez le chiffrement à l'aide d'une clé AWS gérée, les journaux seront fournis dans un format illisible.
Lorsque vous utilisez une AWS KMS clé gérée par le client, vous pouvez spécifier le nom de ressource Amazon (ARN) de la clé gérée par le client lorsque vous activez le 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 SSE -KMS, vous devez utiliser une clé gérée par le client, car l'utilisation d'une clé AWS gérée n'est pas prise en charge dans ce scénario. Lorsque vous utilisez une AWS KMS clé gérée par le client, vous pouvez spécifier le nom de ressource Amazon (ARN) de la clé gérée par le client lorsque vous activez le 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
:delivery-source:*"] } } }
Pouraws:SourceAccount
, spécifiez la liste des comptes IDS pour lesquels les journaux sont envoyés à ce compartiment. Pouraws:SourceArn
, spécifiez la liste ARNs des ressources qui génèrent les journaux, dans le formulairearn:aws:logs:
. source-region
:source-account-id
:*
Logs envoyés à Firehose
Autorisations des utilisateurs
Pour activer l'envoi de logs à Firehose, vous devez être connecté avec les autorisations suivantes.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadWriteAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:GetDelivery", "logs:GetDeliverySource", "logs:PutDeliveryDestination", "logs:GetDeliveryDestinationPolicy", "logs:DeleteDeliverySource", "logs:PutDeliveryDestinationPolicy", "logs:CreateDelivery", "logs:GetDeliveryDestination", "logs:PutDeliverySource", "logs:DeleteDeliveryDestination", "logs:DeleteDeliveryDestinationPolicy", "logs:DeleteDelivery", "logs:UpdateDeliveryConfiguration" ], "Resource": [ "arn:aws:logs:
region
:account-id
:delivery:*", "arn:aws:logs:region
:account-id
:delivery-source:*", "arn:aws:logs:region
:account-id
:delivery-destination:*" ] }, { "Sid": "ListAccessForLogDeliveryActions", "Effect": "Allow", "Action": [ "logs:DescribeDeliveryDestinations", "logs:DescribeDeliverySources", "logs:DescribeDeliveries", "logs:DescribeConfigurationTemplates" ], "Resource": "*" }, { "Sid": "AllowUpdatesToResourcePolicyFH", "Effect": "Allow", "Action": [ "firehose:TagDeliveryStream" ], "Resource": [ "arn:aws:firehose:region
:account-id
:deliverystream/*" ] }, { "Sid": "CreateServiceLinkedRole", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::account-id
:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery" } ] }
IAMrôles utilisés pour les autorisations relatives aux ressources
Comme Firehose n'utilise pas de politiques de ressources, il AWS utilise des IAM rôles lors de la configuration de ces journaux à envoyer à Firehose. AWS crée un rôle lié à un service nommé AWSServiceRoleForLogDelivery. Ce rôle lié au service inclut 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 l'autorisation à tous les flux de diffusion Firehose dont la LogDeliveryEnabled
balise est définie sur. true
AWS attribue cette balise 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" } ] }
Autorisations spécifiques au service
Outre les autorisations spécifiques à la destination répertoriées dans les sections précédentes, certains services nécessitent une autorisation explicite autorisant les clients à envoyer des journaux à partir de leurs ressources, comme couche de sécurité supplémentaire. Il autorise l'AllowVendedLogDeliveryForResource
action pour les ressources qui vendent des journaux au sein de ce service. Pour ces services, appliquez la politique suivante et remplacez service
and resource-type
avec les valeurs appropriées. Pour les valeurs spécifiques aux services pour ces champs, consultez la page de documentation de ces services pour les journaux vendus.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceLevelAccessForLogDelivery", "Effect": "Allow", "Action": [ "
service
:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:service
:region
:account-id
:resource-type
/*" } ] }
Autorisations spécifiques à la console
Outre les autorisations répertoriées dans les sections précédentes, si vous configurez la livraison des journaux à l'aide de la console au lieu de laAPIs, vous avez également besoin des autorisations supplémentaires suivantes :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogDeliveryActionsConsoleCWL", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-east-1:
111122223333
:log-group:*" ] }, { "Sid": "AllowLogDeliveryActionsConsoleS3", "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowLogDeliveryActionsConsoleFH", "Effect": "Allow", "Action": [ "firehose:ListDeliveryStreams", "firehose:DescribeDeliveryStream" ], "Resource": [ "*" ] } ] }
Exemple de livraison entre comptes
Dans cet exemple, deux comptes sont concernés. Le compte contenant la ressource génératrice du journal est le compte A, ID : AAAAAAAAAAAA
, et le compte contenant la ressource consommatrice de journaux est le compte B, ID : BBBBBBBBBBBB
.
Le compte A souhaite fournir des logs provenant de la base de Amazon Bedrock connaissances de son compte avec le ARN arn:aws:bedrock :region
:AAAAAAAAAAAA
:base de connaissances/XXXXXXXXXX
.
Pour cet exemple, le compte A a besoin des autorisations suivantes :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowVendedLogDeliveryForKnowledgeBase", "Effect": "Allow", "Action": [ "bedrock:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:bedrock:
region
:AAAAAAAAAAAA
:knowledge-base/XXXXXXXXXX
" }, { "Sid": "CreateLogDeliveryPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliverySource", "logs:CreateDelivery" ], "Resource": [ "arn:aws:logs:region
:AAAAAAAAAAAA
:delivery-source:*", "arn:aws:logs:region
:AAAAAAAAAAAA
:delivery:*", "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:*" ] } ] }
Création d'une source de livraison
Pour commencer, le compte A crée une source de diffusion à partir de sa base de connaissances de base :
aws logs put-delivery-source --name my-delivery-source --log-type APPLICATION_LOGS --resource-arn arn:aws:bedrock:
region
:AAAAAAAAAAAA
:knowledge-base/XXXXXXXXXX
Ensuite, le compte B doit créer la destination de livraison en utilisant l'un des flux ci-dessous :
Configuration de la livraison vers un compartiment Amazon S3
Le compte B souhaite recevoir les logs dans son compartiment S3 avec le ARN arn:aws:s3 : ::amzn-s3-demo-bucket. Dans cet exemple, le compte B aura besoin des autorisations suivantes :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PutLogDestinationPermissions", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:
region
:BBBBBBBBBBBB
:delivery-destination:*" } ] }
Le bucket aura besoin des autorisations suivantes dans sa politique de bucket :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogsDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/AWSLogs/
AAAAAAAAAAAA
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["AAAAAAAAAAAA
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region
:AAAAAAAAAAAA
:delivery-source:my-delivery-source"] } } } ] }
Si le compartiment est chiffré avec SSE -KMS, assurez-vous que la politique des AWS KMS clés dispose des autorisations appropriées. Par exemple, si la KMS clé estarn:aws:kms:
, utilisez ce qui suit : region
:BBBBBBBBBBBB
:key/X
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLogsGenerateDataKey", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" } "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:
region
:BBBBBBBBBBBB
:key/X
", "Condition": { "StringEquals": { "aws:SourceAccount": ["AAAAAAAAAAAA
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region
:AAAAAAAAAAAA
:delivery-source:my-delivery-source"] } } } ] }
Le compte B peut ensuite créer une destination de livraison avec le compartiment S3 comme ressource de destination :
aws logs put-delivery-destination --name my-s3-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:s3:::amzn-s3-demo-bucket"
Ensuite, le compte B crée une politique de destination de livraison pour sa nouvelle destination de livraison, qui autorisera le compte A à créer un journal de livraison. La politique qui sera ajoutée à la destination de livraison nouvellement créée est la suivante :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "
AAAAAAAAAAAA
" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:my-s3-delivery-destination" } ] }
Cette politique sera enregistrée sur l'ordinateur du compte B car destination-policy-s3.json
pour associer cette ressource, le compte B exécutera la commande suivante :
aws logs put-delivery-destination-policy --delivery-destination-name my-s3-delivery-destination --delivery-destination-policy file://destination-policy-s3.json
Enfin, le compte A crée la livraison, qui lie la source de livraison dans le compte A à la destination de livraison dans le compte B.
aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:
region
:BBBBBBBBBBBB
:delivery-destination:my-s3-delivery-destination
Configurer la diffusion vers un flux Firehose
Dans cet exemple, le compte B souhaite recevoir des logs dans son stream Firehose. Le flux Firehose possède les caractéristiques suivantes ARN et est configuré pour utiliser le type de flux DirectPut de diffusion :
arn:aws:firehose:
region
:BBBBBBBBBBBB
:deliverystream/X
Pour cet exemple, le compte B a besoin des autorisations suivantes :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowFirehoseCreateSLR", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::
BBBBBBBBBBBB
:role/aws-service-role/delivery.logs.amazonaws.com/AWSServiceRoleForLogDelivery", }, { "Sid": "AllowFirehoseTagging", "Effect": "Allow", "Action": [ "firehose:TagDeliveryStream" ], "Resource": "arn:aws:firehose:region
:BBBBBBBBBBBB
:deliverystream/X
" }, { "Sid": "AllowFirehoseDeliveryDestination", "Effect": "Allow", "Action": [ "logs:PutDeliveryDestination", "logs:PutDeliveryDestinationPolicy" ], "Resource": "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:*" } ] }
Le stream Firehose doit avoir la balise LogDeliveryEnabled
définie sur. true
Le compte B créera ensuite une destination de livraison avec le stream Firehose comme ressource de destination :
aws logs put-delivery-destination --name my-fh-delivery-destination --delivery-destination-configuration "destinationResourceArn=arn:aws:firehose:
region
:BBBBBBBBBBBB
:deliverystream/X
"
Ensuite, le compte B crée une politique de destination de livraison pour sa nouvelle destination de livraison, qui autorisera le compte A à créer un journal de livraison. La politique à ajouter à la destination de livraison nouvellement créée est la suivante :
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDelivery", "Effect": "Allow", "Principal": { "AWS": "
AAAAAAAAAAAA
" }, "Action": [ "logs:CreateDelivery" ], "Resource": "arn:aws:logs:region
:BBBBBBBBBBBB
:delivery-destination:my-fh-delivery-destination" } ] }
Cette politique sera enregistrée sur l'ordinateur du compte B car destination-policy-fh.json
pour associer cette ressource, le compte B exécute la commande suivante :
aws logs put-delivery-destination-policy --delivery-destination-name my-fh-delivery-destination --delivery-destination-policy file://destination-policy-fh.json
Enfin, le compte A crée la livraison, qui lie la source de livraison dans le compte A à la destination de livraison dans le compte B.
aws logs create-delivery --delivery-source-name my-delivery-source --delivery-destination-arn arn:aws:logs:
region
:BBBBBBBBBBBB
:delivery-destination:my-fh-delivery-destination
Prévention du cas de figure de l’adjoint désorienté 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. En AWS, l'usurpation d'identité interservices peut entraîner la confusion des adjoints. 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 recommandons d'utiliser les clés aws:SourceAccount
contextuelles aws:SourceArn
aws:SourceOrgID
,, et de condition aws:SourceOrgPaths
globale dans les politiques de ressources afin de limiter les autorisations que CloudWatch Logs accorde à un autre service à la ressource. aws:SourceArn
À utiliser pour associer une seule ressource à un accès multiservice. aws:SourceAccount
À utiliser pour associer n'importe quelle ressource de ce compte à l'utilisation interservices. aws:SourceOrgID
À utiliser pour permettre à n'importe quelle ressource provenant de n'importe quel compte au sein d'une organisation d'être associée à l'utilisation interservices. aws:SourceOrgPaths
À utiliser pour associer toute ressource provenant de comptes situés dans un AWS Organizations chemin à l'utilisation interservices. Pour plus d'informations sur l'utilisation et la compréhension des chemins, voir Comprendre le chemin de l' AWS Organizations entité.
Le moyen le plus efficace de se protéger contre le problème de confusion des adjoints consiste à utiliser la clé de contexte de la condition aws:SourceArn
globale avec l'intégralité ARN de la ressource. Si vous ne connaissez pas l'intégralité ARN de la ressource ou si vous spécifiez plusieurs ressources, utilisez la clé de condition contextuelle aws:SourceArn
globale avec des caractères génériques (*
) pour les parties inconnues duARN. Par exemple, arn:aws:
. servicename
:*:123456789012
:*
Si la aws:SourceArn
valeur ne contient pas l'identifiant du compte, tel qu'un compartiment Amazon S3ARN, vous devez utiliser les deux aws:SourceAccount
et aws:SourceArn
limiter les autorisations.
Pour se protéger contre le problème de l'adjoint confus à grande échelle, utilisez la clé de contexte de condition globale aws:SourceOrgID
ou aws:SourceOrgPaths
avec l'ID de l'organisation ou le chemin de l'organisation de la ressource dans vos politiques basées sur les ressources. Lorsque vous ajoutez, supprimez et déplacez des comptes dans votre organisation, les politiques qui contiennent la clé aws:SourceOrgID
ou aws:SourceOrgPaths
incluront automatiquement les bons comptes et vous n'avez pas besoin de mettre manuellement à jour les polices.
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.
CloudWatch Enregistre les mises à jour des politiques AWS gérées
Consultez les détails des mises à jour apportées aux politiques AWS gérées pour CloudWatch les journaux depuis que ce service a commencé à suivre ces modifications. Pour recevoir des alertes automatiques concernant les modifications apportées à cette page, abonnez-vous au RSS fil sur la page d'historique CloudWatch des documents de journalisation.
Modification | Description | Date |
---|---|---|
AWSServiceRoleForLogDelivery politique de rôle liée au service — Mise à jour d'une politique existante |
CloudWatch Les journaux ont modifié les autorisations définies dans la IAM politique associée au AWSServiceRoleForLogDeliveryrôle lié au service. La modification suivante a été apportée :
|
15 juillet 2021 |
CloudWatch Les journaux ont commencé à suivre les modifications |
CloudWatch Logs a commencé à suivre les modifications apportées AWS à ses politiques gérées. |
10 juin 2021 |