Collecter les journaux AWS Security Hub

Compatible avec:

Ce document explique comment ingérer les journaux AWS Security Hub dans Google Security Operations. AWS Security Hub offre une vue complète des alertes et des résultats de sécurité dans les comptes AWS. En envoyant ces résultats à Google SecOps, vous pouvez utiliser les fonctionnalités de Google SecOps pour améliorer la surveillance et la détection des menaces.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer d'un accès privilégié à AWS.

Configurer AWS IAM

  1. Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur: Créer un bucket.
  2. Enregistrez le nom et la région du bucket pour une utilisation ultérieure.
  3. Créez un utilisateur en suivant le guide de l'utilisateur Créer un utilisateur IAM.
  4. Sélectionnez l'utilisateur créé.
  5. Sélectionnez l'onglet Informations d'identification de sécurité.
  6. Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
  7. Sélectionnez Service tiers comme Cas d'utilisation.
  8. Cliquez sur Suivant.
  9. Facultatif: ajoutez une balise de description.
  10. Cliquez sur Créer une clé d'accès.
  11. Cliquez sur Download CSV file (Télécharger le fichier CSV) pour enregistrer la clé d'accès et la clé d'accès secrète pour les utiliser ultérieurement.
  12. Cliquez sur OK.
  13. Sélectionnez l'onglet Autorisations.
  14. Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
  15. Sélectionnez Ajouter des autorisations.
  16. Sélectionnez Joindre directement des règles.
  17. Recherchez et sélectionnez la règle AmazonS3FullAccess.
  18. Cliquez sur Suivant.
  19. Cliquez sur Ajouter des autorisations.

Configurer AWS Security Hub pour transférer les résultats avec EventBridge

  1. Connectez-vous à l'AWS Management Console.
  2. Dans la barre de recherche, saisissez Security Hub, puis sélectionnez-le dans la liste des services.
  3. Cliquez sur Paramètres.
  4. Dans la section Intégrations, recherchez EventBridge, puis cliquez sur Activer.
  5. Dans la barre de recherche, saisissez EventBridge, puis sélectionnez-le dans la liste des services.
  6. Dans la console EventBridge, cliquez sur Règles > Créer une règle.
  7. Fournissez la configuration de règle suivante :
    1. Nom de la règle: attribuez un nom descriptif à la règle (par exemple, SendSecurityHubFindingsToS3).
    2. Source d'événement: sélectionnez Services AWS.
    3. Nom du service: sélectionnez Security Hub (Hub de sécurité).
    4. Type d'événement: sélectionnez Résultats du Security Hub.
    5. Définir la cible: choisissez le bucket S3 comme cible des résultats.
    6. Bucket S3: sélectionnez le bucket dans lequel les résultats doivent être stockés.
      • Si vous n'avez pas encore configuré de bucket S3, créez-en un:
      • Accédez à la console S3 .
      • Cliquez sur Créer un bucket.
      • Indiquez un nom de bucket (par exemple, securityhub-findings-logs).
      • Cliquez sur Créer.
    7. Configurer les autorisations: EventBridge configure automatiquement les autorisations nécessaires pour lui permettre d'envoyer les résultats au bucket S3 spécifié (si vous utilisez un bucket personnalisé, assurez-vous que les autorisations S3 appropriées sont en place pour permettre à EventBridge d'écrire des journaux dans le bucket).
  8. Cliquez sur Créer.

Configurer un flux dans Google SecOps pour ingèrer les journaux AWS Security Hub

  1. Accédez à SIEM Settings > Feeds (Paramètres du SIEM > Flux).
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux AWS Security Hub).
  4. Sélectionnez Amazon S3 comme Type de source.
  5. Sélectionnez AWS Security Hub comme type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants:

    • Region (Région) : région dans laquelle se trouve le bucket Amazon S3.
    • URI S3: URI du bucket.
      • s3://your-log-bucket-name/
        • Remplacez your-log-bucket-name par le nom réel du bucket.
    • Un URI est: sélectionnez Répertoire ou Répertoire incluant des sous-répertoires.
    • Options de suppression de la source: sélectionnez l'option de suppression en fonction de vos préférences.

    • ID de clé d'accès: clé d'accès utilisateur ayant accès au bucket S3.

    • Clé d'accès secrète: clé secrète de l'utilisateur ayant accès au bucket S3.

    • Espace de noms des éléments: espace de noms des éléments.

    • Libellés d'ingestion: libellé à appliquer aux événements de ce flux.

  8. Cliquez sur Suivant.

  9. Vérifiez la configuration de votre nouveau flux dans l'écran Finaliser, puis cliquez sur Envoyer.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
account principal.group.product_object_id ID du compte AWS associé à l'anomalie.
configurationItem.ARN target.resource.id Nom de ressource Amazon (ARN) de l'élément de configuration.
configurationItem.awsAccountId principal.user.userid ID de compte AWS de l'élément de configuration.
configurationItem.awsRegion target.asset.location.country_or_region Région AWS de l'élément de configuration.
configurationItem.configuration.complianceType security_result.summary Type de conformité de l'élément de configuration.
configurationItem.configuration.configRuleList[].complianceType security_result.summary État de conformité pour chaque règle de configuration.
configurationItem.configuration.configRuleList[].configRuleArn security_result.rule_id ARN de la règle AWS Config.
configurationItem.configuration.configRuleList[].configRuleId security_result.about.labels.configRuleId ID de la règle AWS Config.
configurationItem.configuration.configRuleList[].configRuleName security_result.rule_name Nom de la règle AWS Config.
configurationItem.configuration.privateIpAddress target.ip Adresse IP privée de l'élément de configuration.
configurationItem.configuration.publicIpAddress target.ip Adresse IP publique de l'élément de configuration.
configurationItem.configurationItemCaptureTime target.asset.attribute.creation_time Heure de capture de l'élément de configuration, convertie en code temporel.
configurationItem.configurationItemStatus target.asset.attribute.labels.Configuration Item Status État de l'élément de configuration.
configurationItem.relationships[].resourceId target.asset.attribute.cloud.vpc.id ID de la ressource associée, utilisé pour l'ID de VPC s'il correspond à "vpc".
configurationItem.resourceId target.resource.id ID de ressource de l'élément de configuration.
configurationItem.resourceName target.resource.name Nom de la ressource.
configurationItem.resourceType target.resource.resource_subtype Type de ressource de l'élément de configuration.
configurationItem.tags.Contact principal.user.user_display_name OU principal.user.email_addresses Coordonnées extraites des balises, analysées pour identifier l'adresse e-mail et le nom d'utilisateur.
configurationItem.tags.OS/configurationItem.tags.Os target.asset.platform_software.platform Système d'exploitation à partir des balises, mappé sur la plate-forme s'il s'agit de "Windows" ou de "Linux".
configurationItemDiff.changeType metadata.event_type Type de modification, mappé sur RESOURCE_WRITTEN ou RESOURCE_CREATION.
detail.accountId principal.group.product_object_id ID du compte AWS associé à l'anomalie.
detail.actionDescription detail.actionName detail.description sec_result.description Description de la non-conformité.
detail.findings[].AwsAccountId principal.group.product_object_id ID du compte AWS associé à l'anomalie.
detail.findings[].CompanyName detail.findings[].CreatedAt detail.findings[].Description sec_result.description Description de la non-conformité.
detail.findings[].FindingProviderFields.Severity.Label sec_result.severity Libellé de gravité de l'anomalie, converti en majuscules.
detail.findings[].FindingProviderFields.Types[] detail.findings[].FirstObservedAt detail.findings[].GeneratorId detail.findings[].Id detail.findings[].LastObservedAt detail.findings[].ProductArn detail.findings[].ProductFields. Voir ci-dessous Divers champs utilisés pour les champs supplémentaires, le principal et les informations de cible.
detail.findings[].ProductName detail.findings[].RecordState detail.findings[].Region target.location.name Région AWS de l'anomalie.
detail.findings[].Resources[].Details. Voir ci-dessous Informations sur les ressources impliquées dans le résultat.
detail.findings[].Resources[].Id target.resource.product_object_id ID de la ressource.
detail.findings[].Resources[].Partition detail.findings[].Resources[].Region target.location.name Région AWS de la ressource.
detail.findings[].Resources[].Tags detail.findings[].Resources[].Type target.resource.resource_type, target.resource.resource_subtype, metadata.event_type Type de ressource, utilisé pour le mappage du type de ressource, du sous-type et du type d'événement.
detail.findings[].Sample detail.findings[].SchemaVersion detail.findings[].Severity.Label detail.findings[].SourceUrl detail.findings[].Title sec_result.summary Titre de la découverte.
detail.findings[].Types[] detail.findings[].UpdatedAt detail.findings[].Workflow.Status detail.findings[].WorkflowState detail-type metadata.product_event_type Type de détails de l'événement.
id metadata.product_log_id ID de l'événement.
region target.location.name Région AWS de l'événement.
resources[] source time version (logique de l'analyseur) metadata.event_timestamp Heure de création de l'entrée de journal d'origine, utilisée comme code temporel de l'événement.
(Logique de l'analyseur) metadata.log_type Défini sur "AWS_SECURITY_HUB".
(Logique de l'analyseur) metadata.product_name Définissez-le sur "AWS Security Hub".
(Logique de l'analyseur) metadata.vendor_name Définissez-le sur "AMAZON".
(Logique de l'analyseur) target.asset.attribute.cloud.environment Définissez-le sur "AMAZON_WEB_SERVICES".
(Logique de l'analyseur) metadata.event_type La valeur par défaut est "USER_RESOURCE_ACCESS" si elle n'est pas mappée à partir de Resources[].Type ou configurationItemDiff.changeType. Définissez-le sur "STATUS_UPDATE" si configurationItems est présent et qu'aucun autre type d'événement n'est défini. Défini sur "RESOURCE_READ" si configurationItem ou configurationItems est présent et que l'état est "OK" ou "ResourceDiscovered". Défini sur "RESOURCE_DELETION" si configurationItem ou configurationItems est présent et que l'état est "ResourceDeleted".
(Logique de l'analyseur) metadata.description Définissez la valeur sur "guardduty" si detail.findings[].ProductFields.aws/guardduty/service/serviceName est présent.
(Logique de l'analyseur) target.asset.attribute.cloud.vpc.resource_type Définissez la valeur sur "VPC_NETWORK" si configurationItems.relationships[].resourceId correspond à "vpc".
(Logique de l'analyseur) target.resource.resource_type Définissez cette valeur sur "VIRTUAL_MACHINE" si configurationItem ou configurationItems est présent. Définissez cette valeur sur "UNSPECIFIED" si aucun autre type de ressource n'est défini.
(Logique de l'analyseur) target.asset.platform_software.platform Défini sur "WINDOWS" ou "LINUX" en fonction de la présence de "Windows" ou "(Linux
(Logique de l'analyseur) disambiguation_key Ajouté lorsque plusieurs événements sont générés à partir d'une seule entrée de journal.

Modifications

2023-06-20

  • Amélioration:
  • Modification de "metadata.event_type" de "GENERIC_EVENT" à "USER_RESOURCE_ACCESS".

24/03/2023

  • Amélioration:
  • when "detail.findings.0.Resources.0.Type" == "AwsEcsTaskDefinition" -
  • Mappage de "target.resource.resource_type" sur "TASK".
  • "event_type" a été mappé sur "USER_RESOURCE_ACCESS".
  • Mappage de "detail.findings.0.ProductFields.Resources:0/Id" sur "principal.asset_id".
  • Tous les autres journaux défaillants ont été analysés en tant que GENERIC_EVENT, car STATUS_UPDATE n'était pas une bonne option d'analyse pour eux.

2022-08-22

  • Amélioration:
  • Le nom du fournisseur "AWS SECURITY HUB" a été remplacé par "AMAZON".
  • Modification de "AWS SECURITY HUB" en "AWS Security Hub" pour "product_name".
  • Analyse des nouveaux journaux au format JSON contenant "configurationItem" ou "configurationItems".
  • J'ai géré les journaux ingérés en tant que fichier d'importation en les séparant à l'aide d'une boucle for et en analysant chacun d'eux en tant qu'événement individuel.

2022-07-01

  • Analyseur créé

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.