Skip to main content

Como transmitir o log de auditoria para sua empresa

Saiba como transmitir dados de eventos de auditoria e do Git de GitHub para um sistema externo de gerenciamento de dados.

Quem pode usar esse recurso?

Enterprise owners

Observação

Webhooks podem ser uma boa alternativa ao log de auditoria ou à pesquisa de API para determinados casos de uso. Os webhooks são uma maneira de o GitHub notificar seu servidor quando houver eventos específicos para um repositório, organização ou empresa. Em comparação com a API ou com a pesquisa de log de auditoria, os webhooks podem ser mais eficientes se você quiser apenas conhecer e, possivelmente, registrar quando determinados eventos ocorrerem em sua empresa, organização ou repositório. Confira Documentação de Webhooks.

Sobre a transmissão do log de auditoria

Você pode ajudar a proteger sua propriedade intelectual e manter a conformidade para sua empresa usando o streaming para manter cópias dos seus dados de log de auditoria. O log de auditoria detalha eventos como alterações nas configurações e acesso, subscrição de usuário, permissões de aplicativo e muito mais. Confira Auditar eventos de log para sua empresa, Eventos de registro de auditoria para a sua organização e Eventos do log de segurança.

O streaming de dados de log de auditoria tem esses benefícios:

  • Exploração de dados. Examine eventos transmitidos usando sua ferramenta preferida para consultar grandes quantidades de dados. O fluxo contém eventos de auditoria e eventos git em toda a conta corporativa.
  • Continuidade dos dados. Se você pausar um fluxo, ele reterá um buffer por sete dias. Portanto, não há perda de dados na primeira semana. Quando o fluxo permanece em pausa por mais de sete dias, ele é retomado a partir de um ponto uma semana antes da hora atual. Se pausado por três semanas ou mais, o stream não reterá nenhum dado e começará novamente a partir do horário atual.
  • Retenção de dados. Mantenha os logs de auditoria e os dados de eventos do Git exportados o tempo necessário.

Você pode configurar, pausar ou excluir um fluxo a qualquer momento. O fluxo exporta dados de auditoria e eventos do Git para todas as organizações em sua empresa, relativos a atividades a partir do momento em que o fluxo está habilitado.

Todos os logs de auditoria transmitidos são enviados como arquivos JSON compactados. O formato do nome de arquivo está emYYYY/MM/HH/MM/<uuid>.json.gz.

Observação

GitHub usa um método de entrega pelo menos uma vez. Determinados problemas da rede ou do sistema poderão duplicar alguns eventos.

Verificações de integridade para streams de logs de auditoria

A cada 24 horas, ocorre a execução de uma verificação de integridade para cada stream. Se um stream tiver sido configurado incorretamente, um email será enviado aos proprietários da empresa. Para impedir que os eventos de log de auditoria sejam descartados do fluxo, um fluxo configurado incorretamente deve ser corrigido em, no máximo, seis dias.

Para corrigir sua configuração de streaming, siga as etapas em Configurando a transmissão do log de auditoria.

Configurando a transmissão do log de auditoria

Para configurar o fluxo de log de auditoria, siga as instruções para seu provedor:

Observação

Para obter uma lista de intervalos de endereços IP que GitHub usa para conexões com o ponto de extremidade de streaming, use a API REST. O endpoint meta para GitHub.com inclui uma chave hooks com uma lista de endereços IP. Confira Pontos de extremidade da API REST para metadados.

Streaming para vários endpoints

Observação

Esse recurso está atualmente em prévia pública e sujeito a alterações.

Você pode transmitir logs de auditoria para múltiplos destinos. Por exemplo, você pode transmitir seu log de auditoria para dois pontos de extremidade do mesmo tipo ou para dois provedores diferentes. Para configurar vários streams, siga as instruções para cada provedor.

Configurando a transmissão para o Amazon S3

Você pode configurar o streaming para S3 com chaves de acesso ou, para evitar armazenar no GitHub segredos com longa duração, usar o OpenID Connect (OIDC).

Como configurar o streaming para o S3 com chaves de acesso

Para configurar o streaming de log de auditoria de GitHub, você precisará:

  • Seu ID de acesso ao AWS
  • Sua chave de segredo para o AWS

Para obter informações sobre como criar ou acessar a ID da chave de acesso e a chave secreta, confira Noções básicas e obtenção das suas credenciais da AWS na documentação da AWS.

Do AWS:

  1. Crie um bucket e bloqueie o acesso público a ele. Consulte Criar, configurar e trabalhar com buckets do Amazon S3 na documentação da AWS.

  2. Crie uma política que permita que o GitHub escreva no bucket. Copie o JSON a seguir e substitua EXAMPLE-BUCKET pelo nome do bucket. O GitHub exige apenas as permissões deste JSON.

    {
       "Version": "2012-10-17",
       "Statement": [
          {
             "Sid": "VisualEditor0",
             "Effect": "Allow",
             "Action": [
                "s3:PutObject"
             ],
             "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/*"
         }
       ]
    }
    

    Confira Criação de políticas do IAM na documentação da AWS.

De GitHub:

  1. Navegue até sua empresa. Por exemplo, na página Enterprises em GitHub.com.

  2. Na parte superior da página, clique em Settings.

  3. Em "Configurações", clique em Audit log.

  4. Em "Log de auditoria", clique em Streaming de log.

  5. Selecione o menu suspenso Configurar fluxo e clique em Amazon S3.

  6. Em "Autenticação", clique em Teclas de acesso.

  7. Defina as configurações de fluxo.

    • Em "Região", selecione a região do bucket. Por exemplo, us-east-1.
    • Em "Bucket", digite o nome do bucket de destino da transmissão. Por exemplo, auditlog-streaming-test.
    • Em "ID da Chave de Acesso", digite a ID da chave de acesso. Por exemplo, ABCAIOSFODNN7EXAMPLE1.
    • Em "Chave Secreta", digite a chave secreta. Por exemplo, aBcJalrXUtnWXYZ/A1MDENG/zPxRfiCYEXAMPLEKEY.
  8. Para verificar se o GitHub pode se conectar ao ponto de extremidade do Amazon S3 e fazer gravações nele, clique em Verificar ponto de extremidade.

  9. Depois de verificar com êxito o ponto de extremidade, clique em Salvar.

Como configurar o streaming para o S3 com o OpenID Connect

Observação

O streaming de log de auditoria para S3 usando OpenID Connect está GitHub Enterprise Cloud com residência de dados indisponível no momento. Confira Visão geral de recursos do GitHub Enterprise Cloud com residência de dados.

Do AWS:

  1. Adicione o GitHub provedor OIDC ao IAM. Confira Criar um provedor de identidade OpenID Connect (OIDC) na documentação da AWS.

    • Para a URL do provedor, use https://oidc-configuration.audit-log.githubusercontent.com.
    • Para "Audiência", use sts.amazonaws.com.
  2. Crie um bucket e bloqueie o acesso público a ele. Consulte Criar, configurar e trabalhar com buckets do Amazon S3 na documentação da AWS.

  3. Crie uma política que permita que o GitHub escreva no bucket. Copie o JSON a seguir e substitua EXAMPLE-BUCKET pelo nome do bucket. O GitHub exige apenas as permissões deste JSON.

    {
       "Version": "2012-10-17",
       "Statement": [
          {
             "Sid": "VisualEditor0",
             "Effect": "Allow",
             "Action": [
                "s3:PutObject"
             ],
             "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/*"
         }
       ]
    }
    

    Confira Criação de políticas do IAM na documentação da AWS.

  4. Configure a função e a política de confiança para o GitHub IdP. Consulte Criar uma função para identidade da Web ou Federação do OpenID Connect (console) na documentação da AWS.

    • Adicione a política de permissões que você criou anteriormente para permitir gravações no bucket.

    • Edite a relação de confiança para adicionar o campo sub às condições de validação, substituindo ENTERPRISE pelo nome da sua empresa.

      Observação

      O valor ENTERPRISE diferencia maiúsculas de minúsculas. Se o nome da sua empresa contiver letras maiúsculas, use o mesmo tipo de letra na política de relação de confiança.

      "Condition": {
         "StringEquals": {
            "oidc-configuration.audit-log.githubusercontent.com:aud": "sts.amazonaws.com",
            "oidc-configuration.audit-log.githubusercontent.com:sub": "https://github.com/ENTERPRISE"
          }
       }
      
    • Anote o ARN (Nome do Recurso da Amazon) da função criada.

De GitHub:

  1. Navegue até sua empresa. Por exemplo, na página Enterprises em GitHub.com.

  2. Na parte superior da página, clique em Settings.

  3. Em "Configurações", clique em Audit log.

  4. Em "Log de auditoria", clique em Streaming de log.

  5. Selecione o menu suspenso Configurar fluxo e clique em Amazon S3.

  6. Em "Autenticação", clique em OpenID Connect.

  7. Defina as configurações de fluxo.

    • Em "Região", selecione a região do bucket. Por exemplo, us-east-1uma opção para Descoberta Automática também está disponível.
    • Em "Bucket", digite o nome do bucket de destino da transmissão. Por exemplo, auditlog-streaming-test.
    • Em "Função do ARN", digite a função do ARN que você já havia anotado. Por exemplo, arn:aws::iam::1234567890:role/github-audit-log-streaming-role.
  8. Para verificar se o GitHub pode se conectar ao ponto de extremidade do Amazon S3 e fazer gravações nele, clique em Verificar ponto de extremidade.

  9. Depois de verificar com êxito o ponto de extremidade, clique em Salvar.

Desabilitação do streaming para S3 com o OpenID Connect

Para desabilitar o streaming para S3 com o OIDC, exclua o GitHub provedor OIDC que você criou no AWS ao configurar o streaming. Confira Criar um provedor de identidade OpenID Connect (OIDC) na documentação da AWS.

Se você desabilitar o streaming devido a uma vulnerabilidade de segurança no OIDC, depois de excluir o provedor, configure o streaming com chaves de acesso até que a vulnerabilidade seja resolvida. Confira Configurar o streaming para o S3 com chaves de acesso.

Integração com o AWS CloudTrail Lake

Você pode consolidar seus logs de auditoria integrando o streaming ao S3 com o AWS CloudTrail Lake. Consulte a documentação AWS CloudTrail ou o log de auditoria GitHub para a Auditoria Aberta do CloudTrail no repositório aws-samples/aws-cloudtrail-lake-github-audit-log.

Configurando o streaming para Armazenamento de Blobs do Azure

Observação

O streaming de logs de auditoria para o armazenamento de blobs no Azure Governamental não é compatível.

Antes de configurar um fluxo em GitHub, primeiro crie uma conta de armazenamento e um contêiner em Microsoft Azure. Consulte Introdução ao Armazenamento de Blobs do Azure na documentação da Microsoft.

Para configurar o stream, você precisa da URL de um token SAS.

Do portal do Microsoft Azure:

  1. Na Página Inicial, clique em Contas do Armazenamento.
  2. Em "Nome", clique no nome da conta de armazenamento que deseja usar.
  3. Em "Armazenamento de dados", clique em Contêineres.
  4. Clique no nome do contêiner que você deseja usar.
  5. Na barra lateral esquerda, em "Configurações", clique em Tokens de acesso compartilhado.
  6. Selecione o menu suspenso Permissões e as opções Create e Write, depois desmarque todas as outras opções.
  7. Defina uma data de expiração que esteja em conformidade com sua política de rotação de segredos.
  8. Clique em Gerar token SAS e URL.
  9. Copie o valor do campo URL SAS de Blob exibido. Você usará essa URL em GitHub.

De GitHub:

  1. Navegue até sua empresa. Por exemplo, na página Enterprises em GitHub.com.
  2. Na parte superior da página, clique em Settings.
  3. Em "Configurações", clique em Audit log.
  4. Em "Log de auditoria", clique em Streaming de log.
  5. Selecione o menu suspenso Configurar fluxo e clique em Armazenamento de Blobs do Azure.
  6. Na página de configuração, insira a URL SAS do blob copiada no Azure. O campo Contêiner é preenchido automaticamente com base na URL.
  7. Clique em Marque o ponto de extremidade para verificar se GitHub pode se conectar e gravar no ponto de extremidade Armazenamento de Blobs do Azure.
  8. Depois de verificar com êxito o ponto de extremidade, clique em Salvar.

Configurando o streaming para Hubs de Eventos do Azure

Observação

Não há suporte para instâncias de Hubs de Eventos em Azure Governamental.

Antes de configurar um stream em GitHub, você precisa:

Do portal do Microsoft Azure:

  1. Na parte superior da página, use a caixa de pesquisa para pesquisar "Hubs de Eventos".
  2. Selecione a opção Hubs de Eventos. Os nomes dos centros de eventos estão listados.
  3. Faça uma observação do nome do hub de eventos para o qual você deseja transmitir. Clique no hub de eventos.
  4. No menu à esquerda, clique em Políticas de acesso compartilhado.
  5. Selecione uma política de acesso compartilhado na lista de políticas ou crie uma política.
  6. Copie a cadeia de conexão do campo Connection string-primary key.

De GitHub:

  1. Navegue até sua empresa. Por exemplo, na página Enterprises em GitHub.com.
  2. Na parte superior da página, clique em Settings.
  3. Em "Configurações", clique em Audit log.
  4. Em "Log de auditoria", clique em Streaming de log.
  5. Selecione o menu suspenso Configurar fluxo e clique em Hubs de Eventos do Azure.
  6. Na página de configuração, insira:
    • O nome da instância do Hubs de Eventos do Azure.
    • A cadeia de conexão.
  7. Clique em Marque o ponto de extremidade para verificar se GitHub pode se conectar e gravar no ponto de extremidade do Hub de Eventos Azure.
  8. Depois de verificar com êxito o ponto de extremidade, clique em Salvar.

Configurando streaming para o Datadog

Para configurar o streaming para o Datadog, crie um token de cliente ou uma chave de API no Datadog e configure o streaming GitHub de log de auditoria usando o token para autenticação. Você não precisa criar um bucket ou outro contêiner de armazenamento no Datadog.

Depois de configurar o streaming para o Datadog, você poderá ver seus dados de log de auditoria filtrando por "github.audit.streaming". Confira Gerenciamento de Log.

  1. Se ainda não tiver uma conta do Datadog, crie uma.
  2. No Datadog, gere um token de cliente ou uma chave de API e clique em Copiar chave. Consulte a API e as chaves de aplicativo no Datadog Docs.
  3. Navegue até sua empresa. Por exemplo, na página Enterprises em GitHub.com.
  4. Na parte superior da página, clique em Settings.
  5. Em "Configurações", clique em Audit log.
  6. Em "Log de auditoria", clique em Streaming de log.
  7. Selecione o menu dropdown Configurar stream e clique em Datadog.
  8. No campo Token, cole o token copiado anteriormente.
  9. Selecione o menu suspenso Site e clique no site do Datadog. Para determinar seu site, compare sua URL do Datadog com a tabela em Sites do Datadog em Datadog Docs.
  10. Para verificar se GitHub pode se conectar e escrever no endpoint do Datadog, clique em Verificar endpoint.
  11. Depois de verificar com êxito o ponto de extremidade, clique em Salvar.
  12. Após alguns minutos, confirme se os dados do log de auditoria aparecem na guia Logs do Datadog. Se ele não aparecer, confirme se o token e o site estão corretos no GitHub.

Configurando a transmissão para o Google Cloud Storage

Para configurar o streaming para o Google Cloud Storage, crie uma conta de serviço no Google Cloud com as credenciais e permissões apropriadas e configure o streaming GitHub de log de auditoria usando as credenciais da conta de serviço para autenticação.

  1. Crie uma conta de serviço para o Google Cloud. Você não precisa definir os controles de acesso ou as funções do IAM para esta conta. Confira Criar e gerenciar contas de serviço na documentação do Google Cloud.

  2. Crie uma chave JSON para a conta de serviço e armazene a chave com segurança. Confira Criar e gerenciar chaves de conta de serviço na documentação do Google Cloud.

  3. Se ainda não o fez, crie um bucket. Consulte Criando buckets de armazenamento na documentação do Google Cloud.

  4. Dê à conta de serviço a função do Storage Object Creator para o bucket. Confira Como usar permissões de IAM de Nuvem na documentação do Google Cloud.

  5. Navegue até sua empresa. Por exemplo, na página Enterprises em GitHub.com.

  6. Na parte superior da página, clique em Settings.

  7. Em "Configurações", clique em Audit log.

  8. Em "Log de auditoria", clique em Streaming de log.

  9. Selecione o menu suspenso Configurar fluxo e clique em Google Cloud Storage.

  10. Em "Bucket", digite o nome do seu bucket do Google Cloud Storage.

  11. Em "Credenciais do JSON ", cole todo o conteúdo do arquivo de chave do JSON da sua conta de serviço.

  12. Para verificar se o GitHub pode se conectar e gravar no bucket do Google Cloud Storage, clique em Verificar endpoint.

  13. Depois de verificar com êxito o ponto de extremidade, clique em Salvar.

Configurando a transmissão para o Splunk

Para transmitir os logs de auditoria para o ponto de extremidade do Coletor de Eventos HTTP (HEC) do Splunk, você deverá garantir que o ponto de extremidade esteja configurado para aceitar conexões HTTPS. Confira Configurar e usar o Coletor de Eventos HTTP no Splunk Web na documentação do Splunk.

Observação

GitHub valida o ponto de extremidade HEC por meio de <Domain>:port/services/collector. Se estiver hospedando por conta própria o endpoint (por exemplo, com o Splunk HEC Receiver via OpenTelemetry), certifique-se de que esteja acessível nesse destino.

  1. Navegue até sua empresa. Por exemplo, na página Enterprises em GitHub.com.

  2. Na parte superior da página, clique em Settings.

  3. Em "Configurações", clique em Audit log.

  4. Em "Log de auditoria", clique em Streaming de log.

  5. Selecione o menu suspenso Configurar fluxo e clique em Splunk.

  6. Na página de configuração, insira:

    • O domínio onde o aplicativo para o qual você deseja transmitir está hospedado.

      Se você estiver usando o Splunk Cloud, Domain deve ser http-inputs-<host>, em que host é o domínio usado na plataforma. Por exemplo, http-inputs-mycompany.splunkcloud.com.

      Se você estiver usando a avaliação gratuita do Splunk Cloud, Domain deve ser inputs.<host>, em que host é o domínio usado na plataforma. Por exemplo, inputs.mycompany.splunkcloud.com.

    • A porta sobre a qual o aplicativo aceita dados.

      Se você estiver usando o Splunk Cloud, Port deve ser 443.

      Se você estiver usando a versão de avaliação gratuita do Splunk Cloud, Port deve ser 8088.

    • Um token que GitHub pode usar para autenticar o aplicativo de terceiros.

  7. Mantenha a caixa de seleção Habilitar verificação SSL marcada.

    Os logs de auditoria são sempre transmitidos como dados criptografados, no entanto, com essa opção selecionada, GitHub verifica o certificado SSL da instância do Splunk ao fornecer eventos. A verificação SSL ajuda a garantir que os eventos sejam entregues no ponto de extremidade da sua URL de forma segura. A verificação é opcional, mas recomendamos que você deixe a verificação SSL ativada.

  8. Clique em Verificar endpoint para verificar se GitHub pode se conectar e gravar no endpoint Splunk.

  9. Depois de verificar com êxito o ponto de extremidade, clique em Salvar.

Pausando a transmissão do log de auditoria

A pausa da transmissão permite que você execute a manutenção no aplicativo de recebimento sem perder dados de auditoria. Os logs de auditoria são armazenados por até sete dias em GitHub e, em seguida, são exportados quando você retoma o fluxo.

Datadog aceita apenas logs de até 18 horas no passado. Se você pausar um fluxo para um ponto de extremidade do Datadog por mais de 18 horas, corre o risco de perder logs que o Datadog não aceitará depois de retomar o streaming.

  1. Navegue até sua empresa. Por exemplo, na página Enterprises em GitHub.com.
  2. Na parte superior da página, clique em Settings.
  3. Em "Configurações", clique em Audit log.
  4. Em "Log de auditoria", clique em Streaming de log.
  5. À direita do fluxo configurado, clique em Pausar fluxo.
  6. Uma mensagem de confirmação é exibida. Clique em Pausar fluxo para confirmar.

Para reiniciar a transmissão, clique em Retomar transmissão.

Excluindo o fluxo de log de auditoria

  1. Navegue até sua empresa. Por exemplo, na página Enterprises em GitHub.com.
  2. Na parte superior da página, clique em Settings.
  3. Em "Configurações", clique em Audit log.
  4. Em "Log de auditoria", clique em Streaming de log.
  5. Em "Zona de Perigo", clique em Excluir fluxo.
  6. Uma mensagem de confirmação é exibida. Clique em Excluir fluxo para confirmar.

Ativar a transmissão de logs de auditoria de solicitações de API

Observação

Nem todas as solicitações à API são incluídas no fluxo de log de auditoria depois que esse recurso é habilitado. O streaming de solicitações à API é limitado a pontos de extremidade relevantes para segurança.

  1. Navegue até sua empresa. Por exemplo, na página Enterprises em GitHub.com.
  2. Na parte superior da página, clique em Settings.
  3. Em "Configurações", clique em Audit log.
  4. Em "Log de auditoria", clique em Configurações.
  5. Em "Solicitações de API", selecione Habilitar Eventos de Solicitação de API.
  6. Clique em Salvar.