Exporta registros a un sistema SIEM

En esta página, se describe cómo exportar registros de Google Distributed Cloud (GDC) aislado a un sistema externo de administración de eventos e información de seguridad (SIEM). Esta integración permite el análisis centralizado de registros y la supervisión de seguridad mejorada.

La base de la exportación de registros implica la implementación de un recurso personalizado SIEMOrgForwarder. Este recurso actúa como un archivo de configuración que especifica los detalles de la instancia externa del SIEM designada para recibir los registros. Al definir estos parámetros en el archivo SIEMOrgForwarder, los administradores pueden establecer una canalización de exportación de registros optimizada y segura.

Antes de comenzar

Para obtener los permisos que necesitas para administrar los recursos personalizados de SIEMOrgForwarder, pídele al administrador de IAM de la organización que te otorgue uno de los roles de organización de exportación de SIEM asociados.

Según el nivel de acceso y los permisos que necesites, es posible que obtengas roles de creador, editor o visualizador para este recurso en el espacio de nombres de tu proyecto. Para obtener más información, consulta Prepara los permisos de IAM.

Después de obtener los permisos necesarios, completa estos pasos antes de exportar los registros a un sistema SIEM externo:

  1. Establece la conectividad: Asegúrate de que exista una conexión entre GDC y el destino del SIEM externo. Si es necesario, colabora con el operador de infraestructura (IO) para establecer una conexión de vínculo ascendente a la red de tu cliente.

  2. Configura las variables de entorno: Establece las siguientes variables de entorno para ejecutar los comandos de esta página:

    • Ruta de acceso al archivo kubeconfig:

      export KUBECONFIG=KUBECONFIG_PATH
      

      Reemplaza KUBECONFIG_PATH por la ruta de acceso al archivo kubeconfig del servidor de la API de administración.

    • El espacio de nombres de tu proyecto:

      export PROJECT_NAMESPACE=PROJECT_NAMESPACE
      

Configura la exportación de registros

Exporta registros a un sistema SIEM externo:

  1. Proporciona un token para conectar la pila de registros al sistema SIEM. Para realizar esta acción, debes crear un secreto en el espacio de nombres de tu proyecto para almacenar el token en el caso de Splunk y la contraseña en el caso de 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
    

    Reemplaza lo siguiente:

    • SECRET_NAME: Es el nombre de tu Secret.
    • SECRET_FIELD: Es el nombre del campo en el que deseas almacenar el secreto. Es el nombre de usuario en el caso de Elastic.
    • FIELD_VALUE: FIELD_VALUE es el token en el caso de Splunk y la contraseña en el caso de Elastic.
    • TOKEN: Tu token.
  2. Implementa el recurso personalizado SIEMOrgForwarder en el espacio de nombres de tu proyecto. Debes especificar el tipo de registro eligiendo entre registros de auditoría o registros operativos. Para configurar la exportación de registros para ambos tipos de registros, debes implementar un recurso SIEMOrgForwarder para cada tipo.

    [!WARNING] A partir de la versión 1.17, no se admite especificar splunkOutputs directamente en spec. Debes usar splunkOutputs en el campo destinations.

    En el siguiente ejemplo, se muestra cómo aplicar una configuración a un recurso personalizado SIEMOrgForwarder para 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
    

    Reemplaza lo siguiente:

    • SIEM_ORG_FORWARDER: Es el nombre del archivo de definición de SIEMOrgForwarder.
    • LOG_TYPE: Es el tipo de registro que exportas. Los valores aceptados son audit y operational.
    • SIEM_HOST: Es el nombre del host del SIEM.
    • SECRET_NAME: Es el nombre de tu Secret.
    • SECRET_FIELD: Es el nombre del campo en el que almacenaste el secreto.
    • TLS: Es el estado de la seguridad de la capa de transporte (TLS). Los valores aceptados son "On" y "Off".
    • NET_CONNECT_TIMEOUT: Es el tiempo máximo en segundos que se espera para que se establezca una conexión. Por ejemplo, un valor de 180 significa esperar 180 segundos.

    En el siguiente ejemplo, se muestra cómo aplicar una configuración a un recurso personalizado SIEMOrgForwarder para 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
    

    Reemplaza lo siguiente:

    • SIEM_ORG_FORWARDER: Es el nombre del archivo de definición de SIEMOrgForwarder.
    • LOG_TYPE: Es el tipo de registro que exportas. Los valores aceptados son audit y operational.
    • SIEM_HOST: Es el nombre del host del SIEM.
    • SIEM_PORT: Es el puerto de la instancia del SIEM.
    • HTTP_USER_NAME: Es el nombre de usuario de la instancia de SIEM.
    • SECRET_NAME: Es el nombre de tu Secret.
    • TLS: Es el estado de la seguridad de la capa de transporte (TLS). Los valores aceptados son "On" y "Off".
    • NET_CONNECT_TIMEOUT: Es el tiempo máximo en segundos que se espera para que se establezca una conexión. Por ejemplo, un valor de 180 significa esperar 180 segundos.
    • INDEX: Es el índice de la instancia de Elastic. Si no se especifica, se usará el tipo de registro (audit o operational). Este campo es opcional.
  3. Verifica el estado del recurso personalizado SIEMOrgForwarder implementado:

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

    Según el tipo de registro, verifica el siguiente estado:

    • Registros de auditoría: Verifica el estado de AuditLoggingReady.
    • Registros operativos: Verifica el estado de OperationalLoggingReady.