Skip to main content

Fase 2: Preparo para a habilitação em escala

Nesta fase, você prepara os desenvolvedores e coleta dados sobre os repositórios para garantir que suas equipes estejam prontas e que você tenha tudo o que precisa para programas piloto e a distribuição do code scanning e do secret scanning.

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 Cloud. 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 Cloud.

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.

IdiomaNúmero de repositóriosNome dos repositórios
JavaScript (TypeScript)4212org/repo
org/repo
Python2012org/repo
org/repo
Go983org/repo
org/repo
Java412org/repo
org/repo
Swift111org/repo
org/repo
Kotlin82org/repo
org/repo
C12org/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.

LinguagensNúmero de repositóriosNome dos repositórios
JavaScript/Python/Go16org/repo
org/repo
Rust/TypeScript/Python12org/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.

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ê ou bloqueará o envio por push que contém o segredo. 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 Cloud é 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 Cloud 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".