Consultez les GuardDuty résultats d'Amazon - Amazon Athena

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.

Consultez les GuardDuty résultats d'Amazon

Amazon GuardDuty est un service de surveillance de la sécurité qui aide à identifier les activités inattendues, potentiellement non autorisées ou malveillantes dans votre AWS environnement. Lorsqu'il détecte une activité inattendue et potentiellement malveillante, il GuardDuty génère des résultats de sécurité que vous pouvez exporter vers Amazon S3 à des fins de stockage et d'analyse. Après avoir exporté vos résultats vers Simple Storage Service (Amazon S3), vous pouvez utiliser Athena pour les interroger. Cet article explique comment créer une table dans Athena pour vos GuardDuty résultats et les interroger.

Pour plus d'informations sur Amazon GuardDuty, consultez le guide de GuardDuty l'utilisateur Amazon.

Prérequis

  • Activez la GuardDuty fonctionnalité d'exportation des résultats vers Amazon S3. Pour connaître les étapes à suivre, consultez la section Exportation des résultats dans le guide de GuardDuty l'utilisateur Amazon.

Créez un tableau dans Athena pour les résultats GuardDuty

Pour interroger vos GuardDuty conclusions auprès d'Athéna, vous devez créer un tableau pour celles-ci.

Pour créer un tableau dans Athena pour les résultats GuardDuty
  1. Ouvrez la console à l'adresse https://console.aws.amazon.com/athena/.

  2. Collez l'DDLinstruction suivante dans la console Athena. Modifiez les valeurs LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/account-id/GuardDuty/' pour qu'elles correspondent à vos GuardDuty résultats dans Amazon S3.

    CREATE EXTERNAL TABLE `gd_logs` ( `schemaversion` string, `accountid` string, `region` string, `partition` string, `id` string, `arn` string, `type` string, `resource` string, `service` string, `severity` string, `createdat` string, `updatedat` string, `title` string, `description` string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/account-id/GuardDuty/' TBLPROPERTIES ('has_encrypted_data'='true')
    Note

    Le SerDe s'attend à ce que chaque JSON document se trouve sur une seule ligne de texte, aucun caractère de fin de ligne ne séparant les champs de l'enregistrement. Si le JSON texte est dans un joli format d'impression, vous pouvez recevoir un message d'erreur tel que HIVECURSOR_ _ ERROR : La ligne n'est pas un JSON objet valide ou HIVECURSOR_ _ ERROR JsonParseException end-of-input : Inattendu : marqueur de fermeture attendu OBJECT lorsque vous essayez d'interroger la table après l'avoir créée. Pour plus d'informations, consultez la section Fichiers de JSON données dans la SerDe documentation OpenX sur. GitHub

  3. Exécutez la requête dans la console Athena pour enregistrer la table gd_logs. Une fois la requête terminée, vous pouvez interroger les résultats à partir d'Athena.

Exemples de requêtes

Les exemples suivants montrent comment interroger les GuardDuty résultats d'Athéna.

Exemple — DNS exfiltration de données

La requête suivante renvoie des informations sur les EC2 instances Amazon susceptibles d'exfiltrer des données par le biais DNS de requêtes.

SELECT title, severity, type, id AS FindingID, accountid, region, createdat, updatedat, json_extract_scalar(service, '$.count') AS Count, json_extract_scalar(resource, '$.instancedetails.instanceid') AS InstanceID, json_extract_scalar(service, '$.action.actiontype') AS DNS_ActionType, json_extract_scalar(service, '$.action.dnsrequestaction.domain') AS DomainName, json_extract_scalar(service, '$.action.dnsrequestaction.protocol') AS protocol, json_extract_scalar(service, '$.action.dnsrequestaction.blocked') AS blocked FROM gd_logs WHERE type = 'Trojan:EC2/DNSDataExfiltration' ORDER BY severity DESC
Exemple — Accès IAM utilisateur non autorisé

La requête suivante renvoie tous les types de UnauthorizedAccess:IAMUser recherche pour un IAM principal provenant de toutes les régions.

SELECT title, severity, type, id, accountid, region, createdat, updatedat, json_extract_scalar(service, '$.count') AS Count, json_extract_scalar(resource, '$.accesskeydetails.username') AS IAMPrincipal, json_extract_scalar(service,'$.action.awsapicallaction.api') AS APIActionCalled FROM gd_logs WHERE type LIKE '%UnauthorizedAccess:IAMUser%' ORDER BY severity desc;

Conseils pour interroger GuardDuty les résultats

Lorsque vous créez votre requête, gardez les points suivants à l'esprit.