Este artigo faz parte de uma série sobre a adoção do GitHub Advanced Security em escala. Para ver o artigo anterior desta série, confira "Fase 1: Alinhar a estratégia de distribuição e as metas".
Preparo para a habilitação do code scanning
Code scanning é um recurso que você usa para analisar o código em um repositório de GitHub para localizar vulnerabilidades de segurança e erros de codificação. Quaisquer problemas identificados pela análise são exibidos em GitHub Enterprise Server. Para saber mais, confira "Sobre o exame de códigos".
A distribuição do code scanning em centenas de repositórios pode ser complexa, especialmente quando feita de maneira ineficiente. Siga estas etapas para garantir uma distribuição eficiente e bem-sucedida. Como parte da preparação, você trabalhará com suas equipes, usará a automação para coletar dados sobre os repositórios e habilitará o code scanning.
Preparo das equipes para o code scanning
Primeiro, prepare suas equipes para usar o code scanning. Quanto mais equipes usarem o code scanning, mais dados você terá para conduzir planos de correção e monitorar o progresso da distribuição. Durante essa fase, concentre-se em utilizar APIs e executar eventos de habilitação internos.
Seu foco principal deve ser o preparo do maior número possível de equipes para o uso do code scanning. Também é possível incentivar as equipes a fazer as correções adequadas, mas recomendamos priorizar a habilitação e o uso do code scanning, em vez da correção de problemas, durante essa fase.
Coleta de informações sobre os repositórios
É possível coletar informações programaticamente sobre as diferentes linguagens de programação usadas nos repositórios e usar esses dados para habilitar o code scanning em todos os repositórios que usam a mesma linguagem por meio da API GraphQL do GitHub Enterprise Server.
Nota: é possível usar nossa ferramenta disponível publicamente para coletar esses dados sem executar manualmente as consultas GraphQL descritas neste artigo. Para saber mais, confira o repositório "ghas-enablement tool".
Para coletar informações de repositórios pertencentes a várias organizações em sua empresa, use a consulta abaixo a fim de obter os nomes das organizações e, em seguida, inclua-os na consulta de repositório. Substitua OCTO-ENTERPRISE pelo nome da sua empresa.
query {
enterprise(slug: "OCTO-ENTERPRISE") {
organizations(first: 100) {
totalCount
nodes {
name
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
Para identificar quais repositórios usam quais linguagens, agrupe-os por linguagem no nível da organização. É possível modificar a consulta de exemplo do GraphQL abaixo, substituindo OCTO-ORG pelo nome da organização.
query {
organization(login: "OCTO-ORG") {
repositories(first: 100) {
totalCount
nodes {
nameWithOwner
languages(first: 100) {
totalCount
nodes {
name
}
}
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
Para saber como executar consultas do GraphQL, confira "Como formar chamadas com o GraphQL".
Em seguida, converta os dados da consulta do GraphQL em um formato legível, como uma tabela.
Idioma | Número de repositórios | Nome dos repositórios |
---|---|---|
JavaScript (TypeScript) | 4212 | org/repo org/repo |
Python | 2012 | org/repo org/repo |
Go | 983 | org/repo org/repo |
Java | 412 | org/repo org/repo |
Swift | 111 | org/repo org/repo |
Kotlin | 82 | org/repo org/repo |
C | 12 | org/repo org/repo |
É possível filtrar na tabela as linguagens que não têm suporte atualmente no GitHub Advanced Security.
Se você tiver repositórios com várias linguagens, formate os resultados do GraphQL de acordo com a tabela abaixo. Filtre as linguagens sem suporte, mas mantenha todos os repositórios com pelo menos uma linguagem com suporte. Será possível habilitar o code scanning nesses repositórios e todas as linguagens com suporte serão examinadas.
Linguagens | Número de repositórios | Nome dos repositórios |
---|---|---|
JavaScript/Python/Go | 16 | org/repo org/repo |
Rust/TypeScript/Python | 12 | org/repo org/repo |
Ao compreender quais repositórios usam quais linguagens, é possível identificar aqueles que são candidatos para programas piloto na fase 3 e preparar-se para habilitar o code scanning em todos os repositórios, uma linguagem por vez, na fase 5.
Habilitação do code scanning para o seu dispositivo
Antes de prosseguir com os programas piloto e com a distribuição do code scanning em toda a empresa, primeiro você precisa habilitar o code scanning para o seu dispositivo. Para saber mais, confira "Como configurar o exame de códigos para o seu dispositivo".
Preparo para a habilitação do secret scanning
Se um projeto se comunica com um serviço externo, ele pode usar um token ou uma chave privada para a autenticação. Se você marcar um segredo em um repositório, qualquer pessoa que tenha acesso de leitura ao repositório pode usar o segredo para acessar o serviço externo com seus privilégios. O Secret scanning examinará todo o histórico do Git em todos os branches presentes nos repositórios do GitHub em busca de segredos e alertará você. Para obter mais informações, confira "Sobre a verificação de segredos".
Considerações para a habilitação do secret scanning
A funcionalidade secret scanning do GitHub Enterprise Server é ligeiramente diferente do code scanning, pois não requer nenhuma configuração específica por linguagem de programação ou por repositório e exige menos configuração geral para o início do uso. Isso significa que a habilitação do secret scanning no nível organizacional pode ser fácil, mas clicar em Habilitar tudo no nível da organização e marcar a opção Habilitar o secret scanning automaticamente em cada novo repositório tem alguns efeitos subjacentes que devem ser considerados:
- Consumo de licença
A habilitação do secret scanning em todos os repositórios consumirá todas as suas licenças, mesmo que ninguém esteja usando o exame de códigos. Isso não é um problema, a menos que você planeje aumentar o número de desenvolvedores ativos em sua organização. Se o número de desenvolvedores ativos aumentar nos próximos meses, você excederá o limite de licença e não conseguirá usar o GitHub Advanced Security em repositórios recém-criados. - Alto volume inicial de segredos detectados
Se você estiver habilitando o secret scanning em uma organização grande, encontrará um alto número de segredos. Às vezes, as organizações podem se chocar com isso e disparar os alarmes. Se você deseja ativar o secret scanning em todos os repositórios ao mesmo tempo, planeje sua resposta aos vários alertas que serão gerados em toda a organização.
O Secret scanning pode ser habilitado para repositórios individuais. Para obter mais informações, confira "Como configurar a secret scanning para seus repositórios". O Secret scanning também pode ser habilitado para todos os repositórios em sua organização, conforme descrito acima. Para saber mais sobre a habilitação para todos os repositórios, confira "Como gerenciar as configurações de segurança e de análise da sua organização".
Padrões personalizados para o secret scanning
O Secret scanning detecta um grande número de padrões predefinidos, mas também pode ser configurado para detectar padrões personalizados, como formatos de segredos exclusivos de sua infraestrutura ou usados por integradores que o secret scanning do GitHub Enterprise Server não detecta atualmente. Saiba mais sobre os segredos com suporte para os padrões dos parceiros em "Padrões de exame de segredos".
Ao auditar os repositórios e falar com as equipes de segurança e de desenvolvimento, crie uma lista dos tipos de segredos que você usará posteriormente para configurar padrões personalizados para o secret scanning. Para obter mais informações, confira "Como definir padrões personalizados para a verificação de segredos".
Para ver o próximo artigo desta série, confira "Fase 3: Programas piloto".