Esportare i log in un sistema SIEM

Questa pagina descrive come esportare i log da Google Distributed Cloud (GDC) air-gapped a un sistema SIEM (Security Information and Event Management) esterno. Questa integrazione consente l'analisi centralizzata dei log e il monitoraggio della sicurezza avanzato.

Il nucleo dell'esportazione dei log prevede il deployment di una risorsa personalizzata SIEMOrgForwarder. Questa risorsa funge da file di configurazione, specificando i dettagli dell'istanza SIEM esterna designata a ricevere i log. Definendo questi parametri nel file SIEMOrgForwarder, gli amministratori possono stabilire una pipeline di esportazione dei log semplificata e sicura.

Prima di iniziare

Per ottenere le autorizzazioni necessarie per gestire le risorse personalizzate SIEMOrgForwarder, chiedi all'amministratore IAM dell'organizzazione di concederti uno dei ruoli di esportazione SIEM dell'organizzazione associati.

A seconda del livello di accesso e delle autorizzazioni di cui hai bisogno, potresti ottenere ruoli di creazione, modifica o visualizzazione per questa risorsa nello spazio dei nomi del progetto. Per saperne di più, consulta Prepara le autorizzazioni IAM.

Dopo aver ottenuto le autorizzazioni necessarie, completa questi passaggi prima di esportare i log in un sistema SIEM esterno:

  1. Stabilisci la connettività: assicurati che esista una connessione tra GDC e la destinazione SIEM esterna. Se necessario, collabora con l'operatore dell'infrastruttura (IO) per stabilire una connessione uplink alla rete del cliente.

  2. Imposta le variabili di ambiente: imposta le seguenti variabili di ambiente per eseguire i comandi da questa pagina:

    • Il percorso del file kubeconfig:

      export KUBECONFIG=KUBECONFIG_PATH
      

      Sostituisci KUBECONFIG_PATH con il percorso del file kubeconfig per il server API di gestione.

    • Lo spazio dei nomi del progetto:

      export PROJECT_NAMESPACE=PROJECT_NAMESPACE
      

Configura l'esportazione dei log

Esporta i log in un sistema SIEM esterno:

  1. Fornisci un token per connettere lo stack di logging al sistema SIEM. Per eseguire questa azione, devi creare un secret nello spazio dei nomi del progetto per archiviare il token in caso di Splunk e la password in caso di Elastic SIEM:

    cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: SECRET_NAME
      namespace: ${PROJECT_NAMESPACE}
    type: Opaque
    stringData:
      SECRET_FIELD: FIELD_VALUE
    EOF
    

    Sostituisci quanto segue:

    • SECRET_NAME: il nome del secret.
    • SECRET_FIELD: il nome del campo in cui vuoi archiviare il secret. È il nome utente in caso di Elastic.
    • FIELD_VALUE: FIELD_VALUE è il token in caso di Splunk e la password per Elastic.
    • TOKEN: il tuo token.
  2. Esegui il deployment della risorsa personalizzata SIEMOrgForwarder nello spazio dei nomi del progetto. Devi specificare il tipo di log scegliendo tra audit log o log operativi. Per configurare l'esportazione dei log per entrambi i tipi di log, devi eseguire il deployment di una risorsa SIEMOrgForwarder per ogni tipo.

    L'esempio seguente mostra come applicare una configurazione a una risorsa personalizzata SIEMOrgForwarder per Splunk:

      cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
      apiVersion: logging.gdc.goog/v1
      kind: SIEMOrgForwarder
      metadata:
        name: SIEM_ORG_FORWARDER
        namespace: ${PROJECT_NAMESPACE}
      spec:
        source: LOG_TYPE
        destinations:
          splunkOutputs:
            - host: SIEM_HOST
              token:
                name: SECRET_NAME
                field: SECRET_FIELD
              tls: "TLS"
              netConnectTimeout: NET_CONNECT_TIMEOUT
      EOF
    

    Sostituisci quanto segue:

    • SIEM_ORG_FORWARDER: il nome del file di definizione SIEMOrgForwarder.
    • LOG_TYPE: il tipo di log che stai esportando. I valori accettati sono audit e operational.
    • SIEM_HOST: il nome dell'host SIEM.
    • SECRET_NAME: il nome del secret.
    • SECRET_FIELD: il nome del campo in cui hai archiviato il secret.
    • TLS: lo stato di Transport Layer Security (TLS). I valori accettati sono "On" e "Off".
    • NET_CONNECT_TIMEOUT: il tempo massimo in secondi da attendere per stabilire una connessione. Ad esempio, un valore di 180 significa attendere 180 secondi.

    L'esempio seguente mostra come applicare una configurazione a una risorsa personalizzata SIEMOrgForwarder per Elastic:

      cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
      apiVersion: logging.gdc.goog/v1
      kind: SIEMOrgForwarder
      metadata:
        name: SIEM_ORG_FORWARDER
        namespace: ${PROJECT_NAMESPACE}
      spec:
        source: LOG_TYPE
        destinations:
          elasticOutputs:
            - host: SIEM_HOST
              port: SIEM_PORT
              http_credential:
                http_user: HTTP_USER_NAME
                http_passwd: SECRET_NAME
              tls: "TLS"
              netConnectTimeout: NET_CONNECT_TIMEOUT
              index: INDEX
      EOF
    

    Sostituisci quanto segue:

    • SIEM_ORG_FORWARDER: il nome del file di definizione SIEMOrgForwarder.
    • LOG_TYPE: il tipo di log che stai esportando. I valori accettati sono audit e operational.
    • SIEM_HOST: il nome dell'host SIEM.
    • SIEM_PORT: la porta dell'istanza SIEM.
    • HTTP_USER_NAME: il nome utente dell'istanza SIEM.
    • SECRET_NAME: il nome del secret.
    • TLS: lo stato di Transport Layer Security (TLS). I valori accettati sono "On" e "Off".
    • NET_CONNECT_TIMEOUT: il tempo massimo in secondi da attendere per stabilire una connessione. Ad esempio, un valore di 180 significa attendere 180 secondi.
    • INDEX: l'indice per l'istanza Elastic. Se non specificato, verrà utilizzato il tipo di log (audit o operational). Questo campo è facoltativo.
  3. Verifica lo stato della risorsa personalizzata SIEMOrgForwarder di cui hai eseguito il deployment:

      kubectl --kubeconfig=${KUBECONFIG} describe siemorgforwarder/SIEM_ORG_FORWARDER \
          -n ${PROJECT_NAMESPACE}
    

    A seconda del tipo di log, controlla lo stato seguente:

    • Audit log: controlla lo stato AuditLoggingReady.
    • Log operativi: controlla lo stato OperationalLoggingReady.