Collecter les journaux d'audit Tanium

Compatible avec :

Ce document explique comment ingérer des journaux d'audit Tanium dans Google Security Operations à l'aide d'Amazon S3 et de la fonctionnalité d'exportation S3 native de Tanium Connect. L'analyseur extrait les journaux, en effaçant d'abord de nombreux champs par défaut. Il analyse ensuite le message du journal à l'aide de grok et du filtre JSON, en extrayant des champs tels que l'horodatage, l'adresse IP de l'appareil et les détails de l'audit. Le parseur mappe ces champs extraits à l'UDM, en gérant différents types de données et la logique conditionnelle pour remplir les champs UDM appropriés en fonction de la présence et des valeurs d'attributs spécifiques des journaux d'audit Tanium.

Avant de commencer

Assurez-vous de remplir les conditions suivantes :

  • Une instance Google SecOps
  • Accès privilégié à Tanium Connect et à la console Tanium
  • Accès privilégié à AWS (S3, IAM)

Créer un bucket Amazon S3

  1. Ouvrez la console Amazon S3.
  2. Si nécessaire, vous pouvez modifier la région.
    • Dans la barre de navigation, sélectionnez la région dans laquelle vous souhaitez que vos journaux d'audit Tanium soient stockés.
  3. Cliquez sur Créer un bucket.
    • Nom du bucket : saisissez un nom explicite pour le bucket (par exemple, tanium-audit-logs).
    • Région : sélectionnez la région de votre choix (par exemple, us-east-1).
    • Cliquez sur Créer.

Créer un utilisateur IAM avec un accès complet à Amazon S3

  1. Ouvrez la console IAM.
  2. Cliquez sur Utilisateurs > Ajouter un utilisateur.
  3. Saisissez un nom d'utilisateur (par exemple, tanium-connect-s3-user).
  4. Sélectionnez Accès programmatique et/ou Accès à la console de gestion AWS selon vos besoins.
  5. Sélectionnez Mot de passe généré automatiquement ou Mot de passe personnalisé.
  6. Cliquez sur Next: Permissions (Suivant : Autorisations).
  7. Sélectionnez Attach existing policies directly (Joindre directement des règles existantes).
  8. Recherchez et sélectionnez la règle AmazonS3FullAccess pour l'utilisateur.
  9. Cliquez sur Next: Tags (Suivant : Tags).
  10. Cliquez sur Suivant : Relire.
  11. Cliquez sur Créer un utilisateur.
  12. Copiez et enregistrez l'ID de clé d'accès et la clé d'accès secrète pour référence ultérieure.

Configurer les autorisations sur le bucket Amazon S3

  1. Dans la console Amazon S3, sélectionnez le bucket que vous avez créé précédemment.
  2. Cliquez sur Autorisations > Règle du bucket.
  3. Dans l'éditeur de règles du bucket, ajoutez la règle suivante :

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:user/tanium-connect-s3-user"
          },
          "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetObject",
            "s3:ListBucket"
          ],
          "Resource": [
            "arn:aws:s3:::tanium-audit-logs",
            "arn:aws:s3:::tanium-audit-logs/*"
          ]
        }
      ]
    }
    
  4. Remplacez les variables suivantes :

    • Remplacez YOUR_ACCOUNT_ID par votre ID de compte AWS.
    • Si le nom de votre bucket est différent, remplacez tanium-audit-logs par le nom réel.
    • Si votre nom d'utilisateur IAM est différent, remplacez tanium-connect-s3-user par le nom d'utilisateur IAM réel.
  5. Cliquez sur Enregistrer.

Configurer Tanium Connect pour l'exportation S3

Créer une connexion AWS S3 dans Tanium Connect

  1. Connectez-vous à la console Tanium en tant qu'administrateur.
  2. Accédez à Tanium Connect > Connexions.
  3. Cliquez sur Créer une connexion.
  4. Dans la section Informations générales, fournissez les informations de configuration suivantes :
    • Nom : saisissez un nom descriptif (par exemple, Tanium Audit to S3).
    • Description : saisissez une description pertinente (par exemple, Export Tanium audit logs to S3 for Google SecOps ingestion).
    • Activer : sélectionnez cette option pour activer la connexion.
    • Niveau de journalisation : sélectionnez Informations (par défaut) ou ajustez le niveau si nécessaire.

Configurer la source de connexion

  1. Dans la section Configuration, sélectionnez Tanium Audit pour Source.
  2. Configurez les paramètres de la source d'audit :
    • Nombre de jours de données historiques récupérées : saisissez le nombre de jours de données d'audit historiques à récupérer (par exemple, 7 pour une semaine).
    • Types d'audit : sélectionnez les types d'audit que vous souhaitez exporter. Choisissez parmi les options suivantes :
      • Historique des actions : actions émises par les opérateurs de la console.
      • Authentification : événements d'authentification des utilisateurs.
      • Contenu : modifications du contenu.
      • Groupes : modifications apportées aux groupes d'ordinateurs.
      • Packages : activités liées aux packages.
      • Capteurs : modifications des capteurs.
      • Paramètres système : modifications de la configuration système.
      • Utilisateurs : activités de gestion des utilisateurs.

Configurer la destination AWS S3

  1. Dans le champ Destination, sélectionnez AWS S3.
  2. Fournissez les informations de configuration suivantes :
    • Nom de la destination : saisissez un nom (par exemple, Google SecOps S3 Bucket).
    • Clé d'accès AWS : saisissez l'ID de clé d'accès de l'utilisateur IAM créé précédemment.
    • Clé secrète AWS : saisissez la clé d'accès secrète de l'utilisateur IAM créé précédemment.
    • Nom du bucket : saisissez le nom de votre bucket S3 (par exemple, tanium-audit-logs).
    • Chemin d'accès au bucket : facultatif. Saisissez un préfixe de chemin d'accès (par exemple, tanium/audit/).
    • Région : sélectionnez la région AWS dans laquelle se trouve votre bucket (par exemple, us-east-1).

Configurer le format et la programmation

  1. Dans la section Format, configurez le format de sortie :
    • Type de format : sélectionnez JSON.
    • Inclure les en-têtes de colonne : sélectionnez cette option si vous souhaitez inclure les en-têtes de colonne.
    • Générer un document : désélectionnez cette option pour envoyer des données JSON brutes.
  2. Dans la section Programmer, configurez la fréquence d'exécution de la connexion :
    • Type de programmation : sélectionnez Cron.
    • Expression Cron : saisissez une expression Cron pour les exportations régulières (par exemple, 0 */1 * * * pour les exportations horaires).
    • Date de début : définissez la date de début de la programmation.
  3. Cliquez sur Enregistrer les modifications.

Tester et exécuter la connexion

  1. Sur la page Présentation de Connect, accédez à Connexions.
  2. Cliquez sur la connexion que vous avez créée (Tanium Audit to S3).
  3. Cliquez sur Exécuter maintenant pour tester la connexion.
  4. Confirmez que vous souhaitez exécuter la connexion.
  5. Surveillez l'état de la connexion et vérifiez que les journaux d'audit sont exportés vers votre bucket S3.

Facultatif : Créez un utilisateur et des clés IAM en lecture seule pour Google SecOps

  1. Accédez à la console AWS> IAM> Utilisateurs> Ajouter des utilisateurs.
  2. Cliquez sur Add users (Ajouter des utilisateurs).
  3. Fournissez les informations de configuration suivantes :
    • Utilisateur : saisissez secops-reader.
    • Type d'accès : sélectionnez Clé d'accès – Accès programmatique.
  4. Cliquez sur Créer un utilisateur.
  5. Associez une stratégie de lecture minimale (personnalisée) : Utilisateurs > secops-reader > Autorisations > Ajouter des autorisations > Associer des stratégies directement > Créer une stratégie.
  6. Dans l'éditeur JSON, saisissez la stratégie suivante :

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::tanium-audit-logs/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::tanium-audit-logs"
        }
      ]
    }
    
  7. Définissez le nom sur secops-reader-policy.

  8. Accédez à Créer une règle > recherchez/sélectionnez > Suivant > Ajouter des autorisations.

  9. Accédez à Identifiants de sécurité > Clés d'accès > Créer une clé d'accès.

  10. Téléchargez le CSV (ces valeurs sont saisies dans le flux).

Configurer un flux dans Google SecOps pour ingérer les journaux d'audit Tanium

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur + Ajouter un flux.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Tanium Audit logs).
  4. Sélectionnez Amazon S3 V2 comme type de source.
  5. Sélectionnez Audit Tanium comme type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants :
    • URI S3 : s3://tanium-audit-logs/tanium/audit/ (ajustez le chemin d'accès si vous avez utilisé un autre nom ou chemin d'accès pour le bucket).
    • Options de suppression de la source : sélectionnez l'option de suppression de votre choix.
    • Âge maximal des fichiers : incluez les fichiers modifiés au cours des derniers jours. La valeur par défaut est de 180 jours.
    • ID de clé d'accès : clé d'accès utilisateur avec accès au bucket S3 (à partir de l'utilisateur en lecture seule créé ci-dessus).
    • Clé d'accès secrète : clé secrète de l'utilisateur ayant accès au bucket S3 (à partir de l'utilisateur en lecture seule créé ci-dessus).
    • Espace de noms de l'élément : espace de noms de l'élément.
    • 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 sur l'écran Finaliser, puis cliquez sur Envoyer.

Table de mappage UDM

Champ de journal Mappage UDM Logique
ActionId metadata.product_log_id Mappé directement à partir du champ ActionId.
ActionName security_result.action_details Mappé directement à partir du champ ActionName.
Approver additional.fields[Approver].value.string_value Mappé directement à partir du champ Approver.
Approver principal.user.userid Mappé à partir du champ Approver si Issuer n'est pas présent.
audit_name metadata.description Mappé directement à partir du champ audit_name.
audit_row_id additional.fields[audit_row_id].value.string_value Mappé directement à partir du champ audit_row_id.
audit_type additional.fields[audit_type].value.string_value Mappé directement à partir du champ audit_type.
authentication_type principal.user.attribute.labels[authentication_type].value Mappé directement à partir du champ authentication_type extrait du champ details.
Command principal.process.command_line Mappé directement à partir du champ Command après décodage de l'URL.
creation_time target.resource.attribute.creation_time Mappé directement à partir du champ creation_time.
details network.session_id Extrait du champ details à l'aide de l'analyse clé-valeur.
details principal.user.attribute.labels[authentication_type].value Extrait du champ details à l'aide de l'analyse clé-valeur.
details principal.asset.ip, principal.ip L'adresse IP est extraite du champ details à l'aide de l'analyse clé-valeur et mappée à principal.asset.ip et principal.ip.
DistributeOver additional.fields[DistributeOver].value.string_value Mappé directement à partir du champ DistributeOver.
dvc_ip intermediary.hostname Directement mappé à partir du champ dvc_ip extrait du message syslog.
dvc_ip observer.ip Directement mappé à partir du champ dvc_ip si logstash.collect.host n'est pas présent.
Expiration additional.fields[Expiration].value.string_value Mappé directement à partir du champ Expiration.
host.architecture target.asset.hardware.cpu_platform Mappé directement à partir du champ host.architecture.
host.id target.asset.asset_id Mappé directement à partir du champ host.id, avec le préfixe "Host ID:".
host.ip target.ip Mappé directement à partir du champ host.ip.
host.mac target.mac Mappé directement à partir du champ host.mac.
host.name target.hostname Directement mappé à partir du champ host.name si host.hostname n'est pas présent.
host.os.kernel target.platform_patch_level Mappé directement à partir du champ host.os.kernel.
host.os.name additional.fields[os_name].value.string_value Mappé directement à partir du champ host.os.name.
host.os.version target.platform_version Mappé directement à partir du champ host.os.version.
InsertTime additional.fields[InsertTime].value.string_value Mappé directement à partir du champ InsertTime.
Issuer additional.fields[Issuer].value.string_value Mappé directement à partir du champ Issuer.
Issuer principal.user.userid Directement mappé à partir du champ Issuer, s'il est présent.
last_modified_by principal.resource.attribute.labels[last_modified_by].value Mappé directement à partir du champ last_modified_by.
log.source.address principal.ip L'adresse IP est extraite du champ log.source.address et mappée à principal.ip.
log.source.address principal.port Le port est extrait du champ log.source.address.
logstash.collect.host observer.ip Directement mappé à partir du champ logstash.collect.host, s'il est présent.
logstash.collect.timestamp metadata.collected_timestamp Mappé directement à partir du champ logstash.collect.timestamp.
logstash.ingest.timestamp metadata.ingested_timestamp Mappé directement à partir du champ logstash.ingest.timestamp.
logstash.irm_environment additional.fields[irm_environment].value.string_value Mappé directement à partir du champ logstash.irm_environment.
logstash.irm_region additional.fields[irm_region].value.string_value Mappé directement à partir du champ logstash.irm_region.
logstash.irm_site additional.fields[irm_site].value.string_value Mappé directement à partir du champ logstash.irm_site.
logstash.process.host intermediary.hostname Mappé directement à partir du champ logstash.process.host.
message dvc_ip, json_data, timestamp Analysé à l'aide de grok pour extraire dvc_ip, json_data et timestamp.
modification_time target.resource.attribute.last_update_time Mappé directement à partir du champ modification_time.
modifier_user_id principal.resource.attribute.labels[modifier_user_id].value Mappé directement à partir du champ modifier_user_id.
object_id target.resource.product_object_id Mappé directement à partir du champ object_id.
object_name target.resource.name Mappé directement à partir du champ object_name.
object_type_name target.resource.attribute.labels[object_type_name].value Mappé directement à partir du champ object_type_name.
PackageName additional.fields[PackageName].value.string_value Mappé directement à partir du champ PackageName.
SourceId additional.fields[SourceId].value.string_value Mappé directement à partir du champ SourceId.
StartTime additional.fields[StartTime].value.string_value Mappé directement à partir du champ StartTime.
Status security_result.action Mappé sur "BLOCK" si Status est "Closed" (Fermé), sur "ALLOW" si Status est "Open" (Ouvert).
Status security_result.summary Mappé directement à partir du champ Status.
tanium_audit_type metadata.product_event_type Mappé directement à partir du champ tanium_audit_type.
timestamp metadata.event_timestamp Directement mappé à partir du champ timestamp extrait du message syslog ou du champ message.
type additional.fields[type].value.string_value Mappé directement à partir du champ type.
type_name metadata.product_event_type Mappé directement à partir du champ type_name.
User principal.user.userid Mappé directement à partir du champ User. Déterminé par la logique de l'analyseur en fonction de la présence de src_ip, has_target et has_user. Valeurs possibles : "NETWORK_CONNECTION", "USER_RESOURCE_ACCESS", "STATUS_UPDATE" ou "GENERIC_EVENT". Codé en dur sur "TANIUM_AUDIT". Codé en dur sur "cybersécurité". Codé en dur sur "TANIUM_AUDIT".
@version metadata.product_version Mappé directement à partir du champ @version.
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value Mappé directement à partir du champ agent.ephemeral_id.
agent.id observer.asset_id Mappé directement à partir du champ agent.id, avec le préfixe "filebeat:".
agent.type observer.application Mappé directement à partir du champ agent.type.
agent.version observer.platform_version Mappé directement à partir du champ agent.version.
Comment security_result.description Mappé directement à partir du champ Comment.
host.hostname target.hostname Directement mappé à partir du champ host.hostname, s'il est présent.
input.type network.ip_protocol Mappé sur "TCP" si input.type est "tcp" ou "TCP".
syslog_severity security_result.severity Correspond à "HIGH" si syslog_severity est "error" ou "warning", "MEDIUM" si "notice", "LOW" si "information" ou "info".
syslog_severity security_result.severity_details Mappé directement à partir du champ syslog_severity.

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