Exportar registros para um sistema SIEM

Esta página descreve como exportar registros do Google Distributed Cloud (GDC) isolado para um sistema externo de gerenciamento de informações e eventos de segurança (SIEM, na sigla em inglês). Essa integração permite a análise centralizada de registros e o monitoramento de segurança aprimorado.

O principal da exportação de registros envolve a implantação de um recurso personalizado SIEMOrgForwarder. Esse recurso atua como um arquivo de configuração, especificando os detalhes da instância SIEM externa designada para receber os registros. Ao definir esses parâmetros no arquivo SIEMOrgForwarder, os administradores podem estabelecer um pipeline de exportação de registros simplificado e seguro.

Antes de começar

Para receber as permissões necessárias para gerenciar recursos personalizados SIEMOrgForwarder, peça ao administrador do IAM da organização para conceder a você um dos papéis da organização de exportação de SIEM associados.

Dependendo do nível de acesso e das permissões necessárias, você pode receber papéis de criador, editor ou leitor para esse recurso no namespace do projeto. Para mais informações, consulte Preparar permissões do IAM.

Depois de receber as permissões necessárias, conclua estas etapas antes de exportar registros para um sistema SIEM externo:

  1. Estabelecer conectividade: verifique se há uma conexão entre o GDC e o destino SIEM externo. Se necessário, colabore com o operador de infraestrutura (IO) para estabelecer uma conexão de uplink com a rede do cliente.

  2. Definir variáveis de ambiente: defina as seguintes variáveis de ambiente para executar os comandos desta página:

    • O caminho do arquivo kubeconfig:

      export KUBECONFIG=KUBECONFIG_PATH
      

      Substitua KUBECONFIG_PATH pelo caminho do arquivo kubeconfig do servidor da API Management.

    • O namespace do projeto:

      export PROJECT_NAMESPACE=PROJECT_NAMESPACE
      

Configurar a exportação de registros

Exportar registros para um sistema SIEM externo:

  1. Forneça um token para conectar a pilha de registros ao sistema SIEM. Para realizar essa ação, crie um secret no namespace do projeto para armazenar o token no caso do Splunk e a senha no caso do 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
    

    Substitua:

    • SECRET_NAME: o nome do secret.
    • SECRET_FIELD: o nome do campo em que você quer armazenar o secret. É o nome de usuário no caso do Elastic.
    • FIELD_VALUE: FIELD_VALUE é o token no caso do Splunk e a senha para o Elastic.
    • TOKEN: seu token.
  2. Implante o recurso personalizado SIEMOrgForwarder no namespace do projeto. Você precisa especificar o tipo de registro escolhendo entre registros de auditoria ou operacionais. Para configurar a exportação de registros para os dois tipos de registro, implante um recurso SIEMOrgForwarder para cada tipo.

    [!WARNING] A partir da versão 1.17, não é possível especificar splunkOutputs diretamente em spec. Você precisa usar splunkOutputs no campo destinations.

    O exemplo a seguir mostra como aplicar uma configuração a um recurso personalizado SIEMOrgForwarder para o 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
    

    Substitua:

    • SIEM_ORG_FORWARDER: o nome do arquivo de definição SIEMOrgForwarder.
    • LOG_TYPE: o tipo de registro que você está exportando. Os valores aceitos são audit e operational.
    • SIEM_HOST: o nome do host SIEM.
    • SECRET_NAME: o nome do secret.
    • SECRET_FIELD: o nome do campo em que você armazenou o secret.
    • TLS: o status do Transport Layer Security (TLS). Os valores aceitos são "On" e "Off".
    • NET_CONNECT_TIMEOUT: o tempo máximo em segundos para aguardar o estabelecimento de uma conexão. Por exemplo, um valor de 180 significa aguardar 180 segundos.

    O exemplo a seguir mostra como aplicar uma configuração a um recurso personalizado SIEMOrgForwarder para o 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
    

    Substitua:

    • SIEM_ORG_FORWARDER: o nome do arquivo de definição SIEMOrgForwarder.
    • LOG_TYPE: o tipo de registro que você está exportando. Os valores aceitos são audit e operational.
    • SIEM_HOST: o nome do host SIEM.
    • SIEM_PORT: a porta da instância SIEM.
    • HTTP_USER_NAME: o nome de usuário da instância SIEM.
    • SECRET_NAME: o nome do secret.
    • TLS: o status do Transport Layer Security (TLS). Os valores aceitos são "On" e "Off".
    • NET_CONNECT_TIMEOUT: o tempo máximo em segundos para aguardar o estabelecimento de uma conexão. Por exemplo, um valor de 180 significa aguardar 180 segundos.
    • INDEX: o índice da instância Elastic. Se não for especificado, o tipo de registro (audit ou operational) será usado. Este campo é opcional.
  3. Verifique o status do recurso personalizado SIEMOrgForwarder implantado:

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

    De acordo com o tipo de registro, verifique o seguinte status:

    • Registros de auditoria: verifique o status AuditLoggingReady.
    • Registros operacionais: verifique o status OperationalLoggingReady.