Coletar registros de auditoria do CircleCI

Compatível com:

Esse analisador extrai campos dos registros de auditoria do CircleCI nos formatos CSV e JSON, transformando-os no modelo de dados unificado (UDM). Ele processa os dois formatos, realiza transformações e enriquecimentos de dados e mapeia os campos extraídos para os campos UDM correspondentes no objeto event. Ele se concentra em ações do usuário, acesso a recursos e eventos de atualização, categorizando-os e preenchendo campos relevantes da UDM, como principal, target, network e metadata.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Instância do Google SecOps.
  • Acesso privilegiado ao CircleCI.

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds
  • Central de conteúdo > Pacotes de conteúdo

Configure feeds em "Configurações do SIEM" > "Feeds".

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do CircleCI).
  5. Selecione Webhook como o Tipo de origem.
  6. Selecione CircleCI como o Tipo de registro.
  7. Clique em Próxima.
  8. Opcional: especifique valores para os seguintes parâmetros de entrada:
    • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.
    • Namespace do recurso: o namespace do recurso.
    • Rótulos de ingestão: o rótulo aplicado aos eventos deste feed.
  9. Clique em Próxima.
  10. Revise a configuração do feed na tela Finalizar e clique em Enviar.
  11. Clique em Gerar chave secreta para autenticar o feed.
  12. Copie e armazene a chave secreta. Não é possível ver essa chave secreta novamente. Se necessário, você pode gerar uma nova chave secreta, mas isso torna a anterior obsoleta.
  13. Na guia Detalhes, copie o URL do endpoint do feed no campo Informações do endpoint. É necessário especificar esse URL de endpoint no aplicativo cliente.
  14. Clique em Concluído.

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • Delimitador de divisão: o delimitador usado para separar linhas de registro, como \n.

Opções avançadas

  • Nome do feed: um valor pré-preenchido que identifica o feed.
  • Tipo de origem: método usado para coletar registros no Google SecOps.
  • Namespace do recurso: namespace associado ao feed.
  • Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.

  • Clique em Gerar chave secreta para autenticar o feed.

  • Copie e armazene a chave secreta. Não é possível ver essa chave secreta novamente. Se necessário, gere uma nova chave secreta, mas isso torna a anterior obsoleta.

  • Na guia Detalhes, copie o URL do endpoint do feed no campo Informações do endpoint. Você precisa especificar esse URL de endpoint no seu aplicativo cliente.

Criar uma chave de API para o feed de webhook

  1. Acesse o console doGoogle Cloud > Credenciais.

    Ir para Credenciais

  2. Clique em Criar credenciais e, em seguida, selecione Chave de API.

  3. Restrinja o acesso da chave de API à API Google Security Operations.

Especifique o URL do endpoint

  1. No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed do webhook.
  2. Ative a autenticação especificando a chave de API e a chave secreta como parte do cabeçalho personalizado no seguinte formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendação: especifique a chave de API como um cabeçalho em vez de no URL.

  3. Se o cliente de webhook não aceitar cabeçalhos personalizados, especifique a chave de API e a chave secreta usando parâmetros de consulta no seguinte formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Substitua:

    • ENDPOINT_URL: o URL do endpoint do feed.
    • API_KEY: a chave de API para autenticar no Google SecOps.
    • SECRET: a chave secreta gerada para autenticar o feed.

Como configurar um webhook no CircleCI

  1. Faça login na interface da Web do CircleCI.
  2. Selecione o projeto de onde você quer ingerir os registros.
  3. Clique em Configurações do projeto.
  4. Selecione Webhooks.
  5. Clique em Adicionar webhook.
  6. Especifique valores para os seguintes parâmetros de entrada:

    • Nome do webhook: forneça um nome descritivo (por exemplo, Google SecOps).
    • URL do endpoint: insira o <ENDPOINT_URL> do endpoint de API Google SecOps.
    • Eventos:selecione os eventos do CircleCI que devem acionar o webhook. Por exemplo, selecione workflow-completed para enviar dados depois que um fluxo de trabalho for concluído.
  7. Clique em Salvar para criar o webhook.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
account.id read_only_udm.about.resource.attribute.labels.value O valor de account.id do registro bruto é atribuído ao campo da UDM read_only_udm.about.resource.attribute.labels.value, em que a chave correspondente é account_id.
ação read_only_udm.metadata.product_event_type O valor de action do registro bruto é atribuído ao campo da UDM read_only_udm.metadata.product_event_type.
actor.id read_only_udm.principal.user.product_object_id O valor de actor.id do registro bruto é atribuído ao campo da UDM read_only_udm.principal.user.product_object_id.
actor.name read_only_udm.principal.user.userid O prefixo "github: " é removido do campo actor.name no registro bruto. O valor restante é atribuído ao campo UDM read_only_udm.principal.user.userid. Se actor.name existir no registro bruto, o valor USER_RESOURCE_UPDATE_CONTENT será atribuído a read_only_udm.metadata.event_type. Caso contrário, USER_RESOURCE_ACCESS será atribuído.
id read_only_udm.metadata.product_log_id O valor de id do registro bruto é atribuído ao campo da UDM read_only_udm.metadata.product_log_id. O analisador define read_only_udm.metadata.log_type como CIRCLECI. O analisador define read_only_udm.metadata.product_name como CIRCLECI. O analisador define read_only_udm.metadata.vendor_name como CIRCLECI.
occurred_at read_only_udm.metadata.event_timestamp O valor de occurred_at do log bruto é analisado como um carimbo de data/hora e atribuído ao campo da UDM read_only_udm.metadata.event_timestamp.
organization.name read_only_udm.target.administrative_domain O prefixo "github: " é removido do campo organization.name no registro bruto. O valor restante é atribuído ao campo UDM read_only_udm.target.administrative_domain.
payload.job.id read_only_udm.about.resource.attribute.labels.value O valor de payload.job.id do registro bruto é atribuído ao campo da UDM read_only_udm.about.resource.attribute.labels.value, em que a key correspondente é job_id.
payload.job.job_name read_only_udm.about.resource.attribute.labels.value O valor de payload.job.job_name do registro bruto é atribuído ao campo UDM read_only_udm.about.resource.attribute.labels.value, em que a chave correspondente é job_name.
payload.job.job_status read_only_udm.about.resource.attribute.labels.value O valor de payload.job.job_status do log bruto é atribuído ao campo da UDM read_only_udm.about.resource.attribute.labels.value, em que a key correspondente é job_status.
payload.workflow.id read_only_udm.about.resource.attribute.labels.value O valor de payload.workflow.id do registro bruto é atribuído ao campo da UDM read_only_udm.about.resource.attribute.labels.value, em que a chave correspondente é workflow_id.
request.id read_only_udm.network.session_id O valor de request.id do registro bruto é atribuído ao campo da UDM read_only_udm.network.session_id.
scope.id read_only_udm.about.resource.attribute.labels.value O valor de scope.id do registro bruto é atribuído ao campo da UDM read_only_udm.about.resource.attribute.labels.value, em que a key correspondente é scope_id. Inicialmente, o analisador define sec_action como BLOCK. Se o campo success no log bruto for verdadeiro, sec_action será alterado para ALLOW. O valor de sec_action é atribuído ao campo UDM read_only_udm.security_result.action.
target.id read_only_udm.target.resource.product_object_id O valor de target.id do registro bruto é atribuído ao campo da UDM read_only_udm.target.resource.product_object_id.
target.name read_only_udm.target.resource.name O prefixo "github: " é removido do campo target.name no registro bruto. O valor restante é atribuído ao campo da UDM read_only_udm.target.resource.name. O analisador define read_only_udm.target.resource.resource_type como STORAGE_OBJECT.
version read_only_udm.target.resource.attribute.labels.value O valor de version do registro bruto é convertido em uma string e atribuído ao campo da UDM read_only_udm.target.resource.attribute.labels.value, em que a key correspondente é version.

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