Comment utiliser Athena pour rechercher dans mes journaux CloudTrail les appels d'API AWS Support ?
Je souhaite exécuter des requêtes Amazon Athena pour rechercher dans mes journaux AWS CloudTrail les appels d'API qu'AWS Support a effectués sur mon compte AWS.
Brève description
Pour vous aider à résoudre votre problème, AWS Support peut collecter des métadonnées en lecture seule sécurisées sur vos ressources AWS. AWS Support utilise un rôle lié à un service AWS Identity and Access Management (IAM) appelé AWSServiceRoleForSupport pour collecter les métadonnées.
Pour obtenir des informations sur les appels d'API qu'AWS Support effectue sur votre compte, utilisez Athena pour interroger vos journaux CloudTrail.
Résolution
Utiliser la projection de partition pour créer manuellement une table CloudTrail
Même lorsque vous partitionnez la table CloudTrail pour réduire le temps d’exécution des requêtes, la taille des journaux CloudTrail peut augmenter au fil du temps. Les requêtes que vous exécutez sur une table hautement partitionnée présentent un temps de planification long et ne s’exécutent pas rapidement.
Pour réduire les temps d'exécution des requêtes, utilisez la projection de partition pour créer manuellement une table CloudTrail.
Par exemple, l'instruction CREATE TABLE suivante utilise automatiquement la projection de partition sur les journaux CloudTrail au cours d'une période donnée dans une région AWS :
CREATE EXTERNAL TABLE cloudtrail_logs_pp( eventversion STRING, useridentity STRUCT< type: STRING, principalid: STRING, arn: STRING, accountid: STRING, invokedby: STRING, accesskeyid: STRING, username: STRING, onbehalfof: STRUCT< userid: STRING, identitystorearn: STRING>, sessioncontext: STRUCT< attributes: STRUCT< mfaauthenticated: STRING, creationdate: STRING>, sessionissuer: STRUCT< type: STRING, principalid: STRING, arn: STRING, accountid: STRING, username: STRING>, ec2roledelivery:string, webidfederationdata: STRUCT< federatedprovider: STRING, attributes: map<string,string>> > >, eventtime STRING, eventsource STRING, eventname STRING, awsregion STRING, sourceipaddress STRING, useragent STRING, errorcode STRING, errormessage STRING, requestparameters STRING, responseelements STRING, additionaleventdata STRING, requestid STRING, eventid STRING, readonly STRING, resources ARRAY<STRUCT< arn: STRING, accountid: STRING, type: STRING>>, eventtype STRING, apiversion STRING, recipientaccountid STRING, serviceeventdetails STRING, sharedeventid STRING, vpcendpointid STRING, vpcendpointaccountid STRING, eventcategory STRING, addendum STRUCT< reason:STRING, updatedfields:STRING, originalrequestid:STRING, originaleventid:STRING>, sessioncredentialfromconsole STRING, edgedevicedetails STRING, tlsdetails STRUCT< tlsversion:STRING, ciphersuite:STRING, clientprovidedhostheader:STRING> ) PARTITIONED BY ( `timestamp` string) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://example-bucket/AWSLogs/account-id/CloudTrail/aws-region' TBLPROPERTIES ( 'projection.enabled'='true', 'projection.timestamp.format'='yyyy/MM/dd', 'projection.timestamp.interval'='1', 'projection.timestamp.interval.unit'='DAYS', 'projection.timestamp.range'='2020/01/01,NOW', 'projection.timestamp.type'='date', 'storage.location.template'='s3://example-bucket/AWSLogs/account-id/CloudTrail/aws-region/${timestamp}')
Remarque : Dans les clauses LOCATION et TBLPROPERTIES, remplacez example-bucket par le nom de votre compartiment, account-id par votre ID de compte et aws-region par votre région. Pour projection.timestamp.range, remplacez 2020/01/01 par votre date de début.
Pour exécuter la requête précédente et créer une table de journaux CloudTrail partitionnée, procédez comme suit :
- Ouvrez la console Athena.
- Choisissez Nouvelle requête, puis choisissez la boîte de dialogue permettant d’effacer l’exemple de requête.
- Entrez la requête précédente, puis choisissez Exécuter la requête.
Pour plus d'informations, consultez la section Créer la table pour les journaux CloudTrail dans Athena à l'aide de la projection de partition.
Rechercher les appels d'API AWS Support dans la table de journaux CloudTrail
Vous trouverez ci-dessous des exemples de requêtes que vous pouvez utiliser pour rechercher des appels AWS Support dans la table de journaux CloudTrail pendant une période donnée. Les exemples utilisent 2025/01/01 à 2025/01/07 comme intervalle de temps spécifié.
Remarque : Dans les exemples de requêtes suivants, remplacez default par le nom de la base de données dans laquelle vous avez créé la table cloudtrail_logs_pp.
Compter le nombre d'appels d'API AWS Support
La requête suivante compte le nombre total d'appels d'API qu'AWS Support a effectués sur votre compte :
SELECT COUNT(*) FROM "default"."cloudtrail_logs_pp" WHERE timestamp <= '2025/01/07' AND timestamp > '2025/01/01' AND sourceipaddress = 'support.amazonaws.com'
Obtenir tous les appels d'API AWS Support
La requête suivante affiche tous les appels d'API qu'AWS Support a effectués sur votre compte :
SELECT * FROM "default"."cloudtrail_logs_pp" WHERE timestamp <= '2025/01/07' AND timestamp > '2025/01/01' AND sourceipaddress = 'support.amazonaws.com' LIMIT 10
Compter le nombre d'appels d'API AWS Support par nom d'utilisateur et source d'événement
La requête suivante indique le nombre total d'appels d'API pour chaque nom d'utilisateur et source d'événement qu'AWS Support a effectués sur votre compte :
SELECT useridentity.sessioncontext.sessionissuer.username, eventsource, COUNT(*) AS number_of_event FROM "default"."cloudtrail_logs_pp" WHERE timestamp <= '2025/01/07' AND timestamp > '2025/01/01' AND sourceipaddress = 'support.amazonaws.com' GROUP BY useridentity.sessioncontext.sessionissuer.username, eventsource ORDER BY number_of_event DESC
Obtenir les ARN des appels d'API qu'AWS Support a effectués sur votre compte
La requête suivante affiche l'ARN de tous les appels d'API qu'AWS Support a effectués sur votre compte :
SELECT useridentity.arn FROM "default"."cloudtrail_logs_pp" WHERE timestamp <= '2025/01/07' AND timestamp > '2025/01/01' AND regexp_like(useridentity.arn, 'AWSServiceRoleForSupport') LIMIT 10
Obtenir les ID de principaux pour les appels d'API qu'AWS Support a effectués sur votre compte
La requête suivante indique les ID de principaux de tous les appels d'API qu'AWS Support a effectués sur votre compte :
SELECT useridentity.principalid FROM "default"."cloudtrail_logs_pp" WHERE timestamp <= '2025/01/07' AND timestamp > '2025/01/01' AND regexp_like(useridentity.arn, 'AWSServiceRoleForSupport') LIMIT 10
Informations connexes
Ajout et suppression d’autorisations basées sur l’identité IAM
- Balises
- AWS CloudTrailAmazon Athena
- Langue
- Français

Contenus pertinents
- Réponse acceptéedemandé il y a 2 ans
- demandé il y a 3 ans
- demandé il y a 2 ans
- demandé il y a 2 ans