Integra Logging con Google SecOps

Questo documento spiega come integrare Cloud Logging con Google Security Operations.

Casi d'uso

L'integrazione Logging utilizza le funzionalità di Google SecOps per supportare i seguenti casi d'uso:

  • Recupero dei log forensi: esegui query avanzate per trovare eventi di sicurezza specifici nel tuo ambiente Google Cloud durante un'indagine.

  • Ricerca automatica delle minacce: utilizza i playbook per eseguire periodicamente query nei log per indicatori di compromissione (IoC) noti o pattern sospetti.

Prima di iniziare

Prima di configurare l'integrazione Logging in Google SecOps, completa i seguenti passaggi preliminari:

  1. Crea un service account e concedigli i ruoli necessari.

  2. Scegli e configura uno dei seguenti metodi di autenticazione:

    • Opzione 1: Workload Identity (consigliata): questo metodo utilizza token di accesso temporanei di breve durata tramite la rappresentazione dell'identità del account di servizio, quindi non è necessario archiviare i secret.

    • Opzione 2: chiave JSON dell'account di servizio: questo metodo si basa su un file di chiave segreta statica e di lunga durata. Utilizza questo metodo solo se l'autenticazione Workload Identity non è disponibile nel tuo ambiente.

Crea un account di servizio

Per creare un account di servizio per l'integrazione, completa i seguenti passaggi:

  1. Nella Google Cloud console, vai a IAM e amministrazione > Service Accounts.

    Vai a Service account

  2. Fai clic su AggiungiCrea service account.

  3. Fornisci un nome (ad esempio "Integrazione della registrazione SecOps") e una descrizione, quindi fai clic su Crea e continua.

  4. Nel passaggio Concedi a questo account di servizio l'accesso al progetto, aggiungi il ruolo Logs Viewer (roles/logging.viewer).

  5. Fai clic su Fine. L'indirizzo email di questo account di servizio viene utilizzato durante la configurazione.

Configura le credenziali di Workload Identity

Scegli questo metodo o il metodo della chiave JSON per autenticare l'integrazione. L'utilizzo di un'Workload Identity è l'approccio consigliato perché utilizza

token di accesso temporanei di breve durata utilizzando la simulazione dell'identità dei account di servizio.

Identificare l'identità univoca dell'istanza

La concessione all'istanza Google SecOps dell'autorizzazione a rappresentare il tuoaccount di serviziot è il passaggio finale per proteggere l'accesso.

  1. In Google SecOps, vai a Content Hub > Integrazioni di risposta.

  2. Cerca e seleziona l'integrazione Cloud Logging e inserisci l'email del tuo account di servizio in Email di Workload Identity.

  3. Inserisci un ID progetto valido in Quota Project ID.

  4. Fai clic su Salva > Test. Il test non dovrebbe riuscire.

  5. Fai clic su close_small a destra di Test e cerca il messaggio di errore per l'email dell'identità che inizia con gke-init-python@... o soar-python@....

  6. Copia questo indirizzo email univoco.

Autorizza l'identità dell'istanza in Google Cloud

L'autorizzazione dell'identità univoca recuperata consente la simulazione dell'identità del account di servizio, consentendo alla piattaforma di agire per tuo conto senza chiavi statiche.

  1. Nella Google Cloud console, vai a IAM e amministrazione > Service Accounts.

    Vai a Service account

  2. Seleziona il account di servizio di destinazione e vai a Autorizzazioni > Concedi accesso.

  3. Incolla l'indirizzo email univoco nel campo 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.

  1. Nella console Google Cloud , vai a IAM e amministrazione > IAM e seleziona il progetto utilizzato per l'ID progetto quota.

    Vai a IAM

  2. Individua il account di servizio e fai clic su Modifica entità.

  3. Fai clic su Aggiungi un altro ruolo e seleziona Service Usage Consumer (roles/serviceusage.serviceUsageConsumer).

  4. Fai clic su Salva.

Configurare una chiave JSON

I file delle chiavi segrete statiche e di lunga durata richiedono una gestione manuale. Questo metodo deve essere utilizzato solo se le credenziali di Workload Identity non sono disponibili.

  1. Nella Google Cloud console, vai a IAM e amministrazione > Service account e seleziona il tuo account di servizio.

    Vai a Service account

  2. Vai alla scheda Chiavi e fai clic su Aggiungi chiave > Crea nuova chiave.

  3. Seleziona JSON come tipo di chiave e fai clic su Crea.

  4. Copia l'intero contenuto del file scaricato e incollalo in User's Service Account durante la configurazione.

Parametri di integrazione

L'integrazione Logging richiede i seguenti parametri:

Parametro Descrizione
API Root

Facoltativo.

L'URL di base per l'API Cloud Logging (ad esempio, https://logging.googleapis.com).

User's Service Account

Facoltativo.

L'intero contenuto del file JSON della chiave del account di servizio.

Utilizza questo parametro solo se esegui l'autenticazione utilizzando una chiave JSON.

Workload Identity Email

Facoltativo.

L'indirizzo email del client del tuo account di servizio.

Utilizza questo parametro solo se esegui l'autenticazione utilizzando le credenziali di Workload Identity.

Project ID

Facoltativo.

L'ID progetto da utilizzare nell'integrazione.

Se non viene fornito alcun valore, l'integrazione recupera l'ID dalle credenziali delaccount di serviziot.

Quota Project ID

Facoltativo.

L'ID progetto utilizzato per l'utilizzo e la fatturazione dell'API.

Questo parametro è obbligatorio quando l'autenticazione viene eseguita utilizzando le credenziali Workload Identity.

Organization ID

Facoltativo.

L'ID organizzazione utilizzato per definire l'ambito delle query.

Verify SSL

Facoltativo.

Se selezionata, l'integrazione convalida il certificato SSL quando si connette al server di logging.

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.

Esegui query

Utilizza l'azione Esegui query per eseguire query personalizzate in Logging.

Questa azione non viene eseguita sulle entità Google SecOps.

Input azione

L'azione Esegui query richiede i seguenti parametri:

Parametro Descrizione
Project ID Optional

L'ID progetto da utilizzare nell'integrazione.

Se non imposti un valore per questo parametro, l'integrazione recupera l'ID progetto dal tuo service account Google Cloud .

Organization ID Optional

L'ID organizzazione da utilizzare nell'integrazione.

Se non imposti un valore per questo parametro, l'integrazione recupera l'ID progetto dal tuo service account Google Cloud .

Query Obbligatorio

Una query per trovare i log.

Time Frame Optional

Un periodo da cui recuperare i risultati.

Se selezioni Custom, configura anche il parametro Start Time.

I valori possibili sono:

  • Last Hour
  • Last 6 Hours
  • Last 24 Hours
  • Last Week
  • Last Month
  • Custom
Il valore predefinito è Last Hour.
Start Time Optional

L'ora di inizio per recuperare i risultati.

Questo parametro è obbligatorio se hai selezionato l'opzione Custom per il parametro Time Frame.

Per configurare questo parametro, utilizza il formato ISO 8601.

End Time Optional

L'ora di fine per recuperare i risultati.

Se non imposti un valore per questo parametro e selezioni l'opzione Custom per il parametro Time Frame, l'azione utilizza l'ora corrente come ora di fine.

Per configurare questo parametro, utilizza il formato ISO 8601.

Max Results To Return Optional

Il numero massimo di risultati da restituire.

Il valore predefinito è 50.

Output azione

L'azione Esegui query 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 Disponibile
Messaggi di output Disponibile
Risultato dello script Disponibile
Risultato JSON

L'esempio seguente descrive l'output del risultato JSON ricevuto quando si utilizza l'azione Esegui query:

[{
    "protoPayload": {
        "@type": "type.googleapis.com/google.cloud.audit.AuditLog",
        "authenticationInfo": {
            "principalEmail": "system:clouddns"
        },
        "authorizationInfo": [
            {
                "granted": true,
                "permission": "io.k8s.coordination.v1.leases.update",
                "resource": "coordination.k8s.io/v1/namespaces/kube-system/leases/clouddns-lock"
            }
        ],
        "methodName": "io.k8s.coordination.v1.leases.update",
        "requestMetadata": {
            "callerIp": "192.0.2.6",
            "callerSuppliedUserAgent": "clouddns-leader-election"
        },
        "resourceName": "coordination.k8s.io/v1/namespaces/kube-system/leases/clouddns-lock",
        "serviceName": "k8s.io",
        "status": {
            "code": 0
        }
    },
    "insertId": "ID",
    "resource": {
        "type": "k8s_cluster",
        "labels": {
            "cluster_name": "CLUSTER_NAME",
            "project_id": "PROJECT_ID",
            "location": "us-central1"
        }
    },
    "timestamp": "2024-09-18T09:46:38.647428Z",
    "labels": {
        "authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"system:clouddns\" of ClusterRole \"system:clouddns-role\" to User \"system:clouddns\"",
        "authorization.k8s.io/decision": "allow"
    },
    "logName": "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity",
    "operation": {
        "id": "ID",
        "producer": "k8s.io",
        "first": true,
        "last": true
    },
    "receiveTimestamp": "2024-09-18T09:46:39.063264993Z"
}]
Messaggi di output

L'azione Esegui query fornisce i seguenti messaggi di output:

Messaggio di output Descrizione del messaggio

Successfully executed query "QUERY" in Cloud Logging.

No results were found for the provided query.

L'azione è riuscita.
Error executing action "Execute Query". Reason: ERROR_REASON

L'azione non è riuscita.

Controlla la connessione al server, i parametri di input o le credenziali.

Risultato dello script

La tabella seguente descrive i valori dell'output dei risultati dello script quando utilizzi l'azione Esegui query:

Nome del risultato dello script Valore
is_success True o False

Dindin

Utilizza l'azione Ping per testare la connettività a Logging.

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 fornisce i seguenti messaggi di output:

Messaggio di output Descrizione del messaggio
Successfully connected to the Cloud Logging server with the provided connection parameters! L'azione è riuscita.
Failed to connect to the Cloud Logging 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 descrive i valori dell'output del risultato dello script quando si utilizza l'azione Ping:

Nome del risultato dello script Valore
is_success True o False

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.