Collecter des journaux AWS CloudWatch
Ce document explique comment ingérer les journaux AWS CloudWatch dans Google Security Operations. AWS CloudWatch est un service de surveillance et d'observabilité qui collecte des données opérationnelles sous forme de journaux, de métriques et d'événements. Cette intégration vous permet d'envoyer ces journaux à Google SecOps pour analyse et surveillance.
Avant de commencer
- Assurez-vous de disposer d'une instance Google SecOps.
- Assurez-vous de disposer d'un accès privilégié à AWS.
Créer un bucket Amazon S3
Nous vous recommandons d'utiliser un bucket créé spécifiquement pour les journaux CloudWatch.
- Ouvrez la console Amazon S3.
- Si nécessaire, vous pouvez modifier la région.
- Dans la barre de navigation, sélectionnez la région dans laquelle se trouvent vos journaux CloudWatch.
- Cliquez sur Créer un bucket.
- Nom du bucket: saisissez un nom pertinent pour le bucket.
- Region (Région) : sélectionnez la région dans laquelle se trouvent vos données de journaux CloudWatch.
- Cliquez sur Créer.
Créer un utilisateur IAM disposant d'un accès complet à Amazon S3 et à CloudWatch Logs
- Ouvrez la console IAM.
- Cliquez sur Utilisateurs > Ajouter un utilisateur.
- Saisissez un nom d'utilisateur (par exemple, CWExport).
- Sélectionnez Accès programmatique et Accès à la console de gestion AWS.
- Sélectionnez Mot de passe généré automatiquement ou Mot de passe personnalisé.
- Cliquez sur Next: Permissions (Suivant : Autorisations).
- Sélectionnez Joindre directement des règles existantes.
- Recherchez et sélectionnez les règles AmazonS3FullAccess et CloudWatchLogsFullAccess pour l'utilisateur.
- Cliquez sur Next: Tags (Suivant : Tags).
- Cliquez sur Suivant : Relire.
- Cliquez sur Créer un utilisateur.
Configurer les autorisations sur un bucket Amazon S3
- Dans la console Amazon S3, sélectionnez le bucket que vous avez créé précédemment.
- Cliquez sur Autorisations > Règle de bucket.
Dans l'Éditeur de règles de bucket, ajoutez la règle suivante.
{ "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::cw-exported-logs", "Principal": { "Service": "logs.us-east-1.amazonaws.com" } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/random-string/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } }, "Principal": { "Service": "logs.us-east-1.amazonaws.com" } } ] }
Modifiez et mettez à jour les variables
json
suivantes:- Remplacez
cw-exported-logs
par le nom de votre bucket S3. - Remplacez
random-string
par une chaîne de caractères générée de manière aléatoire. - Veillez à spécifier le bon point de terminaison régional pour Principal.
- Remplacez
Cliquez sur Enregistrer pour définir la règle que vous venez d'ajouter comme règle d'accès de votre bucket.
Configurer l'exportation CloudWatch
- Connectez-vous en tant qu'utilisateur IAM que vous avez créé précédemment.
- Ouvrez la console CloudWatch.
- Dans le menu de navigation, sélectionnez Groupes de journaux.
- Sélectionnez le nom d'un groupe de journaux existant ou créez-en un.
- Sélectionnez Actions > Exporter des données vers Amazon S3.
- Sur l'écran Exporter des données vers Amazon S3, recherchez Définir l'exportation des données.
- Définissez la période pour les données à exporter à l'aide des options De et À.
- 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 de 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 CloudWatch
- 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 CloudWatch Logs).
- Sélectionnez Amazon S3 comme Type de source.
- Sélectionnez AWS CloudWatch comme Type de journal.
- Cliquez sur Suivant.
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.
- 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.user.userid |
La valeur de account du journal brut est mappée sur le champ principal.user.userid . |
account_id |
principal.user.userid |
La valeur de account_id du journal brut est mappée sur le champ principal.user.userid . |
AlertId |
metadata.product_log_id |
La valeur de AlertId du journal brut est mappée sur le champ metadata.product_log_id . |
arrivalTimestamp |
metadata.event_timestamp |
La valeur de arrivalTimestamp du journal brut est convertie en code temporel et mappée sur le champ metadata.event_timestamp . |
attemptsMade |
additional.fields |
La valeur de attemptsMade du journal brut est convertie en chaîne et ajoutée en tant que paire clé-valeur à additional.fields avec la clé "Attempts Made" (Tentatives effectuées). |
awsAccountId |
principal.asset_id |
La valeur de awsAccountId du journal brut est précédée de "ID de compte AWS: " et mappée sur le champ principal.asset_id . |
billed_duration |
additional.fields |
La valeur de billed_duration du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "billed_duration". |
BytesIn |
network.received_bytes |
La valeur de BytesIn du journal brut est convertie en entier sans signature et mappée sur le champ network.received_bytes . |
cipher |
network.tls.cipher |
La valeur de cipher du journal brut est mappée sur le champ network.tls.cipher . |
Ciphers |
network.tls.client.supported_ciphers |
La valeur de Ciphers du journal brut est divisée par des virgules, et chaque valeur est ajoutée au tableau network.tls.client.supported_ciphers . |
cloudwatchLog |
security_result.description |
La valeur de cloudwatchLog du journal brut est mappée sur le champ security_result.description . |
CloudAccountId |
metadata.product_deployment_id |
La valeur de CloudAccountId du journal brut est mappée sur le champ metadata.product_deployment_id . |
CloudType |
target.resource.attribute.cloud.environment |
La valeur de CloudType dans le journal brut détermine la valeur de target.resource.attribute.cloud.environment . Si CloudType est "gcp", la valeur est "GOOGLE_CLOUD_PLATFORM". Si CloudType est "aws", la valeur est "AMAZON_WEB_SERVICES". Si CloudType est "azure", la valeur est "MICROSOFT_AZURE". |
Context.Execution.Id |
target.resource.attribute.labels |
La valeur de Context.Execution.Id du journal brut est ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "ID de contexte". |
Context.Execution.Name |
target.resource.attribute.labels |
La valeur de Context.Execution.Name du journal brut est ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "Nom du contexte". |
Context.Execution.RoleArn |
target.resource.product_object_id |
La valeur de Context.Execution.RoleArn du journal brut est mappée sur le champ target.resource.product_object_id . |
descr |
metadata.description |
La valeur de descr du journal brut, après suppression des espaces supplémentaires, est mappée sur le champ metadata.description , sauf si elle est "-". Si descr est vide, la valeur de log est utilisée à la place. |
destination.name |
target.location.country_or_region |
La valeur de destination.name du journal brut est mappée sur le champ target.location.country_or_region . |
destination.properties.prefix |
target.resource.attribute.labels |
La valeur de destination.properties.prefix du journal brut est ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "Préfixe des propriétés de destination". |
detail.additionalEventData.configRuleArn |
security_result.rule_id |
La valeur de detail.additionalEventData.configRuleArn du journal brut est mappée sur le champ security_result.rule_id . |
detail.additionalEventData.configRuleName |
security_result.rule_name |
La valeur de detail.additionalEventData.configRuleName du journal brut est mappée sur le champ security_result.rule_name . |
detail.additionalEventData.managedRuleIdentifier |
additional.fields |
La valeur de detail.additionalEventData.managedRuleIdentifier du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "managedRuleIdentifier". |
detail.additionalEventData.notificationJobType |
additional.fields |
La valeur de detail.additionalEventData.notificationJobType du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "notificationJobType". |
detail.awsAccountId |
principal.asset_id |
La valeur de detail.awsAccountId du journal brut est précédée de "ID de compte AWS: " et mappée sur le champ principal.asset_id . |
detail.awsRegion |
principal.location.name |
La valeur de detail.awsRegion du journal brut est mappée sur le champ principal.location.name . |
detail.configRuleArn |
security_result.rule_id |
La valeur de detail.configRuleArn du journal brut est mappée sur le champ security_result.rule_id . |
detail.configRuleName |
security_result.rule_name |
La valeur de detail.configRuleName du journal brut est mappée sur le champ security_result.rule_name . |
detail.configurationItem.awsAccountId |
principal.user.userid |
La valeur de detail.configurationItem.awsAccountId du journal brut est mappée sur le champ principal.user.userid . |
detail.configurationItem.awsRegion |
target.location.country_or_region |
La valeur de detail.configurationItem.awsRegion du journal brut est mappée sur le champ target.location.country_or_region . |
detail.configurationItem.configuration.complianceType |
security_result.summary |
La valeur de detail.configurationItem.configuration.complianceType du journal brut est mappée sur le champ security_result.summary . |
detail.configurationItem.configuration.targetResourceId |
target.resource.attribute.labels |
La valeur de detail.configurationItem.configuration.targetResourceId du journal brut est ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "configurationItem configuration targetResourceId". |
detail.configurationItem.configuration.targetResourceType |
target.resource.attribute.labels |
La valeur de detail.configurationItem.configuration.targetResourceType du journal brut est ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "configurationItem configuration targetResourceType". |
detail.configurationItem.configurationItemCaptureTime |
_target.asset.attribute.creation_time |
La valeur de detail.configurationItem.configurationItemCaptureTime du journal brut est convertie en code temporel et mappée sur le champ _target.asset.attribute.creation_time . |
detail.configurationItem.configurationItemStatus |
target.resource.attribute.labels |
La valeur de detail.configurationItem.configurationItemStatus du journal brut est ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "configurationItem configurationItemStatus". |
detail.configurationItem.configurationStateId |
target.resource.attribute.labels |
La valeur de detail.configurationItem.configurationStateId du journal brut est convertie en chaîne et ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "configurationItem configurationStateId". |
detail.configurationItem.resourceId |
target.resource.id |
La valeur de detail.configurationItem.resourceId du journal brut est mappée sur le champ target.resource.id . |
detail.configurationItem.resourceType |
target.resource.resource_subtype |
La valeur de detail.configurationItem.resourceType du journal brut est mappée sur le champ target.resource.resource_subtype . |
detail.configurationItemDiff.changedProperties.Configuration.configRuleList.1.updatedValue.configRuleArn |
security_result.rule_id |
La valeur de detail.configurationItemDiff.changedProperties.Configuration.configRuleList.1.updatedValue.configRuleArn du journal brut est mappée sur le champ security_result.rule_id . |
detail.eventCategory |
security_result.category_details |
La valeur de detail.eventCategory du journal brut est mappée sur le champ security_result.category_details . |
detail.eventID |
metadata.product_log_id |
La valeur de detail.eventID du journal brut est mappée sur le champ metadata.product_log_id . |
detail.eventName |
additional.fields |
La valeur de detail.eventName du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "Nom de l'événement". |
detail.eventSource |
target.application |
La valeur de detail.eventSource du journal brut est mappée sur le champ target.application . |
detail.eventType |
additional.fields |
La valeur de detail.eventType du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "Type d'événement". |
detail.eventVersion |
metadata.product_version |
La valeur de detail.eventVersion du journal brut est mappée sur le champ metadata.product_version . |
detail.managementEvent |
additional.fields |
La valeur de detail.managementEvent du journal brut est convertie en chaîne et ajoutée en tant que paire clé-valeur à additional.fields avec la clé "detail managementEvent". |
detail.messageType |
target.resource.attribute.labels |
La valeur detail.messageType du journal brut est ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "Type de message". |
detail.newEvaluationResult.complianceType |
security_result.summary |
La valeur de detail.newEvaluationResult.complianceType du journal brut est mappée sur le champ security_result.summary . |
detail.newEvaluationResult.configRuleInvokedTime |
additional.fields |
La valeur de detail.newEvaluationResult.configRuleInvokedTime du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "newEvaluationResult_configRuleInvokedTime". |
detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName |
additional.fields |
La valeur de detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "newEvaluationResult_configRuleName". |
detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId |
additional.fields |
La valeur de detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "newEvaluationResult_resourceId". |
detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType |
additional.fields |
La valeur de detail.newEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "newEvaluationResult_resourceType". |
detail.newEvaluationResult.resultRecordedTime |
additional.fields |
La valeur de detail.newEvaluationResult.resultRecordedTime du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "newEvaluationResult_resultRecordedTime". |
detail.oldEvaluationResult.configRuleInvokedTime |
additional.fields |
La valeur de detail.oldEvaluationResult.configRuleInvokedTime du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "oldEvaluationResult_configRuleInvokedTime". |
detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName |
additional.fields |
La valeur de detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.configRuleName du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "oldEvaluationResult_configRuleName". |
detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId |
additional.fields |
La valeur de detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceId du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "oldEvaluationResult_resourceId". |
detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType |
additional.fields |
La valeur de detail.oldEvaluationResult.evaluationResultIdentifier.evaluationResultQualifier.resourceType du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "oldEvaluationResult_resourceType". |
detail.oldEvaluationResult.resultRecordedTime |
additional.fields |
La valeur de detail.oldEvaluationResult.resultRecordedTime du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "oldEvaluationResult_resultRecordedTime". |
detail.readOnly |
additional.fields |
La valeur de detail.readOnly du journal brut est convertie en chaîne et ajoutée en tant que paire clé-valeur à additional.fields avec la clé "detail readOnly". |
detail.recipientAccountId |
target.resource.attribute.labels |
La valeur de detail.recipientAccountId du journal brut est ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "ID de compte destinataire". |
detail.recordVersion |
metadata.product_version |
La valeur de detail.recordVersion du journal brut est mappée sur le champ metadata.product_version . |
detail.requestID |
target.resource.attribute.labels |
La valeur de detail.requestID du journal brut est ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "ID de la requête détaillée". |
detail.resourceType |
target.resource.resource_subtype |
La valeur de detail.resourceType du journal brut est mappée sur le champ target.resource.resource_subtype . |
detail.s3Bucket |
about.resource.name |
La valeur de detail.s3Bucket du journal brut est mappée sur le champ about.resource.name . |
detail.s3ObjectKey |
target.resource.attribute.labels |
La valeur de detail.s3ObjectKey du journal brut est ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "s3ObjectKey". |
detail.userAgent |
network.http.user_agent |
La valeur de detail.userAgent du journal brut est mappée sur le champ network.http.user_agent . |
detail.userIdentity.accessKeyId |
target.user.userid |
La valeur de detail.userIdentity.accessKeyId du journal brut est mappée sur le champ target.user.userid . |
detail.userIdentity.accountId |
metadata.product_deployment_id |
La valeur de detail.userIdentity.accountId du journal brut est mappée sur le champ metadata.product_deployment_id . |
detail.userIdentity.arn |
target.user.userid |
La valeur de detail.userIdentity.arn du journal brut est mappée sur le champ target.user.userid . |
detail.userIdentity.principalId |
principal.user.product_object_id |
La valeur de detail.userIdentity.principalId du journal brut est mappée sur le champ principal.user.product_object_id . |
detail.userIdentity.sessionContext.attributes.mfaAuthenticated |
principal.user.attribute.labels |
La valeur de detail.userIdentity.sessionContext.attributes.mfaAuthenticated du journal brut est ajoutée en tant que paire clé-valeur à principal.user.attribute.labels avec la clé "mfaAuthenticated". |
detail.userIdentity.sessionContext.sessionIssuer.userName |
target.user.user_display_name |
La valeur de detail.userIdentity.sessionContext.sessionIssuer.userName du journal brut est mappée sur le champ target.user.user_display_name . |
detail.userIdentity.type |
principal.resource.type |
La valeur de detail.userIdentity.type du journal brut est mappée sur le champ principal.resource.type . |
detail-type |
metadata.product_event_type |
La valeur de detail-type du journal brut est mappée sur le champ metadata.product_event_type . |
device |
principal.asset.product_object_id |
La valeur de device du journal brut est mappée sur le champ principal.asset.product_object_id . |
digestPublicKeyFingerprint |
target.file.sha1 |
La valeur de digestPublicKeyFingerprint du journal brut est mappée sur le champ target.file.sha1 . |
digestS3Bucket |
principal.resource.name |
La valeur de digestS3Bucket du journal brut est mappée sur le champ principal.resource.name . |
digestS3Object |
principal.asset.asset_id |
La valeur de digestS3Object du journal brut est précédée de "Objet S3: " et mappée sur le champ principal.asset.asset_id . |
digestSignatureAlgorithm |
network.tls.cipher |
La valeur de digestSignatureAlgorithm du journal brut est mappée sur le champ network.tls.cipher . |
digestStartTime |
metadata.event_timestamp |
La valeur de digestStartTime du journal brut est convertie en code temporel et mappée sur le champ metadata.event_timestamp . |
dimensions.VolumeId |
additional.fields |
La valeur de dimensions.VolumeId du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "VolumeId". |
duration |
additional.fields |
La valeur de duration du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "durée". |
errorCode |
security_result.rule_name |
La valeur de errorCode du journal brut est mappée sur le champ security_result.rule_name . |
errorMessage |
security_result.summary |
La valeur de errorMessage du journal brut est mappée sur le champ security_result.summary . |
executionId |
principal.process.pid |
La valeur de executionId du journal brut est mappée sur le champ principal.process.pid . |
host |
principal.hostname , principal.ip |
La valeur de host du journal brut, avec les traits d'union remplacés par des points, est analysée en tant qu'adresse IP et mappée sur le champ principal.ip si elle est valide. Sinon, il est mappé sur le champ principal.hostname . |
http_verb |
network.http.method |
La valeur http_verb du journal brut est convertie en majuscules et mappée sur le champ network.http.method . |
kubernetes.container_hash |
additional.fields |
La valeur de kubernetes.container_hash du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "container_hash". |
kubernetes.container_image |
additional.fields |
La valeur de kubernetes.container_image du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "container_image". |
kubernetes.container_name |
additional.fields |
La valeur de kubernetes.container_name du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "container_name". |
kubernetes.docker_id |
principal.asset_id |
La valeur de kubernetes.docker_id du journal brut est précédée de "id: " et mappée sur le champ principal.asset_id . |
kubernetes.host |
principal.hostname , principal.ip |
La valeur de kubernetes.host du journal brut, avec les traits d'union remplacés par des points, est analysée en tant qu'adresse IP et mappée sur le champ principal.ip si elle est valide. Sinon, il est mappé sur le champ principal.hostname . |
kubernetes.namespace |
principal.namespace |
La valeur de kubernetes.namespace du journal brut est mappée sur le champ principal.namespace . |
kubernetes.namespace_name |
principal.namespace |
La valeur de kubernetes.namespace_name du journal brut est mappée sur le champ principal.namespace . |
kubernetes.pod_id |
principal.asset.asset_id |
La valeur de kubernetes.pod_id du journal brut est précédée de "pod_id: " et mappée sur le champ principal.asset.asset_id . |
kubernetes.pod_name |
additional.fields |
La valeur de kubernetes.pod_name du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "nom du pod". |
lambdaArn |
principal.hostname |
La valeur de lambdaArn du journal brut est mappée sur le champ principal.hostname . |
level |
security_result.severity |
La valeur de level dans le journal brut détermine la valeur de security_result.severity . Si level est "Info", la valeur est "INFORMATIONAL". Si level est "Error", la valeur est "ERROR". Si level est défini sur "Warning" (Avertissement), la valeur est "MEDIUM" (MOYENNE). |
log |
metadata.description |
La valeur de log du journal brut est mappée sur le champ metadata.description si descr est vide. |
logFiles |
about |
Pour chaque élément du tableau logFiles du journal brut, un objet about est créé avec file.full_path défini sur s3Object , asset.hostname défini sur s3Bucket et file.sha256 défini sur hashValue . |
log_processed.cause |
security_result.summary |
La valeur de log_processed.cause du journal brut est mappée sur le champ security_result.summary . |
log_processed.ids |
intermediary.hostname |
Pour chaque élément du tableau log_processed.ids du journal brut, un objet intermediary est créé, avec hostname défini sur la valeur de l'élément. |
log_processed.level |
security_result.severity |
La valeur de log_processed.level du journal brut est mappée sur le champ security_result.severity . |
log_processed.msg |
metadata.description |
La valeur de log_processed.msg du journal brut est mappée sur le champ metadata.description . |
log_processed.ts |
metadata.event_timestamp |
La valeur de log_processed.ts du journal brut est convertie en code temporel et mappée sur le champ metadata.event_timestamp . |
log_type |
metadata.log_type |
La valeur de log_type du journal brut est mappée sur le champ metadata.log_type . Il s'agit d'un champ personnalisé ajouté pour le contexte. |
logevent.message |
security_result.description |
La valeur de logevent.message du journal brut est mappée sur le champ security_result.description . Il est également analysé à l'aide de grok pour extraire des champs supplémentaires. |
logGroup |
security_result.about.resource.name |
La valeur de logGroup du journal brut est mappée sur le champ security_result.about.resource.name . |
logStream |
security_result.about.resource.attribute.labels |
La valeur de logStream du journal brut est ajoutée en tant que paire clé-valeur à security_result.about.resource.attribute.labels avec la clé "logStream". |
memory_used |
additional.fields |
La valeur de memory_used du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "memory_used". |
metric_name |
additional.fields |
La valeur de metric_name du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "metric_name". |
metric_stream_name |
additional.fields |
La valeur de metric_stream_name du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "metric_stream_name". |
namespace |
principal.namespace |
La valeur de namespace du journal brut est mappée sur le champ principal.namespace . |
owner |
principal.user.userid |
La valeur de owner du journal brut est mappée sur le champ principal.user.userid . |
parameters |
additional.fields |
La valeur de parameters du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "Paramètres". |
Path |
principal.process.file.full_path |
La valeur de Path du journal brut est mappée sur le champ principal.process.file.full_path . |
pid |
principal.process.pid |
La valeur de pid du journal brut est mappée sur le champ principal.process.pid . |
PolicyName |
security_result.rule_name |
La valeur de PolicyName du journal brut est mappée sur le champ security_result.rule_name . |
prin_host |
principal.hostname |
La valeur de prin_host du journal brut est mappée sur le champ principal.hostname . |
principal_hostname |
principal.hostname |
La valeur de principal_hostname du journal brut est mappée sur le champ principal.hostname . |
process |
principal.application |
La valeur de process du journal brut est mappée sur le champ principal.application . |
rawData |
additional.fields |
La valeur de rawData du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "Données brutes". |
Recommendation |
security_result.detection_fields |
La valeur de Recommendation du journal brut est ajoutée en tant que paire clé-valeur à security_result.detection_fields avec la clé "Recommandation". |
referral_url |
network.http.referral_url |
La valeur de referral_url du journal brut est mappée sur le champ network.http.referral_url . |
region |
principal.location.name |
La valeur de region du journal brut est mappée sur le champ principal.location.name . |
resp_code |
network.http.response_code |
La valeur de resp_code du journal brut est convertie en entier et mappée sur le champ network.http.response_code . |
resource_url |
network.http.referral_url |
La valeur de resource_url du journal brut est mappée sur le champ network.http.referral_url . |
ResourceType |
target.resource.resource_subtype |
La valeur de ResourceType du journal brut est mappée sur le champ target.resource.resource_subtype . |
response_body |
additional.fields |
La valeur de response_body du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "Corps de la réponse". |
Role |
target.resource.product_object_id |
La valeur de Role du journal brut est mappée sur le champ target.resource.product_object_id . |
s3_bucket_path |
target.file.full_path |
La valeur de s3_bucket_path du journal brut est mappée sur le champ target.file.full_path . |
sec_result.category |
security_result.category |
La valeur de sec_result.category est dérivée de la logique de l'analyseur. Si descr contient "l'authentification est requise", la valeur est "AUTH_VIOLATION". |
sec_result.description |
security_result.description |
La valeur de sec_result.description est dérivée de la logique de l'analyseur. Elle est définie sur la valeur cloudwatchLog , le cas échéant. |
sec_result.severity |
security_result.severity |
La valeur de sec_result.severity est dérivée de la logique de l'analyseur. Il est défini en fonction de la valeur de severity ou level . |
sec_result.summary |
security_result.summary |
La valeur de sec_result.summary est dérivée de la logique de l'analyseur. Il est défini sur la valeur log_processed.cause ou errorMessage , le cas échéant. |
security_result |
security_result |
L'objet security_result est construit à partir de divers champs et de la logique d'analyseur. |
serverId |
additional.fields |
La valeur de serverId du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "server_id". |
severity |
security_result.severity |
La valeur severity du journal brut, convertie en majuscules et normalisée, est mappée sur le champ security_result.severity . |
Source |
principal.hostname |
La valeur de Source du journal brut est mappée sur le champ principal.hostname . |
source |
principal.hostname |
La valeur de source du journal brut est mappée sur le champ principal.hostname . |
SourceIP |
principal.ip |
La valeur de SourceIP du journal brut est mappée sur le champ principal.ip . |
src_port |
principal.port |
Si src_port est "80", il est converti en entier et mappé sur le champ principal.port , et network.application_protocol est défini sur "HTTP". |
stream |
additional.fields |
La valeur de stream du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "stream". |
subscriptionFilters |
security_result.about.resource.attribute.labels |
Pour chaque élément du tableau subscriptionFilters du journal brut, une paire clé-valeur est ajoutée à security_result.about.resource.attribute.labels avec la clé "subscriptionFilter" et la valeur du tableau. |
support_contact |
target.resource.attribute.labels |
La valeur de support_contact du journal brut est ajoutée en tant que paire clé-valeur à target.resource.attribute.labels avec la clé "Contact d'assistance". |
t_ip |
target.ip |
La valeur de t_ip du journal brut, après suppression des traits d'union, est analysée en tant qu'adresse IP et mappée sur le champ target.ip si elle aboutit. |
time |
metadata.event_timestamp |
La valeur de time du journal brut est convertie en code temporel et mappée sur le champ metadata.event_timestamp . |
timestamp |
metadata.event_timestamp |
La valeur de timestamp du journal brut est convertie en code temporel à l'aide de différents formats et mappée sur le champ metadata.event_timestamp . |
tls |
network.tls.version |
La valeur de tls du journal brut est mappée sur le champ network.tls.version . |
transferDetails.serverId |
additional.fields |
La valeur de transferDetails.serverId du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "server_id". |
transferDetails.sessionId |
network.session_id |
La valeur de transferDetails.sessionId du journal brut est mappée sur le champ network.session_id . |
transferDetails.username |
principal.user.user_display_name |
La valeur de transferDetails.username du journal brut est mappée sur le champ principal.user.user_display_name . |
ts |
metadata.event_timestamp |
La valeur de ts du journal brut, combinée au fuseau horaire, le cas échéant, est convertie en code temporel et mappée sur le champ metadata.event_timestamp . |
type |
metadata.product_event_type |
La valeur de type du journal brut est mappée sur le champ metadata.product_event_type . |
unit |
additional.fields |
La valeur de unit du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "unit". |
url |
target.url |
La valeur de url du journal brut est mappée sur le champ target.url . |
url_back_to_product |
metadata.url_back_to_product |
La valeur de url_back_to_product du journal brut est mappée sur le champ metadata.url_back_to_product . |
User |
principal.user.userid |
La valeur de User du journal brut est mappée sur le champ principal.user.userid . |
user |
target.user.userid , metadata.event_type , extensions.auth.mechanism |
Si user est présent, metadata.event_type est défini sur "USER_LOGIN", extensions.auth.mechanism est défini sur "NETWORK" et la valeur de user est mappée sur target.user.userid . |
value.count |
additional.fields |
La valeur de value.count du journal brut est convertie en chaîne et ajoutée en tant que paire clé-valeur à additional.fields avec la clé "count". |
value.max |
additional.fields |
La valeur de value.max du journal brut est convertie en chaîne et ajoutée en tant que paire clé-valeur à additional.fields avec la clé "max". |
value.min |
additional.fields |
La valeur de value.min du journal brut est convertie en chaîne et ajoutée en tant que paire clé-valeur à additional.fields avec la clé "min". |
value.sum |
additional.fields |
La valeur de value.sum du journal brut est convertie en chaîne et ajoutée en tant que paire clé-valeur à additional.fields avec la clé "sum". |
workflowId |
additional.fields |
La valeur de workflowId du journal brut est ajoutée en tant que paire clé-valeur à additional.fields avec la clé "workflowId". |
Modifications
2024-02-12
- Amélioration:
- Code temporel mappé sur UNIX_MS.
2023-09-02
- Amélioration:
- Ajout d'un "bloc kv" pour analyser les journaux au format clé-valeur.
- Mappage de "SourceIP" sur "principal.ip".
- Mappage de "prin_host" sur "principal.hostname".
- Mappage de "User" sur "principal.user.userid".
- Mappage de "Ciphers" sur "network.tls.client.supported_ciphers".
- Mappage de "executionId" sur "principal.process.pid".
- Mappage de "transferDetails.sessionId" sur "network.session_id".
- Mappage de "transferDetails.username" sur "principal.user.user_display_name".
- Mappage de "transferDetails.serverId", "workflowId", "details.input.initialFileLocation.etag", "details.input.initialFileLocation.backingStore", "details.input.initialFileLocation.bucket", "details.input.initialFileLocation.key",
- "Mode", "Kex" à "additional.fields".
- Mappage de "BytesIn" sur "network.received_bytes".
- "Role" a été mappé sur "target.resource.product_object_id".
2023-08-18
- Amélioration:
- Ajout d'un format Grok pour analyser les journaux bruts non analysés.
2023-07-07
- Amélioration:
- Ajout de la compatibilité avec les journaux JSON liés à "logEvents".
2022-12-17
- "CloudType" a été mappé sur "target.resource.attribute.cloud.environment".
- Mappage de "AlertId" sur "metadata.product_log_id".
- Mappage de "ResourceType" sur "target.resource.resource_subtype".
- "ResourceRegion" a été mappé sur "target.location.country_or_region".
- Mappage de "Recommandation" sur "security_result.detection_fields".
- Mappage de "PolicyName" et "detail.additionalEventData.configRuleName" sur "security_result.rule_name".
- "detail-type" a été mappé sur "metadata.product_event_type".
- Mappage de "region" et "detail.awsRegion" sur "principal.location.name".
- Mappage de "detail.eventSource" sur "target.application".
- "detail.requestID" a été mappé sur "target.resource.attribute.labels".
- Mappage de "detail.userAgent" sur "network.http.user_agent".
- "detail.eventVersion" a été mappé sur "metadata.product_version".
- Mappage de "detail.userIdentity.accountId" sur "metadata.product_deployment_id".
- Mappage de "detail.userIdentity.accessKeyId" sur "target.user.userid".
- Mappage de "detail.userIdentity.type" sur "principal.resource.type".
- Mappage de "detail.userIdentity.principalId" sur "principal.user.product_object_id".
- Mappage de "detail.user.arn" sur "target.user.userid".
- Mappage de "detail.user.sessionContext.sessionIssuer.userName" sur "target.user.user_display_name".
- Mappage de "detail.user.mfaAuthenticated" sur "principal.user.attribute.labels".
- "detail.recipientAccountId" a été mappé sur "target.resource.attribute.labels".
- Mappage de "detail.managementEvent", "detail.eventType", "detail.readOnly", "detail.eventName", "detail.additionalEventData.notificationJobType", "detail.additionalEventData.managedRuleIdentifier", "duration", "billed_duration", "memory_used" sur "additional.fields".
- Mappage de "detail.eventCategory" sur "security_result.category_details".
- Mappage de "detail.eventID" sur "metadata.product_log_id".
- Mappage de "detail.additionalEventData.configRuleArn" sur "security_result.rule_id".
- Mappage de "level" sur "security_result.severity".
- Mappage de "src_port" sur "principal.port".
- "request_id" a été mappé sur "target.resource.attribute.labels".
- Mappage de "url" sur "target.url".
2022-09-03
- Amélioration:
- Ajout de grok pour analyser les journaux nouvellement ingérés.
- "package" a été mappé sur "event.idm.read_only_udm.principal.process.command_line".
- Mappage de "session_id" sur "event.idm.read_only_udm.network.session_id".
- "network_dir" a été mappé sur "event.idm.read_only_udm.network.direction".
- "port" a été mappé sur "event.idm.read_only_udm.target.port".
- "digestPublicKeyFingerprint" a été remappé de "additional.fields" à "event.idm.read_only_udm.target.file.sha1".
- Ajout d'autres niveaux de journalisation tels que "AUDIT", "TRACE", "DEBUG", "NOTICE" et "ERROR" pour le mappage de la gravité.
- Duplication de la valeur de "target.ip" dans "principal.ip" pour définir event_type sur "STATUS_UPDATE", ce qui réduit le pourcentage générique.
- Ajout de conditions pour "event_type" "USER_UNCATEGORIZED", "NETWORK_HTTP", "NETWORK_CONNECTION", "STATUS_UPADTE" afin de réduire le pourcentage générique.
2022-08-11
- Correction de bug : "digestS3Bucket" a été remappé sur "principal.resource.name".
- "kubernetes.pod_name" a été remappé sur "additional.fields".
2022-05-27
- Amélioration:
- La valeur stockée dans metadata.product_name a été modifiée pour indiquer "AWS CloudWatch" et metadata.vendor_name pour indiquer "AMAZON".
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.