Collecter les journaux Akeyless Vault
Ce document explique comment ingérer les journaux Akeyless Vault dans Google Security Operations à l'aide de l'ingestion directe ou de Bindplane. Le parseur normalise d'abord les messages de journaux, qui peuvent être au format clé/valeur ou JSON, dans une structure cohérente. Il extrait ensuite les champs pertinents et les mappe au schéma UDM (Unified Data Model), en catégorisant le type d'événement en fonction de la présence d'adresses IP et des actions effectuées.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Instance Google SecOps
- Accès privilégié à Akeyless Vault
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- Téléchargez le fichier d'authentification d'ingestion.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Configurer le transfert de journaux pour l'ingestion directe dans Google SecOps dans Akeyless Vault
- Connectez-vous à l'interface utilisateur Web de votre passerelle Akeyless.
- Accédez à Transfert de journaux.
- Sélectionnez Activer.
- Fournissez les informations de configuration suivantes :
- Format du journal : sélectionnez JSON.
- Serveur de journaux d'audit : saisissez
https://audit.akeyless.io/
. - Service : sélectionnez Google Chronicle.
- Clé du compte de service : fournissez le fichier JSON contenant les identifiants du compte de service.
- Numéro client : saisissez votre identifiant unique Google SecOps.
- Région : saisissez la région dans laquelle votre Google SecOps est provisionné.
- Type de journal : saisissez AKEYLESS_VAULT.
- Cliquez sur Enregistrer les modifications.
Facultatif : Ingérer Syslog via Bindplane
Installation de BindPlane sur Windows
- Ouvrez l'invite de commandes ou PowerShell en tant qu'administrateur.
Exécutez la commande suivante :
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installation de Bindplane sur Linux
- Ouvrez un terminal avec les droits root ou sudo.
Exécutez la commande suivante :
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Ressources d'installation supplémentaires
Pour plus d'options d'installation, consultez le guide d'installation.
Configurer l'agent Bindplane pour ingérer Syslog et l'envoyer à Google SecOps
- Accédez au fichier de configuration :
- Recherchez le fichier
config.yaml
. En règle générale, il se trouve dans le répertoire/etc/bindplane-agent/
sous Linux ou dans le répertoire d'installation sous Windows. - Ouvrez le fichier à l'aide d'un éditeur de texte (par exemple,
nano
,vi
ou le Bloc-notes).
- Recherchez le fichier
Modifiez le fichier
config.yaml
comme suit :receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization ingestion_labels: log_type: 'AKEYLESS_VAULT' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Remplacez le port et l'adresse IP selon les besoins de votre infrastructure.
Remplacez
<customer_id>
par le numéro client réel.Mettez à jour
/path/to/ingestion-authentication-file.json
en indiquant le chemin d'accès où le fichier d'authentification a été enregistré dans la section Obtenir le fichier d'authentification pour l'ingestion Google SecOps.
Redémarrez l'agent Bindlane pour appliquer les modifications.
Pour redémarrer l'agent Bindplane sous Linux, exécutez la commande suivante :
sudo systemctl restart bindplane-agent
Pour redémarrer l'agent Bindplane sous Windows, vous pouvez utiliser la console Services ou saisir la commande suivante :
net stop BindPlaneAgent && net start BindPlaneAgent
Configurer le transfert Syslog vers Bindplane dans Akeyless Vault
- Connectez-vous à l'interface utilisateur Web de votre passerelle Akeyless.
- Accédez à Transfert de journaux.
- Sélectionnez Activer.
- Fournissez les informations de configuration suivantes :
- Format du journal : sélectionnez JSON.
- Serveur de journaux d'audit : saisissez
https://audit.akeyless.io/
. - Service : sélectionnez Syslog.
- Réseau Syslog : sélectionnez UDP. (Vous pouvez sélectionner une autre option en fonction de la configuration de votre agent Bindplane.)
- Hôte Syslog : saisissez l'adresse IP de l'agent Bindplane.
- Formatteur Syslog : sélectionnez Texte.
- (Facultatif) TLS : cochez la case TLS et importez le certificat TLS.
- Cliquez sur Enregistrer les modifications.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
access_id | read_only_udm.metadata.product_log_id | Mappé directement à partir du champ access_id . Si elle n'est pas présente, elle est extraite du champ message à l'aide de l'expression régulière access_id:\s+(?<accessid>[\w-]+) . |
account_id | read_only_udm.target.user.userid | Mappé directement à partir du champ account_id . |
action | read_only_udm.security_result.action_details | Mappé directement à partir du champ action . |
composant | read_only_udm.target.resource.name | Mappé directement à partir du champ component . |
duration | read_only_udm.network.session_duration.seconds | Mappé directement à partir du champ duration et converti en entier. |
remote_addr | read_only_udm.principal.ip | Extrait du champ remote_addr , divisé par une virgule et ajouté au tableau principal.ip . |
request_parameters.access_type | read_only_udm.target.resource.attribute.labels.value (où la clé est "access_type") | Mappé directement à partir du champ request_parameters.access_type . Si elle n'est pas présente, elle est extraite du champ message à l'aide de l'expression régulière access_type:\s+(?<accesstype>[\S]+) . |
request_parameters.comment | read_only_udm.target.resource.attribute.labels.value (où la clé est "comment") | Mappé directement à partir du champ request_parameters.comment . |
request_parameters.operation | read_only_udm.target.resource.attribute.labels.value (où la clé est "operation") | Mappé directement à partir du champ request_parameters.operation . |
request_parameters.product | read_only_udm.target.resource.attribute.labels.value (où la clé est "product") | Mappé directement à partir du champ request_parameters.product . Si elle n'est pas présente, elle est extraite du champ message à l'aide de l'expression régulière product:\s+(?<product>[\w\s]+) . |
request_parameters.token_id | read_only_udm.target.resource.attribute.labels.value (où la clé est "token_id") | Mappé directement à partir du champ request_parameters.token_id . |
request_parameters.transaction_type | read_only_udm.target.resource.attribute.labels.value (où la clé est "transaction_type") | Mappé directement à partir du champ request_parameters.transaction_type et converti en chaîne. Si elle n'est pas présente, elle est extraite du champ message à l'aide de l'expression régulière transaction_type:\s+(?<transactiontype>[\S]+) . |
request_parameters.unique_id | read_only_udm.target.resource.attribute.labels.value (où la clé est "unique_id") | Mappé directement à partir du champ request_parameters.unique_id . Si elle n'est pas présente, elle est extraite du champ message à l'aide de l'expression régulière unique_id:\s+(?<uniqueid>[\w-]+) . |
request_parameters.universal_identity_rotate_type | read_only_udm.target.resource.attribute.labels.value (où la clé est "universal_identity_rotate_type") | Mappé directement à partir du champ request_parameters.universal_identity_rotate_type . |
request_parameters.user_agent | read_only_udm.target.resource.attribute.labels.value (où la clé est "user_agent") | Mappé directement à partir du champ request_parameters.user_agent . |
de gravité, | Mappé directement à partir du champ severity . |
|
état | read_only_udm.network.http.response_code | Mappé directement à partir du champ status et converti en entier. |
timestamp | read_only_udm.metadata.event_timestamp | Mappé directement à partir du champ timestamp de l'entrée de journal. |
read_only_udm.metadata.log_type | Codé en dur sur AKEYLESS_VAULT . |
|
read_only_udm.metadata.event_type | Définie sur STATUS_UPDATE si ip_present est "true", sinon la valeur par défaut est GENERIC_EVENT . |
|
read_only_udm.metadata.vendor_name | Extrait du champ message à l'aide de l'expression régulière CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data} . |
|
read_only_udm.metadata.product_name | Extrait du champ message à l'aide de l'expression régulière CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data} . |
|
read_only_udm.metadata.product_version | Extrait du champ message à l'aide de l'expression régulière CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data} . |
|
read_only_udm.metadata.product_event_type | Extrait du champ message à l'aide de l'expression régulière <%{INT}>%{TIMESTAMP_ISO8601:time}\s+%{DATA}\s+(?P<product_event_type>[\w-]+)\[%{INT}\]:\s+(?P<time2>\d{1,2}-%{MONTH}-\d{1,4}\s+\d{1,2}:\d{1,2}:\d{1,2}.\d+)\s+%{WORD}\s+%{WORD:severity}\s+CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data} . |
|
read_only_udm.target.namespace | Extrait du champ message à l'aide de l'expression régulière namespace:\s+(?<namespace>[\S]+) . |
|
read_only_udm.security_result.severity | Mappé à partir du champ severity : Info à INFORMATIONAL , Error à ERROR , Warning à MEDIUM , sinon UNKNOWN_SEVERITY . |
|
read_only_udm.network.http.method | Mappé à partir du champ action : get en GET , put et Authentication en PUT , post en POST , delete en DELETE . |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.