Sobre a importância de dar acesso a registros privados
Quando o código em um repositório tem dependências armazenadas em um registro privado, alguns recursos de segurança precisam de acesso ao registro para permitir que eles funcionem efetivamente. Sem acesso a todas as dependências de um repositório, a eficácia de code scanning a configuração padrão e Dependabot são limitadas.
Code scanning configuração padrão de acesso a registros privados
Se você não definir o acesso aos registros privados usados pela sua organização, code scanning só coletará os dados necessários das dependências disponíveis em registros públicos. Na maioria das vezes, é suficiente para exibir a maioria das vulnerabilidades. No entanto, em alguns casos, a falta de acesso pode levar a falsos resultados negativos. Em outras palavras, code scanning não é possível detectar uma vulnerabilidade no código porque ele não tem todas as informações necessárias para analisar o código. Por exemplo, alguns dos caminhos de fluxo de dados podem não ser detectados porque as etapas são definidas em dependências que não são acessíveis e code scanning não sabem como interpretá-los.
Quando você configura o acesso aos registros privados usados em sua organização, code scanning tem acesso a todas as informações necessárias e é muito menos provável que perca uma vulnerabilidade.
Code scanning A configuração padrão dá suporte aos seguintes tipos de registro:
| Linguagem | Tipos de registro |
|---|---|
| C# | Feed do NuGet. |
| Go | Servidor GOPROXY, Origem do Git |
| Java | Repositório Maven |
Dica
Você pode definir um tipo de registro para cada organização. Se as bases de código em sua organização usarem mais de um registro de um determinado tipo, você deverá configurar um ponto de acesso unificado ou definir o acesso ao registro mais importante para as bases de código nessa organização.
Definindo o acesso ao Registro para code scanning configuração padrão
Você precisa ser um proprietário da organização para configurar o acesso a registros privados na interface do usuário. Você também pode usar a API REST com as permissões do proprietário da organização ou {read,write}_org_private_registries.
- Na guia Settings da organização, role a página para baixo até a seção “Security” e selecione Secrets and variables.
- Na lista expandida de segredos e variáveis, selecione Private registries para exibir a página de registros privados.
- Selecione New private registry para adicionar os dados de acesso de um registro privado.
- Use os campos URL e Type para definir o local e o tipo do registro:
*
URL é o local do registro privado. Por exemplo, para usar o registro GitHub Packages para NuGet:
https://nuget.pkg.github.com/ORGANIZATION/index.json, em queORGANIZATIONé o nome da sua organização no GitHub. * Type é o tipo de registro. - Selecione Token ou Username and password, dependendo do método de autenticação, e insira os dados nos campos adequados. Alguns tipos de tokens de autenticação, como um GitHubPersonal Access Token, estão vinculados a uma identidade de usuário específica. Selecione a opção Nome de usuário e senha para eles e insira o nome de usuário relevante como Nome de usuário e o token como Senha.
- Defina os repositórios da organização que podem acessar o registro privado usando estas opções: todos, privados e internos ou somente repositórios selecionados.
- Quando terminar de definir o registro privado, selecione Add Registry para salvar as informações.
Dica
Quando você adiciona um registro privado a uma organização, a senha ou o token é armazenado como um segredo criptografado. Depois que o registro for criado, a senha ou o token não poderão ser exibidos novamente.
Habilitando code scanning a configuração padrão para usar uma definição de registro
Quando você habilita a code scanning configuração padrão para um repositório ou grupo de repositórios, GitHub verifica se os repositórios têm acesso a registros privados existentes. Se algum registro privado estiver disponível para um repositório, code scanning usará as definições relevantes durante a análise.
Ao configurar registros privados pela primeira vez, você precisa desabilitar e habilitar code scanning novamente a configuração padrão para todos os repositórios que você deseja usar a nova definição. As configurações novas ou alteradas serão selecionadas automaticamente nas execuções seguintes.
Para idiomas que dão suporte a registros de pacotes privados, a configuração padrão code scanning produzirá informações sobre o página de status da ferramenta. Isso mostra quais configurações de registros privados estavam disponíveis para uma análise, mas não se a configuração padrão conseguiu baixar com êxito as dependências privadas a partir delas. Para obter mais informações sobre página de status da ferramenta, confira Usar a página de status da ferramenta para verificação de código.
Como alternativa, você pode confirmar se os registros privados foram usados com êxito pela análise de code scanning, examinando os arquivos de log de ações, consulte Logs de análise de código.
Code scanning acesso à configuração avançada para registros privados
Code scanning A instalação avançada usa todos os registros privados disponíveis para o fluxo de trabalho que executa a análise usando o `codeql-action`. Ela não tem acesso aos registros privados na organização usados pela configuração padrão.
Para linguagens compiladas, o codeql-action deve observar um build do código. Você pode revisar o fluxo de trabalho de build existente e também executar o codeql-action ou criar um fluxo que compila a versão de produção do código e também executa o codeql-action.
Todos os registros privados usados pelo build também precisam estar acessíveis ao fluxo de trabalho que executa o codeql-action. Para mais informações sobre como solucionar problemas, confira Como definir a configuração avançada para verificação de código.
Dependabot atualiza o acesso a registros privados
Dependabot pode usar qualquer um dos registros privados no nível da organização, bem como usar todos os registros privados definidos no `dependabot.yml` arquivo no repositório.
Dependabot não é possível verificar se há atualizações de segurança ou de versão para o código armazenado em um registro privado, a menos que ele possa acessar o registro. Se você não configurar o acesso ao registro privado, então Dependabot não poderá gerar solicitações de pull para atualizar qualquer dependência armazenada no registro.
Quando você configura o acesso a um ou mais registros privados, Dependabot pode propor solicitações de pull para atualizar uma dependência vulnerável ou manter uma dependência, consulte Configurando o acesso a registros privados para Dependabot e Diretrizes para a configuração de registros privados para o Dependabot.