Raccogliere i log di controllo di HashiCorp Vault
Questo documento spiega come importare i log di controllo di HashiCorp Vault in Google Security Operations utilizzando Bindplane.
HashiCorp Vault è una piattaforma di gestione dei secret e protezione dei dati che fornisce archiviazione sicura, generazione dinamica dei secret, crittografia dei dati e controllo dell'accesso basato sull'identità. Vault produce audit log che registrano tutte le richieste e le risposte a Vault, inclusi autenticazione, accesso ai secret e modifiche alle policy. Questi log di controllo possono essere inoltrati utilizzando syslog a un SIEM per il monitoraggio della sicurezza e la conformità.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps.
- Windows Server 2016 o versioni successive oppure host Linux con
systemd. - Connettività di rete tra l'agente Bindplane e il server HashiCorp Vault.
- Se l'agente viene eseguito dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane.
- Accesso privilegiato al server HashiCorp Vault (token root o autorizzazioni di policy sufficienti per attivare i dispositivi di controllo).
Recuperare il file di autenticazione dell'importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione dell'acquisizione.
- Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Recuperare l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane
Installa l'agente Bindplane sul sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.
Installazione di Windows
- Apri Prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "[https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi](https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi)" /quietAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sc query observiq-otel-collector
Il servizio dovrebbe essere visualizzato come IN ESECUZIONE.
Installazione di Linux
- Apri un terminale con privilegi root o sudo.
Esegui questo comando:
sudo sh -c "$(curl -fsSlL [https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh](https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh))" install_unix.shAttendi il completamento dell'installazione.
Verifica l'installazione eseguendo:
sudo systemctl status observiq-otel-collector
Il servizio dovrebbe essere visualizzato come attivo (in esecuzione).
Risorse aggiuntive per l'installazione
Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la guida all'installazione dell'agente Bindplane.
Configura l'agente Bindplane per importare syslog e inviarli a Google SecOps
Individua il file di configurazione
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Modifica il file di configurazione
Sostituisci l'intero contenuto di
config.yamlcon la seguente configurazione:receivers: tcplog: listen_address: "0.0.0.0:1514" exporters: chronicle/vault: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'your-customer-id-here' endpoint: malachiteingestion-pa.googleapis.com log_type: HASHICORP raw_log_field: body ingestion_labels: env: production service: pipelines: logs/vault_to_chronicle: receivers: - tcplog exporters: - chronicle/vault
Parametri di configurazione
Sostituisci i seguenti segnaposto:
Configurazione del ricevitore:
listen_address: l'indirizzo IP e la porta su cui ascoltare. Utilizza0.0.0.0per ascoltare su tutte le interfacce. La porta1514è consigliata per evitare di richiedere i privilegi di root su Linux.
Configurazione dell'esportatore:
creds_file_path: percorso completo del file di autenticazione dell'acquisizione:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: il tuo ID cliente Google SecOps.endpoint: URL endpoint regionale:- Stati Uniti:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Per l'elenco completo, vedi Endpoint regionali.
- Stati Uniti:
ingestion_labels: etichette facoltative in formato YAML (ad esempio,env: production).
Salvare il file di configurazione
Dopo la modifica, salva il file:
- Linux: premi
Ctrl+O, poiEntere infineCtrl+X. - Windows: fai clic su File > Salva.
Riavvia l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux:
Esegui questo comando:
sudo systemctl restart observiq-otel-collectorVerifica che il servizio sia in esecuzione:
sudo systemctl status observiq-otel-collectorControlla i log per individuare eventuali errori:
sudo journalctl -u observiq-otel-collector -f
Per riavviare l'agente Bindplane in Windows:
Scegli una delle seguenti opzioni:
- Prompt dei comandi o PowerShell come amministratore:
net stop observiq-otel-collector && net start observiq-otel-collector- Console dei servizi:
- Premi
Win+R, digitaservices.msce premi Invio. - Individua observIQ OpenTelemetry Collector.
- Fai clic con il tasto destro del mouse e seleziona Riavvia.
- Premi
Verifica che il servizio sia in esecuzione:
sc query observiq-otel-collectorControlla i log per individuare eventuali errori:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configurare l'inoltro dei log di controllo di HashiCorp Vault tramite syslog
I dispositivi di controllo di Vault registrano tutte le richieste e le risposte. Puoi attivare un dispositivo di controllo syslog per inoltrare i log di controllo all'agente Bindplane.
Abilita dispositivo di controllo syslog
- Apri un terminale con accesso alla CLI Vault e un token Vault valido.
Esegui il comando seguente per abilitare il dispositivo di controllo syslog:
vault audit enable syslog tag="vault" facility="AUTH"Verifica che il dispositivo di controllo sia abilitato:
vault audit list
L'output dovrebbe mostrare il dispositivo di controllo syslog come abilitato.
Configura l'inoltro di syslog all'agente Bindplane
Dopo aver attivato il dispositivo di controllo syslog di Vault, configura il daemon syslog di sistema (rsyslog o syslog-ng) per inoltrare i log di controllo di Vault all'agente Bindplane.
Opzione: configurazione di rsyslog
Crea un nuovo file di configurazione rsyslog:
sudo nano /etc/rsyslog.d/50-vault-forward.confAggiungi la seguente configurazione:
# Forward Vault audit logs to Bindplane agent if $programname == 'vault' then @@BINDPLANE_IP:1514Sostituisci
BINDPLANE_IPcon l'indirizzo IP dell'host dell'agente Bindplane.Riavvia rsyslog:
sudo systemctl restart rsyslog
Opzione - syslog-ng configuration
Modifica il file di configurazione di syslog-ng:
sudo nano /etc/syslog-ng/conf.d/vault-forward.confAggiungi la seguente configurazione:
destination d_bindplane { network("BINDPLANE_IP" port(1514) transport("tcp")); }; filter f_vault { program("vault"); }; log { source(s_src); filter(f_vault); destination(d_bindplane); };Sostituisci
BINDPLANE_IPcon l'indirizzo IP dell'host dell'agente Bindplane.Riavvia syslog-ng:
sudo systemctl restart syslog-ng
Alternativa: audit basato su file con inoltro dei log
Se l'audit syslog non è preferito, puoi attivare un dispositivo di audit dei file e inoltrare i contenuti del file:
Abilita dispositivo di controllo dei file:
vault audit enable file file_path=/var/log/vault/audit.logConfigura rsyslog per monitorare e inoltrare il file:
sudo nano /etc/rsyslog.d/50-vault-file-forward.confmodule(load="imfile") input(type="imfile" File="/var/log/vault/audit.log" Tag="vault-audit" Severity="info" Facility="auth") if $syslogtag == 'vault-audit' then @@BINDPLANE_IP:1514Sostituisci
BINDPLANE_IPcon l'indirizzo IP dell'host dell'agente Bindplane.Riavvia rsyslog:
sudo systemctl restart rsyslog
Verificare l'inoltro dei log
Esegui un'operazione Vault (ad esempio, accedi o leggi un secret):
vault login token=<YOUR_TOKEN>Controlla i log dell'agente Bindplane per verificare che i log vengano ricevuti.
Per saperne di più, consulta la documentazione sui dispositivi di controllo di HashiCorp Vault.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
auth.client_token |
network.session_id |
Valore estratto da auth.client_token (con hash). |
auth.display_name |
principal.user.user_display_name |
Valore tratto da auth.display_name. |
auth.metadata.role_name |
principal.user.attribute.roles.name |
Valore tratto da auth.metadata.role_name. |
auth.policies |
principal.user.attribute.permissions.name |
Valori presi dall'array auth.policies. |
auth.token_type |
additional.fields |
Valore estratto da auth.token_type e aggiunto con la chiave token_type. |
request.id |
metadata.product_log_id |
Valore tratto da request.id. |
request.operation |
metadata.product_event_type |
Valore tratto da request.operation. |
request.path |
target.resource.name |
Valore tratto da request.path. |
request.remote_address |
principal.ip |
Valore tratto da request.remote_address. |
request.namespace.id |
target.namespace |
Valore tratto da request.namespace.id. |
response.auth.client_token |
network.session_id |
Valore estratto dalla risposta client_token (con hash). |
type |
metadata.product_event_type |
Aggiunto all'operazione (ad esempio, request o response). |
time |
metadata.event_timestamp |
Analizzato come timestamp RFC 3339. |
error |
security_result.description |
Valore estratto da error, se presente. |
metadata.vendor_name |
Impostalo su HashiCorp. | |
metadata.product_name |
Imposta su Vault. | |
metadata.event_type |
Imposta su USER_RESOURCE_ACCESS per le operazioni sui secret, USER_LOGIN per le operazioni di autenticazione e GENERIC_EVENT altrimenti. | |
response.auth.metadata.username |
event.idm.read_only_udm.target.user.userid |
Mappato dal log delle modifiche |
appname |
event.idm.read_only_udm.target.application |
Mappato dal log delle modifiche |
priority |
event.idm.read_only_udm.security_result.priority_details |
Mappato dal log delle modifiche |
proc_id |
event.idm.read_only_udm.observer.process.pid |
Mappato dal log delle modifiche |
auth.policies |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
auth.token_policies |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
request.policy_override |
event.idm.read_only_udm.target.resource.attribute.labels |
Mappato dal log delle modifiche |
response.data.admin_password |
event.idm.read_only_udm.target.resource.attribute.labels |
Mappato dal log delle modifiche |
response.data.admin_token |
event.idm.read_only_udm.target.resource.attribute.labels |
Mappato dal log delle modifiche |
response.data.admin_user |
event.idm.read_only_udm.target.resource.attribute.labels |
Mappato dal log delle modifiche |
response.data.certificate |
event.idm.read_only_udm.target.resource.attribute.labels |
Mappato dal log delle modifiche |
response.data.check_url |
event.idm.read_only_udm.target.resource.attribute.labels |
Mappato dal log delle modifiche |
response.data.keystore |
event.idm.read_only_udm.target.resource.attribute.labels |
Mappato dal log delle modifiche |
response.data.keystore_password |
event.idm.read_only_udm.target.resource.attribute.labels |
Mappato dal log delle modifiche |
response.data.private_key |
event.idm.read_only_udm.target.resource.attribute.labels |
Mappato dal log delle modifiche |
type |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
auth.identity_policies |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
request.data |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
facility |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
task |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
jsonPayload.auth.policy_results.granting_policies.type", "jsonPayload.auth.policy_results.granting_policies.name", and "jsonPayload.auth.policy_results.granting_policies.namespace_id |
additional.fields |
Mappato dal log delle modifiche |
jsonPayload.request.namespace.id |
target.namespace |
Mappato dal log delle modifiche |
jsonPayload.cos.googleapis.com/container_id", "jsonPayload.cos.googleapis.com/container_name", "jsonPayload.cos.googleapis.com/stream |
additional.fields |
Mappato dal log delle modifiche |
resource.labels.instance_id |
principal.resource.product_object_id |
Mappato dal log delle modifiche |
principal.resource.attribute.cloud.availability_zone |
resource.labels.zone |
Mappato dal log delle modifiche |
logName |
security_result.category_details |
Mappato dal log delle modifiche |
resource.labels.namespace_name |
target.namespace |
Mappato dal log delle modifiche |
resource.labels.pod_name", "resource.labels.container_name |
additional.fields |
Mappato dal log delle modifiche |
resource.labels.project_id |
target.cloud.project.name |
Mappato dal log delle modifiche |
resource.labels.location |
target.location.name |
Mappato dal log delle modifiche |
insertId |
metadata.product_log_id |
Mappato dal log delle modifiche |
labels.k8s-pod/app_kubernetes_io/instance", "labels.k8s-pod/app_kubernetes_io/name", "labels.k8s-pod/component", "labels.k8s-pod/helm_sh/chart", "labels.k8s-pod/controller-revision-hash", "labels.k8s-pod/vault-initialized", "labels.k8s-pod/vault-version", "labels.k8s-pod/vault-sealed", "labels.k8s-pod/vault-perf-standby", and "labels.k8s-pod/vault-active |
target.resource.attribute.labels |
Mappato dal log delle modifiche |
labels.compute.googleapis.com/resource_name |
target.resource.name |
Mappato dal log delle modifiche |
status |
network.http.response_code |
Mappato dal log delle modifiche |
runner |
principal.user.userid |
Mappato dal log delle modifiche |
job_id", "job_status |
additional.fields |
Mappato dal log delle modifiche |
host |
observer.hostname |
Mappato dal log delle modifiche |
cluster |
observer.resource.name |
Mappato dal log delle modifiche |
cluster |
observer.resource.resource_type |
Mappato dal log delle modifiche |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.