Collecter les journaux AWS Aurora
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
- Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur: Créer un bucket.
- Enregistrez le nom et la région du bucket pour une utilisation ultérieure.
- Créez un utilisateur en suivant le guide de l'utilisateur Créer un utilisateur IAM.
- Sélectionnez l'utilisateur créé.
- Sélectionnez l'onglet Informations d'identification de sécurité.
- Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
- Sélectionnez Service tiers comme Cas d'utilisation.
- Cliquez sur Suivant.
- Facultatif: ajoutez une balise de description.
- Cliquez sur Créer une clé d'accès.
- 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.
- Cliquez sur OK.
- Sélectionnez l'onglet Autorisations.
- Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
- Sélectionnez Ajouter des autorisations.
- Sélectionnez Joindre directement des règles.
- Recherchez et sélectionnez les règles AmazonS3FullAccess et CloudWatchLogsFullAccess.
- Cliquez sur Suivant.
- Cliquez sur Ajouter des autorisations.
Configurer la surveillance améliorée
- Connectez-vous à l'AWS Management Console.
- Dans la barre de recherche, saisissez RDS, puis sélectionnez RDS dans la liste des services.
- Dans le tableau de bord RDS, sélectionnez Bases de données dans le volet de navigation.
- Sélectionnez le cluster Aurora que vous souhaitez surveiller.
- Dans la section Journaux et surveillance, cliquez sur Modifier.
- Accédez à la section Surveillance et activez Surveillance améliorée.
- Définissez le rôle de surveillance sur le rôle IAM approprié disposant des autorisations de publication dans CloudWatch Logs ou S3.
- Enregistrez les modifications et appliquez-les à votre cluster Aurora.
Configurer les journaux d'audit AWS Aurora
- Dans le tableau de bord RDS, sélectionnez Databases (Bases de données), puis cliquez sur votre cluster Aurora.
- Dans la section Journaux et surveillance, cliquez sur Modifier.
- Dans la section Options de base de données, assurez-vous que l'option Activer les journaux d'audit est sélectionnée.
- Sous Destination, sélectionnez S3, puis spécifiez le bucket S3 dans lequel les journaux seront stockés.
- 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.
- Dans le tableau de bord RDS, sélectionnez votre cluster Aurora.
- Dans la section Journaux et surveillance, assurez-vous que l'intégration des journaux CloudWatch est activée.
- Accédez à CloudWatch Logs (Journaux CloudWatch) et créez un groupe de journaux pour stocker les journaux Aurora.
- Sur l'écran Groupes de journaux, choisissez le nom de votre nouveau groupe de journaux.
- Sélectionnez Actions > Exporter des données vers Amazon S3.
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 À.
Dans Choisir un bucket S3, sélectionnez le compte associé au bucket Amazon S3.
Nom du bucket S3, sélectionnez un bucket Amazon S3.
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.
Sélectionnez Exporter pour exporter vos données de journal vers Amazon S3.
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
- Accédez à SIEM Settings > Feeds (Paramètres du SIEM > Flux).
- Cliquez sur Ajouter.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, AWS Aurora Logs).
- Sélectionnez Amazon S3 comme Type de source.
- Sélectionnez AWS Aurora comme Type de journal.
- Cliquez sur Suivant.
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.
- Remplacez
- 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.
Cliquez sur Suivant.
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.