Coletar registros de auditoria do CircleCI

Versão do analisador: 2.0

Compatível com:

Esse analisador extrai campos de 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 de 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 do UDM, como principal, target, network e metadata.

Antes de começar

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

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

Configurar feeds

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações > Gerenciamento de dados > Feeds. Se você estiver em uma plataforma somente SIEM, acesse Configurações > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na página seguinte, 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 desse 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 gerar uma chave secreta e autenticar esse feed.
  12. Copie e armazene a chave secreta. Não será possível ver essa chave secreta novamente. Se necessário, é possível gerar uma nova chave secreta, mas essa ação torna a chave secreta 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.

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.

Especificar 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 especificá-la no URL.

  3. Se o cliente do webhook não for compatível com 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 autenticação no Google SecOps.
    • SECRET: a chave secreta que você gerou 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> endpoint de API do Google SecOps.
    • Eventos: selecione os eventos do CircleCI que devem acionar o webhook (por exemplo, selecione workflow-completed para enviar dados após a conclusão de um fluxo de trabalho).
  7. Clique em Salvar para criar o webhook.

Tabela de mapeamento de UDM

Campo de registro Mapeamento de 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 do 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 de 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 de 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 de 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 do 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 registro bruto é analisado como um carimbo de data/hora e atribuído ao campo de 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 de 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 do 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 do 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 registro bruto é atribuído ao campo do 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 do UDM read_only_udm.about.resource.attribute.labels.value, em que a key correspondente é workflow_id.
request.id read_only_udm.network.session_id O valor de request.id do registro bruto é atribuído ao campo do 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 UDM read_only_udm.about.resource.attribute.labels.value, em que a key correspondente é scope_id. O analisador define inicialmente sec_action como BLOCK. Se o campo success no registro bruto for verdadeiro, sec_action será alterado para ALLOW. O valor de sec_action é atribuído ao campo de 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 de 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 de 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 de UDM read_only_udm.target.resource.attribute.labels.value, em que a key correspondente é version.

Registro de alterações

Confira o registro de alterações deste analisador

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