Esportare i log in un sistema SIEM

Questa pagina descrive come esportare i log da Google Distributed Cloud (GDC) con air gap a un sistema esterno di security information and event management (SIEM). Questa integrazione consente l'analisi centralizzata dei log e un monitoraggio della sicurezza migliorato.

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 per 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 dell'organizzazione IAM di concederti uno dei ruoli SIEM Export Org associati.

A seconda del livello di accesso e delle autorizzazioni di cui hai bisogno, potresti ottenere ruoli di creator, editor o visualizzatore 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 di 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 tuo progetto:

      export PROJECT_NAMESPACE=PROJECT_NAMESPACE
      

Configura l'esportazione dei log

Crea il secret e la risorsa personalizzata SIEMOrgForwarder nello stesso namespace. Puoi utilizzare qualsiasi spazio dei nomi del progetto. Ogni SIEMOrgForwarder esporta i log della piattaforma da tutti i cluster dell'organizzazione, quindi non è necessario creare queste risorse in altri progetti o cluster.

Come best practice, utilizza lo spazio dei nomi platform-obs perché SIEMOrgForwarder esporta solo i log della piattaforma. I ruoli SIEM Export Org concedono anche l'accesso in lettura a tutti i secret nello spazio dei nomi in cui sono concessi, quindi chiedi all'amministratore dell'organizzazione IAM di concedere questi ruoli solo agli amministratori della piattaforma.

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 nel caso di Splunk e la password nel 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. Per Elastic, utilizza lo stesso valore di HTTP_USER_NAME nella risorsa personalizzata.
    • FIELD_VALUE: FIELD_VALUE è il token nel 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 di attesa per stabilire una connessione. Ad esempio, un valore 180 indica di 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. Questo valore deve essere anche la chiave SECRET_FIELD nel secret che memorizza la password.
    • 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 di attesa per stabilire una connessione. Ad esempio, un valore 180 indica di attendere 180 secondi.
    • INDEX: l'indice dell'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 è stato eseguito il deployment:

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

    In base al tipo di log, controlla lo stato seguente:

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