Integra Pub/Sub con Google SecOps
Questo documento spiega come integrare Pub/Sub con Google Security Operations.
Casi d'uso
L'integrazione Pub/Sub supporta i seguenti casi d'uso:
Inserimento automatico degli avvisi: recupera continuamente log di sicurezza, avvisi e telemetria pubblicati negli argomenti Pub/Sub per inserirli in Google SecOps come casi.
Orchestrazione della sicurezza centralizzata: consolida il routing degli eventi di sicurezza tramite Pub/Sub dai sistemi cloud e di terze parti per attivare playbook di risposta automatizzati.
Prima di iniziare
Prima di configurare l'integrazione di Pub/Sub in Google SecOps, completa i seguenti passaggi preliminari:
Concedi i ruoli Identity and Access Management necessari al tuo service account.
Scegli e configura uno dei seguenti metodi di autenticazione:
Opzione 1: Workload Identity (consigliata): questo metodo utilizza token di breve durata tramite la rappresentazione dell'identità delaccount di serviziot.
Opzione 2: chiave JSON del service account: questo metodo si basa su un file di chiave segreta statico e di lunga durata.
Crea un account di servizio
Nella Google Cloud console, vai a IAM e amministrazione > Service Accounts.
Fai clic su AggiungiCrea service account.
Fornisci un nome e una descrizione e fai clic su Fine. Prendi nota dell'indirizzo email del service account.
Concedi ruoli IAM
La concessione delle autorizzazioni consente all'integrazione di visualizzare e recuperare i messaggi dai tuoi abbonamenti. Per assegnare il ruolo standard, completa i seguenti passaggi:
Nella console Google Cloud , vai a IAM.
Individua il account di servizio e fai clic su Modifica entità (modifica).
Fai clic su Aggiungi un altro ruolo e seleziona Visualizzatore Pub/Sub (
roles/pubsub.viewer).Fai clic su Salva.
Configurare le credenziali di Workload Identity
Workload Identity è l'approccio consigliato perché utilizza token di accesso di breve durata tramite la simulazione dell'identità dei account di servizio.
Identificare l'identità univoca dell'istanza
Per stabilire una connessione è necessario concedere all'istanza Google SecOps l'autorizzazione a rappresentare il tuoaccount di serviziot.
In Google SecOps, vai a Content Hub > Response Integrations.
Seleziona l'integrazione Pub/Sub e inserisci l'email del service account in Email Workload Identity.
Fai clic su Salva > Test. Il test dovrebbe non riuscire.
Fai clic su close_small accanto al pulsante Test e individua l'email dell'identità che inizia con
gke-init-python@...osoar-python@....Copia questo indirizzo email univoco.
Autorizza l'identità dell'istanza in Google Cloud
Nella Google Cloud console, vai a IAM e amministrazione > Service Accounts.
Seleziona il account di servizio di destinazione e vai a Autorizzazioni > Concedi accesso.
Incolla l'indirizzo email univoco in Nuove entità e assegna il ruolo Creatore token account di servizio (
roles/iam.serviceAccountTokenCreator).
Concedi l'accesso al progetto di quota
L'autenticazione con una Workload Identity richiede un Quota Project ID per monitorare
l'utilizzo e la fatturazione dell'API.
Nella console Google Cloud , vai a IAM per il progetto utilizzato come progetto di quota.
Trova il account di servizio e fai clic su Modifica entità (modifica).
Fai clic su Aggiungi un altro ruolo e seleziona Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer).Fai clic su Salva.
Configurare una chiave JSON
I file delle chiavi segrete statiche e di lunga durata richiedono la rotazione manuale. Utilizza questo metodo solo se l'autenticazione Workload Identity non è disponibile.
Nella console Google Cloud , vai a IAM e amministrazione > Service account e seleziona il tuo account di servizio.
Vai alla scheda Chiavi e fai clic su Aggiungi chiave > Crea nuova chiave.
Seleziona JSON e fai clic su Crea. Il browser scarica il file JSON sul computer.
Parametri di integrazione
L'integrazione Pub/Sub richiede i seguenti parametri:
| Parametro | Descrizione |
|---|---|
Workload Identity Email |
Facoltativo. L'indirizzo email client del tuo account di servizio. Configura questo parametro solo se esegui l'autenticazione utilizzando un'identità del workload. Se configurato, devi fornire anche un
|
Service Account JSON File Content |
Facoltativo. L'intero contenuto del file JSON della chiave dell'account di servizio. Configura questo parametro per l'autenticazione della chiave del account di servizio. |
Quota Project ID |
Facoltativo. L'ID progetto utilizzato per l'utilizzo e la fatturazione dell'API. Questo parametro è obbligatorio quando si utilizza l'autenticazione Workload Identity. Se non viene fornito alcun valore, l'integrazione recupera l'ID dalle credenziali delaccount di serviziot. |
Project ID |
Facoltativo. L'ID progetto di destinazione in Pub/Sub. Se non viene fornito alcun valore, l'integrazione recupera l'ID dalle credenziali delaccount di serviziot. |
Verify SSL |
Obbligatorio. Convalida il certificato SSL per la connessione al server. Abilitato per impostazione predefinita. |
Per istruzioni su come configurare un'integrazione in Google SecOps, consulta Configurare le integrazioni.
Se necessario, potrai apportare modifiche in un secondo momento. Dopo aver configurato un'istanza di integrazione, puoi utilizzarla nei playbook. Per saperne di più su come configurare e supportare più istanze, consulta Supporto di più istanze.
Azioni
Per ulteriori informazioni sulle azioni, vedi Rispondere alle azioni in attesa dalla tua scrivania e Eseguire un'azione manuale.
Dindin
Utilizza l'azione Ping per testare la connettività a Pub/Sub.
Questa azione non viene eseguita sulle entità Google SecOps.
Input azione
Nessuno.
Output azione
L'azione Ping fornisce i seguenti output:
| Tipo di output dell'azione | Disponibilità |
|---|---|
| Allegato della bacheca casi | Non disponibile |
| Link alla bacheca casi | Non disponibile |
| Tabella della bacheca casi | Non disponibile |
| Tabella di arricchimento | Non disponibile |
| Risultato JSON | Non disponibile |
| Messaggi di output | Disponibile |
| Risultato dello script | Disponibile |
Messaggi di output
L'azione Ping può restituire i seguenti messaggi di output:
| Messaggio di output | Descrizione del messaggio |
|---|---|
Successfully connected to the Pub/Sub server with the
provided connection parameters! |
L'azione è riuscita. |
Failed to connect to the Pub/Sub server! Error is
ERROR_REASON |
L'azione non è riuscita. Controlla la connessione al server, i parametri di input o le credenziali. |
Risultato dello script
La tabella seguente elenca il valore dell'output del risultato dello script quando utilizzi l'azione Ping:
| Nome del risultato dello script | Valore |
|---|---|
is_success |
True o False |
Connettori
Per istruzioni dettagliate su come configurare un connettore in Google SecOps, consulta Importare i dati (connettori).
Pub/Sub - Connettore messaggi
Nella piattaforma Google SecOps, il connettore Pub/Sub - Messaggi è chiamato connettore PubSub - Messaggi.
Utilizza il connettore Pub/Sub - Messaggi per recuperare i messaggi da Pub/Sub.
Mapping della gravità JSON
Per mappare la gravità dell'avviso, devi specificare il campo utilizzato dal
connettore Pub/Sub - Messaggi per
ottenere il valore della gravità nel parametro Severity Mapping JSON. La risposta del connettore può contenere tipi di valori, ad esempio integer, float e string.
Il connettore Pub/Sub - Messaggi legge i valori integer e float
e li mappa in base alle impostazioni di Google SecOps. La
tabella seguente mostra il mapping dei valori integer alla gravità in
Google SecOps:
| Valore Integer | Gravità mappata |
|---|---|
100 |
Critical |
Da 80 a 100 |
High |
Da 60 a 80 |
Medium |
Da 40 a 60 |
Low |
Meno di 40 |
Informational |
Se la risposta contiene il valore string, il connettore Pub/Sub - Messaggi richiede una configurazione aggiuntiva.
Inizialmente, il valore predefinito viene visualizzato nel seguente modo:
{
"Default": 60
}
Se i valori necessari per la mappatura si trovano nella chiave JSON event_severity, i valori possono essere i seguenti:
"Malicious""Benign""Unknown"
Per analizzare i valori delle chiavi JSON event_severity e assicurarti che l'oggetto JSON
abbia un formato corretto, configura il parametro Severity Mapping JSON come segue:
{
"event_severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
Il valore di "Default" è obbligatorio.
Nel caso in cui ci siano più corrispondenze per lo stesso oggetto JSON, il connettore Pub/Sub - Messaggi assegna la priorità alla prima chiave dell'oggetto JSON.
Per lavorare con i campi che contengono valori integer o float, configura la chiave
e una stringa vuota nel parametro Severity Mapping JSON:
{
"Default":"60",
"integer_field": "",
"float_field": ""
}
Ingressi del connettore
Il connettore Pub/Sub - Messaggi richiede i seguenti parametri:
| Parametro | Descrizione |
|---|---|
Product Field Name |
Obbligatorio Il nome del campo in cui è memorizzato il nome del prodotto. Il valore predefinito è |
Event Field Name |
Obbligatorio Il nome del campo utilizzato per determinare il nome dell'evento (sottotipo). Il valore predefinito è |
Environment Field Name |
Optional
Il nome del campo in cui è memorizzato il nome dell'ambiente. Se il campo dell'ambiente non viene trovato, l'ambiente viene impostato su quello predefinito. Il valore predefinito è |
Environment Regex Pattern |
Optional
Un pattern di espressione regolare da eseguire sul valore trovato nel campo
Utilizza il valore predefinito Se il pattern dell'espressione regolare è nullo o vuoto oppure il valore dell'ambiente è nullo, il risultato finale dell'ambiente è l'ambiente predefinito. |
PythonProcessTimeout |
Obbligatorio Il limite di timeout in secondi per il processo Python che esegue lo script corrente. Il valore predefinito è |
Service Account JSON File Content |
Optional Il contenuto del file JSON della chiave dell'account di servizio. Puoi configurare questo parametro o il parametro Per configurare questo parametro, fornisci l'intero contenuto del file JSON della chiave dell'account di servizio che hai scaricato durante la creazione di un service account. Per il connettore Pub/Sub - Messaggi, l'autenticazione con il file JSON della chiave dell'account di servizio ha la priorità sulla federazione delle identità dei carichi di lavoro. |
Workload Identity Email |
Optional L'indirizzo email client del tuo account di servizio. Puoi configurare questo parametro o il parametro Per assumere l'identità di service account con
la federazione delle identità per i workload,
concedi il ruolo |
Project ID |
Optional L'ID progetto da utilizzare nel connettore. |
Quota Project ID |
Optional L'ID progetto Google Cloud che utilizzi per
Google Cloud API e fatturazione. Questo parametro richiede di concedere
il ruolo L'integrazione associa questo valore parametro a tutte le richieste API. |
Subscription ID |
Obbligatorio L'ID sottoscrizione Pub/Sub. |
Case Name Template |
Optional Un nome di caso personalizzato. Quando configuri
questo parametro, il connettore aggiunge una nuova chiave chiamata
Puoi fornire segnaposto nel seguente formato:
Esempio: Per i segnaposto, il connettore utilizza il primo evento Google SecOps. Il connettore gestisce solo le chiavi contenenti il valore stringa. Per configurare questo parametro, specifica i campi evento senza prefissi. |
Alert Name Template |
Obbligatorio Un nome avviso personalizzato. Puoi fornire segnaposto nel seguente formato:
Esempio: Per i segnaposto, il connettore utilizza il
primo evento Google SecOps. Il connettore gestisce solo
le chiavi contenenti il valore stringa. Se non fornisci alcun valore o utilizzi un
template non valido, il connettore utilizza un valore di riserva nel seguente
formato: |
Rule Generator Template |
Obbligatorio Un generatore di regole personalizzate. Puoi fornire segnaposto nel seguente formato:
Esempio: Per i segnaposto, il connettore utilizza il
primo evento Google SecOps. Il connettore gestisce solo
le chiavi contenenti il valore stringa. Se non fornisci alcun valore o utilizzi un
template non valido, il connettore utilizza un valore di riserva nel seguente
formato: |
Timestamp Field |
Obbligatorio Il nome del campo per definire il timestamp dell'avviso Google SecOps. Se il timestamp non
utilizza il formato ora epoca Unix, definisci il formato del timestamp nel
parametro Il valore predefinito è
|
Timestamp Format |
Optional Il formato del timestamp del messaggio. Il connettore richiede il timestamp per elaborare correttamente il messaggio. Se il timestamp non utilizza il formato orario dell'epoca Unix e non configuri un formato del timestamp, il connettore non funziona. Il valore predefinito è
|
Severity Mapping JSON |
Obbligatorio L'oggetto JSON che definisce il modo in cui il connettore estrae il livello di gravità dal messaggio. Il valore predefinito è il seguente: { "Default": "60" } Per saperne di più sulla mappatura della gravità, consulta Mappatura della gravità JSON. |
Unique ID Field |
Optional Il nome del campo per confermare che il messaggio è
univoco. Puoi utilizzare la parola chiave riservata |
Max Messages To Fetch |
Obbligatorio Il numero massimo di messaggi da elaborare per ogni iterazione del connettore. Il valore predefinito è |
Disable Overflow |
Optional Se selezionato, il connettore ignora il meccanismo di overflow di Google SecOps durante la creazione degli avvisi. Questa opzione è selezionata per impostazione predefinita. |
Verify SSL |
Obbligatorio Se selezionata, l'integrazione verifica che il certificato SSL per la connessione a Pub/Sub sia valido. Selezionata per impostazione predefinita. |
Proxy Server Address |
Optional L'indirizzo del server proxy da utilizzare. |
Proxy Username |
Optional Il nome utente del proxy per l'autenticazione. |
Proxy Password |
Optional La password del proxy per l'autenticazione. |
Regole del connettore
Il connettore Pub/Sub - Messaggi supporta i proxy.
Eventi connettore
L'esempio seguente mostra l'output JSON di un evento Google SecOps generato dal connettore Pub/Sub - Messaggi:
{
"notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_toxic_notifications_config",
"finding": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
"parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
"resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/FIREWALL_ID",
"state": "ACTIVE",
"category": "OPEN_NETBIOS_PORT",
"externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"sourceProperties": {
"Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"ExceptionInstructions": "Add the security mark \"allow_open_netbios_port\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
"Explanation": "Firewall rules that allow connections from all IP addresses on TCP ports 137-139 or UDP ports 137-139 may expose NetBIOS services to attackers.",
"ScannerName": "FIREWALL_SCANNER",
"ResourcePath": [
"projects/PROJECT_ID/",
"folders/FOLDER_ID/",
"folders/FOLDER_ID/",
"organizations/ORGANIZATION_ID/"
],
"ExposedService": "NetBIOS",
"OpenPorts": {
"TCP": [
137.0,
138.0,
139.0
],
"UDP": [
137.0,
138.0,
139.0
]
},
"compliance_standards": {
"iso": [
{
"ids": [
"A.13.1.1"
]
}
],
"pci": [
{
"ids": [
"1.2.1"
]
}
],
"nist": [
{
"ids": [
"SC-7"
]
}
]
},
"ReactivationCount": 4.0
},
"securityMarks": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
"marks": {
"peter": "e2e1"
}
},
"eventTime": "2024-08-30T14:44:37.973090Z",
"createTime": "2024-06-24T07:08:54.777Z",
"propertyDataTypes": {
"ResourcePath": {
"listValues": {
"propertyDataTypes": [
{
"primitiveDataType": "STRING"
}
]
}
},
"ReactivationCount": {
"primitiveDataType": "NUMBER"
},
"Explanation": {
"primitiveDataType": "STRING"
},
"ExposedService": {
"primitiveDataType": "STRING"
},
"ScannerName": {
"primitiveDataType": "STRING"
}
}
}
}
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.