Coletar registros do Akeyless Vault

Compatível com:

Este documento explica como ingerir registros do Akeyless Vault no Google Security Operations usando a ingestão direta ou o Bindplane. Primeiro, o analisador normaliza as mensagens de registro, que podem estar no formato de chave-valor ou JSON, em uma estrutura consistente. Em seguida, ele extrai os campos relevantes e os mapeia para o esquema do Modelo de dados unificado (UDM, na sigla em inglês), categorizando o tipo de evento com base na presença de endereços IP e ações realizadas.

Antes de começar

Verifique se você tem os pré-requisitos a seguir:

  • Instância do Google SecOps
  • Acesso privilegiado ao Akeyless Vault

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Baixe o arquivo de autenticação de ingestão.

Receber o ID do cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Configurar o encaminhamento de registros para ingestão direta no Google SecOps no Akeyless Vault

  1. Faça login na UI da Web do Akeyless Gateway.
  2. Acesse Encaminhamento de registros.
  3. Selecione Ativar.
  4. Informe os seguintes detalhes de configuração:
    • Formato do registro: selecione JSON.
    • Servidor de registro de auditoria: insira https://audit.akeyless.io/.
    • Serviço: selecione Google Chronicle.
    • Chave da conta de serviço: forneça o arquivo JSON com as credenciais da conta de serviço.
    • ID de cliente: insira seu identificador exclusivo do Google SecOps.
    • Região: insira a região em que o Google SecOps é provisionado.
    • Tipo de registro: insira AKEYLESS_VAULT.
  5. Clique em Salvar alterações.

Opcional: ingerir Syslog pelo Bindplane

Instalação do BindPlane no Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do BindPlane no Linux

  1. Abra um terminal com privilégios de root ou sudo.
  2. Execute este comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Outros recursos de instalação

Para mais opções de instalação, consulte o guia de instalação.

Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:
    • Localize o arquivo config.yaml. Normalmente, ele fica no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    • Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. Edite o arquivo config.yaml da seguinte forma:

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: 'AKEYLESS_VAULT'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID do cliente real.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber arquivo de autenticação de ingestão do Google SecOps.

Reinicie o agente do Bindlane para aplicar as mudanças

  • Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o encaminhamento de Syslog para o Bindplane no Akeyless Vault

  1. Faça login na UI da Web do Akeyless Gateway.
  2. Acesse Encaminhamento de registros.
  3. Selecione Ativar.
  4. Informe os seguintes detalhes de configuração:
    • Formato do registro: selecione JSON.
    • Servidor de registro de auditoria: insira https://audit.akeyless.io/.
    • Serviço: selecione Syslog.
    • Rede Syslog: selecione UDP. (Você pode selecionar outra opção, dependendo da configuração do agente do Bindplane).
    • Host syslog: insira o endereço IP do agente do Bindplane.
    • Formatador de syslog: selecione Texto.
    • (Opcional) TLS: marque a caixa de seleção TLS e faça upload do certificado TLS.
  5. Clique em Salvar alterações.

Tabela de mapeamento da UDM

Campo de registro Mapeamento do UDM Lógica
access_id read_only_udm.metadata.product_log_id Mapeado diretamente do campo access_id. Se não estiver presente, será extraído do campo message usando a regex access_id:\s+(?<accessid>[\w-]+).
account_id read_only_udm.target.user.userid Mapeado diretamente do campo account_id.
ação read_only_udm.security_result.action_details Mapeado diretamente do campo action.
componente read_only_udm.target.resource.name Mapeado diretamente do campo component.
duration read_only_udm.network.session_duration.seconds Mapeado diretamente do campo duration e convertido em número inteiro.
remote_addr read_only_udm.principal.ip Extraído do campo remote_addr, dividido por vírgula e adicionado à matriz principal.ip.
request_parameters.access_type read_only_udm.target.resource.attribute.labels.value (em que a chave é "access_type") Mapeado diretamente do campo request_parameters.access_type. Se não estiver presente, será extraído do campo message usando a regex access_type:\s+(?<accesstype>[\S]+).
request_parameters.comment read_only_udm.target.resource.attribute.labels.value (em que a chave é "comment") Mapeado diretamente do campo request_parameters.comment.
request_parameters.operation read_only_udm.target.resource.attribute.labels.value (em que a chave é "operation") Mapeado diretamente do campo request_parameters.operation.
request_parameters.product read_only_udm.target.resource.attribute.labels.value (em que a chave é "product") Mapeado diretamente do campo request_parameters.product. Se não estiver presente, será extraído do campo message usando a regex product:\s+(?<product>[\w\s]+).
request_parameters.token_id read_only_udm.target.resource.attribute.labels.value (em que a chave é 'token_id') Mapeado diretamente do campo request_parameters.token_id.
request_parameters.transaction_type read_only_udm.target.resource.attribute.labels.value (em que a chave é "transaction_type") Mapeado diretamente do campo request_parameters.transaction_type e convertido em string. Se não estiver presente, será extraído do campo message usando a regex transaction_type:\s+(?<transactiontype>[\S]+).
request_parameters.unique_id read_only_udm.target.resource.attribute.labels.value (em que a chave é 'unique_id') Mapeado diretamente do campo request_parameters.unique_id. Se não estiver presente, será extraído do campo message usando a regex unique_id:\s+(?<uniqueid>[\w-]+).
request_parameters.universal_identity_rotate_type read_only_udm.target.resource.attribute.labels.value (em que a chave é "universal_identity_rotate_type") Mapeado diretamente do campo request_parameters.universal_identity_rotate_type.
request_parameters.user_agent read_only_udm.target.resource.attribute.labels.value (em que a chave é "user_agent") Mapeado diretamente do campo request_parameters.user_agent.
gravidade, Mapeado diretamente do campo severity.
status read_only_udm.network.http.response_code Mapeado diretamente do campo status e convertido em número inteiro.
timestamp read_only_udm.metadata.event_timestamp Mapeado diretamente do campo timestamp da entrada de registro.
read_only_udm.metadata.log_type Fixado no código como AKEYLESS_VAULT.
read_only_udm.metadata.event_type Definido como STATUS_UPDATE se ip_present for verdadeiro. Caso contrário, o padrão será GENERIC_EVENT.
read_only_udm.metadata.vendor_name Extraído do campo message usando a regex CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data}.
read_only_udm.metadata.product_name Extraído do campo message usando a regex CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data}.
read_only_udm.metadata.product_version Extraído do campo message usando a regex CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data}.
read_only_udm.metadata.product_event_type Extraído do campo message usando a regex <%{INT}>%{TIMESTAMP_ISO8601:time}\s+%{DATA}\s+(?P<product_event_type>[\w-]+)\[%{INT}\]:\s+(?P<time2>\d{1,2}-%{MONTH}-\d{1,4}\s+\d{1,2}:\d{1,2}:\d{1,2}.\d+)\s+%{WORD}\s+%{WORD:severity}\s+CEF:0|%{DATA:device_vendor}|%{DATA:device_product}|%{DATA:device_version}|%{DATA:device_event_class_id}\s+%{WORD}\[%{INT}\]:\s+%{GREEDYDATA:kv_data}.
read_only_udm.target.namespace Extraído do campo message usando a regex namespace:\s+(?<namespace>[\S]+).
read_only_udm.security_result.severity Mapeado do campo severity: Info para INFORMATIONAL, Error para ERROR, Warning para MEDIUM, caso contrário, UNKNOWN_SEVERITY.
read_only_udm.network.http.method Mapeado do campo action: get para GET, put e Authentication para PUT, post para POST, delete para DELETE.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.