Journalisation des appels d’API de données Amazon RDS avec AWS CloudTrail - Amazon Aurora

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.

Journalisation des appels d’API de données Amazon RDS avec AWS CloudTrail

L’API de données RDS (API de données) est intégrée avec AWS CloudTrail, un service qui fournit un enregistrement des actions effectuées par un utilisateur, un rôle ou un service AWS dans l’API de données. CloudTrail capture tous les appels d’API pour l’API de données en tant qu’événements, y compris les appels à partir de la console Amazon RDS et les appels de code à des opérations d’API de données. Si vous créez un journal de suivi, vous pouvez transmettre en continu les événements CloudTrail vers un compartiment Amazon S3, y compris les événements concernant l’API de données. Grâce aux données collectées par CloudTrail, vous pouvez déterminer de nombreuses informations. Ces informations comprennent la demande qui a été faite à l’API de données, l’adresse IP à partir de laquelle la demande a été faite, qui a effectué la demande, quand elle a eu lieu, ainsi que des détails supplémentaires.

Pour en savoir plus sur CloudTrail, consultez le Guide de l’utilisateur AWS CloudTrail.

Utilisation des informations de l’API de données dans CloudTrail

CloudTrail est activé dans votre compte AWS lors de la création de ce dernier. Lorsqu’une activité prise en charge (événements de gestion) se produit dans l’API de données, cette activité est enregistrée dans un événement CloudTrail avec d’autres événements de service AWS dans l’Historique des événements. Vous pouvez afficher, rechercher et télécharger les événements de gestion récents dans votre compte AWS. Pour plus d’informations, consultez Travailler avec l’historique des événements CloudTrail dans le AWS CloudTrailGuide de l’utilisateur.

Pour un enregistrement continu des événements dans votre compte AWS, y compris des événements concernant l’API de données, créez un journal de suivi. Un journal de suivi permet à CloudTrail de livrer des fichiers journaux dans un compartiment Amazon S3. Par défaut, lorsque vous créez un journal de suivi dans la console, il s’applique à toutes les régions AWS. Le journal d’activité consigne les événements de toutes les Régions dans la partition AWSAWS et transfère les fichiers journaux dans le compartiment Amazon S3 de votre choix. En outre, vous pouvez configurer d’autres services AWS pour analyser plus en profondeur les données d’événement collectées dans les journaux CloudTrail et agir sur celles-ci. Pour plus d’informations, consultez les rubriques suivantes dans le AWS CloudTrailGuide de l’utilisateur :

Toutes les opérations de l’API de données sont enregistrées par CloudTrail et documentées dans la référence API du service de données Amazon RDS. Par exemple, les appels aux opérations BatchExecuteStatement, BeginTransaction, CommitTransaction et ExecuteStatement génèrent des entrées dans les fichiers journaux CloudTrail.

Chaque événement ou entrée du journal contient des informations sur la personne qui a généré la demande. Les informations relatives à l’identité permettent de déterminer les éléments suivants :

  • Si la demande a été effectuée avec les informations d’identification utilisateur racine ou .

  • Si la demande a été effectuée avec les informations d’identification de sécurité temporaires d’un rôle ou d’un utilisateur fédéré.

  • Si la demande a été effectuée par un autre service AWS.

Pour plus d’informations, consultez l’élément userIdentity CloudTrail.

Inclusion et exclusion d’événements d’API de données d’un journal d’activité AWS CloudTrail

La plupart des utilisateurs d’API de données s’appuient sur les événements d’un journal d’activité AWS CloudTrail pour fournir un enregistrement des opérations d’API de données. Les données d’événements ne révèlent pas le nom de la base de données, le nom du schéma ni les instructions SQL dans les demandes adressées à l’API de données. Toutefois, identifier quel utilisateur a exécuté un type d’appel sur un cluster de bases de données spécifique à un instant donné peut contribuer à repérer les modèles d’accès anormaux.

Inclusion d’événements d’API de données dans un journal d’activité AWS CloudTrail

Pour Aurora PostgreSQL sans serveur v2 et les bases de données provisionnées, les opérations d’API de données suivantes sont enregistrées en tant qu’événements de données sur AWS CloudTrail. Les événements de données sont des opérations d’API de plan de données à volume élevé que CloudTrail ne consigne pas par défaut. Des frais supplémentaires s’appliquent pour les événements de données. Pour en savoir plus sur la tarification de CloudTrail, consultez Tarification AWS CloudTrail.

Vous pouvez utiliser la console CloudTrail, l’AWS CLI, ou les opérations d’API CloudTrail pour journaliser les opérations d’API de données. Dans la console CloudTrail, choisissez API de données RDS - Cluster de bases de données pour le type d’événement de données. Pour plus d’informations, consultez Journalisation des événements de données avec la AWS Management Console dans le Guide de l’utilisateur AWS CloudTrail.

À l’aide de l’AWS CLI, exécutez la commande aws cloudtrail put-event-selectors pour enregistrer ces opérations d’API de données pour votre journal d’activité. Pour enregistrer tous les événements de l’API de données sur les clusters de bases de données, indiquez AWS::RDS::DBCluster pour le type de ressource. L’exemple suivant illustre la journalisation de tous les événements de l’API de données sur les clusters de bases de données. Pour plus d’informations, consultez Journalisation des événements de données avec la AWS Command Line Interface dans le Guide de l’utilisateur AWS CloudTrail.

aws cloudtrail put-event-selectors --trail-name trail_name --advanced-event-selectors \ '{ "Name": "RDS Data API Selector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::RDS::DBCluster" ] } ] }'

Vous pouvez configurer des sélecteurs d’événements avancés pour appliquer un filtre supplémentaire sur les champs readOnly, eventName, et resources.ARN. Pour plus d’informations sur ces champs, consultez AdvancedFieldSelector.

Exclusion d’événements d’API de données d’un journal d’activité AWS CloudTrail (Aurora Serverless v1 uniquement)

Les événements de l’API de données sont des événements de gestion dans Aurora Serverless v1. Par défaut, tous les événements de l’API de données sont inclus dans un journal d’activité AWS CloudTrail. Cependant, comme l’API de données peut générer un grand nombre d’événements, vous pouvez exclure ces événements de votre journal d’activité CloudTrail. Le paramètre Exclure les événements de l’API de données Amazon RDS exclut tous les événements de l’API de données du journal d’activité. Vous ne pouvez pas exclure des événements d’API de données spécifiques.

Pour exclure des événements d’API de données d’un journal d’activité, procédez comme suit :

  • Dans la console CloudTrail, choisissez le paramètre Exclude Amazon RDS Data API events (Exclure les événements d’API de données Amazon RDS) lorsque vous créez un journal d’activité ou mettez à jour un journal d’activité.

  • Dans l’API CloudTrail API, utilisez l’opération PutEventSelectors. Si vous utilisez des sélecteurs d’événements avancés, vous pouvez exclure les événements de l’API de données en configurant le champ eventSource avec une valeur différente de rdsdata.amazonaws.com. Si vous utilisez des sélecteurs d’événements basiques, vous pouvez exclure les événements de l’API de données en définissant la valeur de l’attribut ExcludeManagementEventSources sur rdsdata.amazonaws.com. Pour plus d’informations, consultez Journalisation des événements avec l’AWS Command Line Interface dans le Guide de l’utilisateur AWS CloudTrail.

Avertissement

L’exclusion d’événements d’API de données d’un journal CloudTrail peut masquer des actions d’API de données. Soyez prudent lorsque vous accordez aux principaux l’autorisation cloudtrail:PutEventSelectors nécessaire pour effectuer cette opération.

Vous pouvez désactiver cette exclusion à tout moment en modifiant le paramétrage de la console ou les sélecteurs d’événements pour un journal d’activité. Le journal d’activité commencera alors à enregistrer les événements d’API de données. Toutefois, il ne pourra pas récupérer les événements d’API de données survenus pendant que l’exclusion était effective.

Lorsque vous excluez des événements d’API de données à l’aide de la console ou de l’API, l’opération d’API PutEventSelectors CloudTrail qui en résulte est également enregistrée dans vos journaux CloudTrail. Si des événements d’API de données n’apparaissent pas dans vos journaux CloudTrail, recherchez un événement PutEventSelectors dont l’attribut ExcludeManagementEventSources est défini sur rdsdata.amazonaws.com.

Pour plus d’informations, consultez Journalisation des événements de gestion pour les journaux d’activité dans le Guide de l’utilisateur AWS CloudTrail.

Présentation des entrées des fichiers journaux de l’API de données

Un journal d’activité est une configuration qui permet la livraison d’événements sous forme de fichiers journaux vers un compartiment Amazon S3 que vous spécifiez. Les fichiers journaux CloudTrail peuvent contenir une ou plusieurs entrées. Un événement représente une demande individuelle émise à partir d’une source quelconque et comprend des informations sur l’action demandée, la date et l’heure de l’action, les paramètres de la demande, etc. Les fichiers journaux CloudTrail ne constituent pas une série ordonnée retraçant les appels d’API publics. Ils ne suivent aucun ordre précis.

Aurora PostgreSQL sans serveur v2 et les bases de données provisionnées

L’exemple suivant présente une entrée de journal CloudTrail qui illustre l’opération ExecuteStatement d’Aurora PostgreSQL sans serveur v2 et des bases de données provisionnées. Pour ces bases de données, tous les événements de l’API de données sont des événements de données dont la source est rdsdataapi.amazonaws.com et le type d’événement est Rds Data Service.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:user/johndoe", "accountId": "123456789012", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "johndoe" }, "eventTime": "2019-12-18T00:49:34Z", "eventSource": "rdsdataapi.amazonaws.com", "eventName": "ExecuteStatement", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.16.102 Python/3.7.2 Windows/10 botocore/1.12.92", "requestParameters": { "continueAfterTimeout": false, "database": "**********", "includeResultMetadata": false, "parameters": [], "resourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:my-database-1", "schema": "**********", "secretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:dataapisecret-ABC123", "sql": "**********" }, "responseElements": null, "requestID": "6ba9a36e-b3aa-4ca8-9a2e-15a9eada988e", "eventID": "a2c7a357-ee8e-4755-a0d0-aed11ed4253a", "eventType": "Rds Data Service", "recipientAccountId": "123456789012" }

Aurora Serverless v1

L’exemple suivant montre comment apparaît l’entrée de journal CloudTrail de l’exemple précédent pour Aurora Serverless v1. Pour Aurora Serverless v1, tous les événements sont des événements de gestion dont la source est rdsdata.amazonaws.com et le type d’événement est AwsApiCall.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:user/johndoe", "accountId": "123456789012", "accessKeyId": "AKIAI44QH8DHBEXAMPLE", "userName": "johndoe" }, "eventTime": "2019-12-18T00:49:34Z", "eventSource": "rdsdata.amazonaws.com", "eventName": "ExecuteStatement", "awsRegion": "us-east-1", "sourceIPAddress": "192.0.2.0", "userAgent": "aws-cli/1.16.102 Python/3.7.2 Windows/10 botocore/1.12.92", "requestParameters": { "continueAfterTimeout": false, "database": "**********", "includeResultMetadata": false, "parameters": [], "resourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:my-database-1", "schema": "**********", "secretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:dataapisecret-ABC123", "sql": "**********" }, "responseElements": null, "requestID": "6ba9a36e-b3aa-4ca8-9a2e-15a9eada988e", "eventID": "a2c7a357-ee8e-4755-a0d0-aed11ed4253a", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }