Collecter les journaux AWS Aurora

Compatible avec:

Ce document explique comment ingérer les journaux AWS Aurora dans Google Security Operations. AWS Aurora est un service de base de données relationnelle géré qui offre des performances, une évolutivité et une disponibilité élevées. Dans cette intégration, vous allez configurer AWS Aurora pour qu'il transfère les journaux vers Google SecOps à des fins d'analyse, de surveillance et de 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.
  • Assurez-vous que votre cluster de base de données AWS Aurora est configuré et en cours d'exécution.

Configurer le bucket Amazon S3

  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 les règles AmazonS3FullAccess et CloudWatchLogsFullAccess.
  18. Cliquez sur Suivant.
  19. Cliquez sur Ajouter des autorisations.

Configurer la surveillance améliorée

  1. Connectez-vous à l'AWS Management Console.
  2. Dans la barre de recherche, saisissez RDS, puis sélectionnez RDS dans la liste des services.
  3. Dans le tableau de bord RDS, sélectionnez Bases de données dans le volet de navigation.
  4. Sélectionnez le cluster Aurora que vous souhaitez surveiller.
  5. Dans la section Journaux et surveillance, cliquez sur Modifier.
  6. Accédez à la section Surveillance et activez Surveillance améliorée.
  7. Définissez le rôle de surveillance sur le rôle IAM approprié disposant des autorisations de publication dans CloudWatch Logs ou S3.
  8. Enregistrez les modifications et appliquez-les à votre cluster Aurora.

Configurer les journaux d'audit AWS Aurora

  1. Dans le tableau de bord RDS, sélectionnez Databases (Bases de données), puis cliquez sur votre cluster Aurora.
  2. Dans la section Journaux et surveillance, cliquez sur Modifier.
  3. Dans la section Options de base de données, assurez-vous que l'option Activer les journaux d'audit est sélectionnée.
  4. Sous Destination, sélectionnez S3, puis spécifiez le bucket S3 dans lequel les journaux seront stockés.
  5. Cliquez sur Enregistrer les modifications pour appliquer les paramètres.

Facultatif: Configuration des journaux AWS Aurora à l'aide de CloudWatch

Pour bénéficier de fonctionnalités de surveillance supplémentaires, vous pouvez configurer CloudWatch Logs pour capturer les journaux Aurora.

  1. Dans le tableau de bord RDS, sélectionnez votre cluster Aurora.
  2. Dans la section Journaux et surveillance, assurez-vous que l'intégration des journaux CloudWatch est activée.
  3. Accédez à CloudWatch Logs (Journaux CloudWatch) et créez un groupe de journaux pour stocker les journaux Aurora.
  4. Sur l'écran Groupes de journaux, choisissez le nom de votre nouveau groupe de journaux.
  5. Sélectionnez Actions > Exporter des données vers Amazon S3.
  6. Sur l'écran Exporter des données vers Amazon S3, sous Définir l'exportation des données, définissez la période à exporter à l'aide des champs De et À.

  7. Dans Choisir un bucket S3, sélectionnez le compte associé au bucket Amazon S3.

  8. Nom du bucket S3, sélectionnez un bucket Amazon S3.

  9. Préfixe du bucket S3, saisissez la chaîne générée de manière aléatoire que vous avez spécifiée dans la règle du bucket.

  10. Sélectionnez Exporter pour exporter vos données de journal vers Amazon S3.

  11. Pour afficher l'état des données de journal que vous avez exportées vers Amazon S3, sélectionnez Actions > Afficher toutes les exportations vers Amazon S3.

Configurer un flux dans Google SecOps pour ingèrer des journaux AWS Aurora

  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, AWS Aurora Logs).
  4. Sélectionnez Amazon S3 comme Type de source.
  5. Sélectionnez AWS Aurora comme Type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants:

    • 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 Mappé directement à partir du champ account dans le journal brut.
column1 timestamp_epoch Mappé directement à partir du champ column1 dans le journal brut. Utilisé pour dériver metadata.event_timestamp.
column10 Variable Peut être principal.process.command_line, object ou number, en fonction du format de journal.
column11 ddl, response ou command_line2 Peut être principal.resource.resource_subtype (ddl), security_result.outcomes.value (réponse) ou une partie de principal.process.command_line (command_line2), selon le format de journalisation.
column12 operation, response ou command_line3 Peut être sr.summary (opération), security_result.outcomes.value (réponse) ou une partie de principal.process.command_line (command_line3) en fonction du format de journal.
column13 database ou response Peut être target.resource.name (base de données) ou security_result.outcomes.value (réponse) en fonction du format de journal.
column14 object Mappé directement sur principal.resource.product_object_id ou target_data.resource.name, en fonction du format de journalisation.
column15 command_line Mappé directement sur principal.process.command_line.
column16 response Mappé directement sur security_result.outcomes.value.
column2 timestamp ou timestamp_ms Mappé directement à partir du champ column2 dans le journal brut.
column3 ip ou hostname Peut être principal.ip ou principal.resource.name, en fonction du format de journal.
column4 port ou userid Peut être principal.port ou principal.user.userid, en fonction du format de journal.
column5 userid ou ip Peut être principal.user.userid ou principal.ip, selon le format de journal.
column6 hostname ou connection_id Peut être principal.resource.name ou network.session_id, selon le format de journal.
column7 connection_id ou query_id Peut être network.session_id ou principal.process.pid, selon le format du journal.
column8 operation Mappé directement sur sr.summary ou metadata.product_event_type.
column9 query_id ou database Peut être principal.process.pid ou target_data.resource.name, en fonction du format de journal.
command_line principal.process.command_line Mappé directement à partir du champ command_line extrait.
connection_id network.session_id Mappé directement à partir du champ connection_id extrait.
database target.resource.name Mappé directement à partir du champ database extrait. Dérivé de plusieurs champs tels que operation, command_line, has_principal_user et has_principal_machine via une logique conditionnelle dans l'analyseur. Il peut s'agir de RESOURCE_DELETION, RESOURCE_CREATION, RESOURCE_READ, RESOURCE_WRITTEN, USER_RESOURCE_ACCESS, USER_UNCATEGORIZED ou GENERIC_EVENT. Code codé en dur sur "AWS_AURORA". Mappé à partir de column8 ou dérivé de la logique de l'analyseur. Code codé en dur sur "AURORA". Code dur "AMAZON".
has_principal_machine has_principal_machine Défini sur "true" si principal.ip est présent, sinon initialisé sur "false".
has_principal_user has_principal_user Défini sur "true" si principal.user.userid est présent, sinon initialisé sur "false".
hostname principal.resource.name Mappé directement à partir du champ hostname extrait.
ip principal.ip Mappé directement à partir du champ ip extrait.
logevent.id security_result.detection_fields.value Enchâssé dans target.logEvents.logEvents, mappé avec la clé "id".
logevent.message security_result.detection_fields.value Enchâssé dans target.logEvents.logEvents, mappé avec la clé "message". Permet d'extraire principal.ip, time_unix, operation et user.
logevent.timestamp security_result.detection_fields.value Imbriquée dans target.logEvents.logEvents, mappée avec la clé "code temporel".
object target_data.resource.name ou principal.resource.product_object_id Mappé directement à partir du champ object extrait.
operation sr.summary Mappé directement à partir du champ operation extrait.
port principal.port Mappé directement à partir du champ port extrait.
query_id principal.process.pid Mappé directement à partir du champ query_id extrait.
response security_result.outcomes.value Mappé directement à partir du champ response extrait.
service principal.application Mappé directement à partir du champ service dans le journal brut.
src_ip principal.ip Extrait de logevent.message dans la structure target.logEvents.logEvents imbriquée.
target.logEvents.logGroup target.resource.attribute.labels.value Mappé avec la clé "logGroup".
target.logEvents.logStream target.resource.attribute.labels.value Mappé avec la clé "logStream".
target.logEvents.messageType target.resource.attribute.labels.value Mappé avec la clé "messageType".
target.logEvents.owner target.resource.attribute.labels.value Mappé avec la clé "owner".
timestamp_epoch metadata.event_timestamp Converti en metadata.event_timestamp à l'aide du filtre date.
user principal.user.userid Extrait de logevent.message dans la structure target.logEvents.logEvents imbriquée.
userid principal.user.userid Mappé directement à partir du champ userid extrait.

Modifications

2024-01-12

  • "logEvents.messageType", "logEvents.owner", "logEvents.logGroup" et "logEvents.logStream" ont été mappés sur "target.resource.attribute.labels".
  • "logEvents.logEvents.message", "logEvents.logEvents.timestamp" et "logEvents.logEvents.id" ont été mappés sur "securit_result.detection_fields".
  • Ajout d'un modèle Grok pour récupérer l'adresse IP à partir de "logEvents.logEvents.message" et mappage de "src_data" sur "principal.ip".
  • Mappage de "user" sur "principal.user.userid".

2023-11-02

  • Analyseur nouvellement créé.

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