A Segurança opera por meio do App GitHub do Coroid. Esta página lista o que o App precisa para a Segurança, o que a Coroid Security verificação relata, como fazer com que o GitHub a exija e como os alertas de segurança próprios do GitHub aparecem na Segurança.
Permissões
A Segurança utiliza as permissões que o App já possui para seus repositórios: leitura de código e pull requests, além de escrita de verificações. Elas são opcionais e cada uma adiciona uma funcionalidade:
| Permissão | O que ela adiciona | Sem ela |
|---|---|---|
| Filas de merge: somente leitura, com o evento de grupo de merge | Coroid Security em commits de fila de merge | As filas de merge não obtêm resultado de Coroid Security resultado |
| Alertas do Dependabot: somente leitura, com seu evento | Importa alertas do Dependabot | Não importado |
| Alertas de varredura de código: somente leitura, com seu evento | Importa alertas de varredura de código do GitHub | Não importado |
| Alertas de varredura de segredos: somente leitura, com seu evento | Importa alertas de varredura de segredos do GitHub, sem os valores dos segredos | Não importado |
Quando o App solicita uma nova permissão, o GitHub pede ao proprietário da sua organização para aceitá-la para sua instalação. Até então, a seção Segurança → Visão geral indica quais repositórios não a possuem, com um link para a instalação no GitHub.
O Coroid também lê se cada repositório é público ou privado, a partir dos eventos do GitHub e perguntando ao GitHub, para decidir o que pode ser publicado nele. Veja Divulgação.
A verificação de Segurança do Coroid
Coroid Security é uma única verificação, com um nome só, seja executada de forma independente ou como parte do gráfico de entrega do projeto no Controle de Qualidade, de modo que um repositório possa exigir sua aplicação uma vez. Ela relata as proteções que verificam cada alteração: dependências vulneráveis e segredos vazados. O pior dos dois resultados determina o status. Os relatórios de varredura de código passam pelas verificações do Controle de Qualidade, e a revisão de segurança pela verificação de Revisão do Coroid.
Ela é executada em repositórios do GitHub conectados por meio do App:
- quando um pull request é aberto, reaberto, atualizado ou marcado como pronto para revisão;
- em cada commit de fila de merge, com a permissão de filas de merge;
- quando alguém a executa novamente no GitHub.
Ela aparece como em andamento assim que o evento chega. O link para seus detalhes abre o projeto na Segurança.
O que ela relata
| Status | Aplicado | Apenas observar |
|---|---|---|
| Cobertura completa da alteração, nada no nível ou acima do limite | Sucesso | Sucesso |
| Uma ocorrência no nível ou acima do limite | Falha | Neutro, nomeando-o |
| A varredura falhou ou não pôde ser executada, um arquivo tocado pela alteração tem cobertura parcial ou a configuração não pôde ser lida | Falha, indicando o motivo e como reexecutar | Neutro, indicando o motivo |
| Nenhum resultado em até 10 minutos | Falha, "tempo esgotado" | Neutro |
| Todas as proteções desativadas para o projeto | Neutro | Neutro |
Ela nunca é "ignorada": o GitHub considera uma verificação exigida ignorada como aprovada, de modo que uma proteção aplicada que não foi executada seria lida como aprovação. Uma verificação exigida sempre obtém um dos resultados acima, então uma fila de merge nunca espera indefinidamente.
A verificação conta apenas o que a alteração introduz, não as ocorrências já presentes no branch base. Seu texto nunca menciona uma ocorrência que não seja pública; indica quantas foram encontradas, qual o limite e que os detalhes estão no Coroid.
Exigir a verificação de Segurança do Coroid
Aplicar uma proteção faz com que a verificação falhe. O GitHub bloqueia o merge somente se o repositório exigir a verificação:
- Proteção de branch: nas Configurações do repositório → Branches, edite a regra para seu branch padrão, ative Exigir que as verificações de status sejam aprovadas antes de
mergear, e adicione
Coroid Security. - Conjuntos de regras: em Configurações → Regras → Conjuntos de regras, adicione Exigir que as verificações de status sejam
aprovadas ao conjunto de regras para seu branch padrão, adicione
Coroid Security, e selecione o App GitHub do Coroid como sua fonte. - Filas de merge: exija a verificação na mesma regra. O App precisa da permissão de filas de merge para que a verificação seja executada em commits de fila de merge.
Solicite-o assim que as proteções que você deseja aplicar estejam em vigor. Uma verificação obrigatória que apenas observa ainda será considerada válida.
Alertas de segurança do GitHub
Com Alertas de segurança do GitHub ativados em Segurança → Configurações e com as permissões acima, Segurança importa os alertas do Dependabot, da varredura de código e da varredura de segredos como observações sobre as mesmas descobertas produzidas pelas verificações próprias de Coroid. Os novos alertas chegam conforme GitHub os envia, e Coroid consulta novamente os alertas de cada repositório uma vez por dia.
- Importado, não confirmado. Um alerta que os escaneamentos do Coroid ainda não confirmaram exibe a mensagem "Importado do GitHub, ainda não confirmado". Ele é listado e contabilizado, mas não gera notificações nem bloqueios até que o escaneamento do Coroid o confirme.
- As fontes divergem. Quando o GitHub e o Coroid relatam uma descoberta de forma diferente, a descoberta indica isso e mostra o estado de cada fonte: presente, ausente, descartada ou impossível de ser lida.
- Cada fonte encerra de maneira própria. Um alerta do Dependabot é resolvido no GitHub quando o ramo padrão não possuir mais a versão vulnerável. Um alerta de varredura de código é resolvido quando a análise do ramo padrão deixar de reportá-lo. Um alerta de varredura de segredos permanece aberto até que alguém o resolva no GitHub; portanto, o merge de uma correção não o fecha.
- Permissão perdida. Se o aplicativo perder uma permissão ou o GitHub desativar um recurso, as descobertas que foram reportadas apenas por essa fonte exibirão o status "desconhecido desde" a partir desse momento, e nada será encerrado.
A Visão geral mostra, por repositório e fonte, se seus alertas foram lidos, se a permissão está ausente, se o recurso está desativado no GitHub ou se o repositório não pôde ser acessado.