Collecter les journaux Cato Networks
Ce document explique comment ingérer des journaux Cato Networks dans Google Security Operations à l'aide d'AWS S3. Le parseur initialise d'abord un ensemble de champs avec des chaînes vides, puis analyse les journaux Cato Networks au format JSON. Il mappe ensuite les champs extraits avec les champs correspondants du modèle UDM (Unified Data Model) de Google SecOps, en gérant différents types d'événements et en enrichissant les données avec un contexte supplémentaire.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Instance Google SecOps
- Accès privilégié à AWS S3 et AWS IAM
- Accès privilégié à Cato Networks
Configurer AWS IAM et le bucket 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 référence ultérieure.
- Créez un utilisateur en suivant ce 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 un tag de description.
- Cliquez sur Créer une clé d'accès.
- Cliquez sur Télécharger le fichier CSV pour enregistrer la clé d'accès et la clé d'accès secrète pour référence ultérieure.
- Cliquez sur OK.
- Sélectionnez l'onglet Autorisations.
- Cliquez sur Ajouter des autorisations dans la section Règles relatives aux autorisations.
- Sélectionnez Ajouter des autorisations.
- Sélectionnez Joindre directement des règles.
- Recherchez la règle AmazonS3FullAccess, puis sélectionnez-la.
- Cliquez sur Suivant.
- Cliquez sur Ajouter des autorisations.
Configurer une stratégie IAM pour le bucket S3 afin d'activer l'importation de données
- Dans Règle, cliquez sur l'onglet JSON.
Modifiez le JSON suivant, remplacez
<bucket name>
par votre bucket S3, puis collez-le dans l'onglet.{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::<bucket name>" ] }, { "Sid": "", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<bucket name>/*" ] } ] }
Cliquez sur Créer une règle.
Configurer un rôle IAM avec l'ARN de Cato
Sur l'écran Sélectionner une entité de confiance, sélectionnez Stratégie de confiance personnalisée et ajoutez l'ARN de Cato au rôle : arn:aws:iam::428465470022:role/cato-events-integration.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::428465470022:role/cato-events-integration" }, "Action": "sts:AssumeRole" } ] }
Cliquez sur Suivant.
Sur l'écran Ajouter des autorisations, associez la règle que vous avez créée précédemment au rôle.
Cliquez sur Suivant.
Saisissez le nom du rôle, puis cliquez sur Créer un rôle.
Configurer l'intégration des événements et de S3 de Cato Networks
- Connectez-vous à l'interface utilisateur Web Cato Networks.
- Accédez à Ressources> Intégrations d'événements.
- Cliquez sur Activer l'intégration aux événements Cato.
- Cliquez sur New (Nouveau).
- Fournissez les informations de configuration suivantes :
- Saisissez le nom de l'intégration.
- Nom du bucket : nom identique du bucket S3.
- Dossier : nom identique pour le chemin d'accès au dossier dans le bucket S3 (si nécessaire).
- Région : région identique pour le bucket S3.
- ARN du rôle : copiez et collez l'ARN du rôle pour le bucket S3.
- (Facultatif) Définissez les paramètres de filtrage pour les événements importés dans le bucket S3. Lorsque vous définissez plusieurs filtres, ils sont reliés par un opérateur ET. Les événements qui correspondent à tous les filtres sont importés.
- Cliquez sur Appliquer.
Configurer des flux
Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :
- Paramètres SIEM> Flux
Plate-forme de contenu > Packs de contenu
Configurer des flux à partir de Paramètres SIEM > Flux
Pour configurer un flux, procédez comme suit :
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple,
Cato Logs
). - Sélectionnez Amazon S3 comme Type de source.
- Sélectionnez Cato Networks 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 (au format
s3://<your-log-bucket-name>
). Remplacez les éléments suivants :your-log-bucket-name
: nom du bucket.
- L'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 de votre choix.
- 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.
Cliquez sur Suivant.
Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
Configurer des flux depuis le Hub de contenu
Indiquez les valeurs des champs suivants :
Région : région dans laquelle se trouve le bucket Amazon S3.
- URI S3 : URI du bucket (au format
s3://<your-log-bucket-name>
). Remplacez les éléments suivants :your-log-bucket-name
: nom du bucket.
- L'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 de votre choix.
- 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.
- URI S3 : URI du bucket (au format
Options avancées
- Nom du flux : valeur préremplie qui identifie le flux.
- Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
- Espace de noms de l'élément : espace de noms associé au flux.
- Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.
Table de mappage UDM
Champ du journal | Mappage UDM | Logique |
---|---|---|
account_id | target.user.userid | La valeur de ce champ est extraite du champ account_id . |
action | additional.fields.value.string_value | La valeur de ce champ est extraite du champ action . |
app_stack | additional.fields.value.list_value.values.string_value | La valeur de ce champ est extraite du champ app_stack . |
application | principal.application | La valeur de ce champ est extraite du champ application . |
catégories | additional.fields.value.list_value.values.string_value | La valeur de ce champ est extraite du champ categories . |
clientIP | principal.ip, principal.asset.ip | La valeur de ce champ est extraite du champ clientIP . |
creationTime | Ce champ est utilisé pour calculer le code temporel de l'événement. | |
custom_categories | additional.fields.value.list_value.values.string_value | La valeur de ce champ est extraite du champ custom_categories . |
dest_country | target.location.country_or_region | La valeur de ce champ est extraite du champ dest_country . |
dest_country_code | target.resource.attribute.labels.value | La valeur de ce champ est extraite du champ dest_country_code . |
dest_ip | target.ip, target.asset.ip | La valeur de ce champ est extraite du champ dest_ip . |
dest_port | target.port | La valeur de ce champ est extraite du champ dest_port . |
destinationCountry | target.location.country_or_region | La valeur de ce champ est extraite du champ destinationCountry . |
destinationIp | target.ip, target.asset.ip | La valeur de ce champ est extraite du champ destinationIp . |
destinationName | target.hostname, target.asset.hostname | La valeur de ce champ est extraite du champ destinationName . |
device_name | network.dhcp.client_hostname | La valeur de ce champ est extraite du champ device_name . |
dns_name | additional.fields.value.string_value | La valeur de ce champ est extraite du champ dns_name . |
event_count | additional.fields.value.string_value | La valeur de ce champ est extraite du champ event_count . |
event_sub_type | metadata.description | La valeur de ce champ est extraite du champ event_sub_type . |
fieldsMap.ISP_name | additional.fields.value.string_value | La valeur de ce champ est extraite du champ fieldsMap.ISP_name . |
fieldsMap.action | security_result.action_details | La valeur de ce champ est extraite du champ fieldsMap.action . |
fieldsMap.categories | security_result.category_details | La valeur de ce champ est extraite du champ fieldsMap.categories . |
fieldsMap.dest_country | target.location.country_or_region | La valeur de ce champ est extraite du champ fieldsMap.dest_country . |
fieldsMap.dest_ip | target.ip, target.asset.ip | La valeur de ce champ est extraite du champ fieldsMap.dest_ip . |
fieldsMap.dest_port | principal.port | La valeur de ce champ est extraite du champ fieldsMap.dest_port . |
fieldsMap.domain_name | principal.administrative_domain | La valeur de ce champ est extraite du champ fieldsMap.domain_name . |
fieldsMap.event_sub_type | metadata.description | La valeur de ce champ est extraite du champ fieldsMap.event_sub_type . |
fieldsMap.event_type | metadata.product_event_type | La valeur de ce champ est extraite du champ fieldsMap.event_type . |
fieldsMap.ip_protocol | network.ip_protocol | La valeur de ce champ est extraite du champ fieldsMap.ip_protocol . |
fieldsMap.os_type | Ce champ permet de déterminer le système d'exploitation du principal. | |
fieldsMap.pop_name | additional.fields.value.string_value | La valeur de ce champ est extraite du champ fieldsMap.pop_name . |
fieldsMap.rule_id | security_result.rule_id | La valeur de ce champ est extraite du champ fieldsMap.rule_id . |
fieldsMap.rule_name | security_result.rule_name | La valeur de ce champ est extraite du champ fieldsMap.rule_name . |
fieldsMap.src_ip | principal.ip, principal.asset.ip | La valeur de ce champ est extraite du champ fieldsMap.src_ip . |
fieldsMap.src_isp_ip | src.ip, src.asset.ip | La valeur de ce champ est extraite du champ fieldsMap.src_isp_ip . |
fieldsMap.time | Ce champ est utilisé pour calculer le code temporel de l'événement. | |
file_hash | target.file.sha256 | La valeur de ce champ est extraite du champ file_hash . |
file_name | target.file.full_path | La valeur de ce champ est extraite du champ file_name . |
file_size | target.file.size | La valeur de ce champ est extraite du champ file_size . |
http_host_name | principal.hostname, principal.asset.hostname | La valeur de ce champ est extraite du champ http_host_name . |
insertionDate | additional.fields.value.string_value | La valeur de ce champ est extraite du champ insertionDate . |
internalId | additional.fields.value.string_value | La valeur de ce champ est extraite du champ internalId . |
ip_protocol | network.ip_protocol | La valeur de ce champ est extraite du champ ip_protocol . |
is_sanctioned_app | security_result.detection_fields.value | La valeur de ce champ est extraite du champ is_sanctioned_app . |
os_type | principal.platform | La valeur de ce champ est extraite du champ os_type . |
pop_name | Ce champ est utilisé pour remplir le champ fieldsMap.pop_name . |
|
prettyType | metadata.product_event_type | La valeur de ce champ est extraite du champ prettyType . |
règle | additional.fields.value.string_value | La valeur de ce champ est extraite du champ rule . |
rule_id | security_result.rule_id | La valeur de ce champ est extraite du champ rule_id . |
rule_name | security_result.rule_name | La valeur de ce champ est extraite du champ rule_name . |
server_port | target.port | La valeur de ce champ est extraite du champ server_port . |
de gravité, | security_result.severity_details | La valeur de ce champ est extraite du champ severity . |
sourceCountry | principal.location.country_or_region | La valeur de ce champ est extraite du champ sourceCountry . |
sourceInternalIp | principal.ip | La valeur de ce champ est extraite du champ sourceInternalIp . |
sourceIp | src.ip, src.asset.ip | La valeur de ce champ est extraite du champ sourceIp . |
sourceName | principal.user.user_display_name | La valeur de ce champ est extraite du champ sourceName . |
sport | principal.port | La valeur de ce champ est extraite du champ sport . |
src_country | Ce champ est utilisé pour remplir le champ sourceCountry . |
|
src_country_code | principal.resource.attribute.labels.value | La valeur de ce champ est extraite du champ src_country_code . |
src_ip | principal.ip, principal.asset.ip | La valeur de ce champ est extraite du champ src_ip . |
src_is_site_or_vpn | security_result.detection_fields.value | La valeur de ce champ est extraite du champ src_is_site_or_vpn . |
src_isp_ip | src.ip, src.asset.ip | La valeur de ce champ est extraite du champ src_isp_ip . |
src_site | additional.fields.value.string_value | La valeur de ce champ est extraite du champ src_site . |
src_site_name | additional.fields.value.string_value | La valeur de ce champ est extraite du champ src_site_name . |
start | Ce champ est utilisé pour calculer le code temporel de l'événement. | |
subnet_name | additional.fields.value.string_value | La valeur de ce champ est extraite du champ subnet_name . |
temps | Ce champ est utilisé pour calculer le code temporel de l'événement. | |
time_str | Ce champ est utilisé pour calculer le code temporel de l'événement. | |
tunnel_host_logon_names | principal.user.userid | La valeur de ce champ est extraite du champ tunnel_host_logon_names . |
URL | target.url | La valeur de ce champ est extraite du champ url . |
user_id | principal.user.userid | La valeur de ce champ est extraite du champ user_id . |
metadata.event_type | La valeur de ce champ est définie sur GENERIC_EVENT et peut être remplacée par NETWORK_CONNECTION , NETWORK_DHCP ou NETWORK_HTTP en fonction de l'événement. |
|
metadata.log_type | La valeur de ce champ est définie sur CATO_NETWORKS . |
|
metadata.product_name | La valeur de ce champ est définie sur SASE . |
|
metadata.vendor_name | La valeur de ce champ est définie sur Cato Networks . |
|
network.application_protocol | La valeur de ce champ est définie sur DHCP pour les événements Connected . |
|
network.dhcp.chaddr | La valeur de ce champ est définie sur 01:23:45:ab:cd:ef pour les événements Connected . |
|
network.dhcp.lease_time_seconds | La valeur de ce champ est définie sur 86400 pour les événements Connected . |
|
network.dhcp.opcode | La valeur de ce champ est définie sur BOOTREPLY pour les événements Connected . |
|
network.dhcp.type | La valeur de ce champ est définie sur ACK pour les événements Connected . |
|
network.direction | La valeur de ce champ est définie sur OUTBOUND pour les événements Anti Malware et URL Filtering . |
|
security_result.action | La valeur de ce champ est définie sur ALLOW si le champ action n'est pas BLOCK . Sinon, elle est définie sur BLOCK . |
|
event_type | metadata.description | La valeur de ce champ est extraite du champ event_type . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.