Compartilhar via


Proteção do repositório

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

O código-fonte, o arquivo YAML do pipeline e os scripts e ferramentas necessários são armazenados em um repositório de controle de versão. Permissões e políticas de branch devem ser empregadas para garantir que as alterações no código e no pipeline sejam seguras. Você também pode adicionar permissões de pipeline e verificações aos repositórios.

Além disso, você deve examinar os repositórios do controle de acesso padrão.

Devido ao design do Git, a proteção em um nível de branch é o máximo que você vai obter. Os usuários com acesso de push em um repositório geralmente podem criar novos branches. Se você usar projetos de software livre do GitHub, qualquer pessoa com uma conta do GitHub poderá bifurcar seu repositório e sugerir contribuições. Como os pipelines são associados a um repositório e não a branches específicos, você deve assumir que o código e os arquivos YAML não são confiáveis.

Garfos

Se você cria repositórios públicos do GitHub, deve considerar sua posição nos builds de bifurcação. Os forks são especialmente perigosos, pois vêm de fora da sua organização. Para proteger seus produtos de códigos que vieram de contribuição, considere as recomendações a seguir.

Observação

As recomendações a seguir se aplicam principalmente à compilação de repositórios públicos do GitHub.

Não fornecer segredos para builds de fork

Por padrão, seus pipelines são configurados para compilar forks, mas segredos e recursos protegidos não são disponibilizados para os trabalhos nesses pipelines por padrão. Não desative esta última proteção.

Screenshot of fork build protection UI.

Observação

Quando você habilita compilações de bifurcação para acessar segredos, o Azure Pipelines, por padrão, restringe o token de acesso usado para builds de bifurcação. Ele tem acesso mais limitado a recursos abertos do que um token de acesso normal. Para conceder aos builds de fork as mesmas permissões que as compilações regulares, habilite a configuração Criar builds de fork com as mesmas permissões que as compilações regulares.

Screenshot of fork build protection UI in Azure DevOps Server 2020 and lower.

Observação

Mesmo que você habilite compilações de fork para acessar segredos, o Azure Pipelines, restringirá o token de acesso usado para builds de fork. Ele tem acesso mais limitado a recursos abertos do que um token de acesso normal. Você não pode desabilitar essa proteção.

Considere disparar manualmente builds de fork

Você pode desativar builds automáticos de bifurcação e, em vez disso, usar comentários de solicitação de pull como uma maneira de criar manualmente essas contribuições. Essa configuração lhe dará a oportunidade de examinar o código antes de disparar um build.

Usar agentes hospedados pela Microsoft para builds de bifurcação

Não execute builds de bifurcações em agentes auto-hospedados. Ao fazer isso, você está efetivamente fornecendo um caminho para organizações externas executarem código externo em computadores dentro de sua rede corporativa. Use agentes hospedados pela Microsoft sempre que possível. Como seu agente auto-hospedado, use alguma forma de isolamento de rede e verifique se os agentes não persistem seus estados entre os trabalhos.

Revisar alterações de código

Antes de executar o pipeline em uma solicitação de pull bifurcada, examine cuidadosamente as alterações propostas e verifique se você está confortável em executá-las.

A versão do pipeline YAML que você executará é a da solicitação de pull. Portanto, preste atenção especial às alterações no código YAML e ao código que é executado quando o pipeline é executado, como scripts de linha de comando ou testes de unidade.

Limitação do escopo do token do GitHub

Quando você cria uma solicitação de pull bifurcado do GitHub, o Azure Pipelines garante que o pipeline não possa alterar nenhum conteúdo do repositório do GitHub. Essa restrição se aplicará somente se você usar o aplicativo GitHub do Azure Pipelines para se integrar ao GitHub. Se você usar outras formas de integração com o GitHub, por exemplo, o aplicativo OAuth, a restrição não será imposta.

Branches de usuário

Os usuários em sua organização com as permissões corretas podem criar novos branches contendo código novo ou atualizado. Esse código pode ser executado pelo mesmo pipeline que seus branches protegidos. Além disso, se o arquivo YAML no novo branch for alterado, o YAML atualizado será usado para executar o pipeline. Embora esse design permita grande flexibilidade e autoatendimento, nem todas as alterações são seguras (sejam feitas de forma mal-intencionada ou não).

Se o pipeline consumir o código-fonte ou estiver definido no Azure Repos, você deverá entender completamente o modelo de permissões do Azure Repos. Especificamente, um usuário com permissão Criar Branch no nível do repositório poderá introduzir o código no repositório mesmo ele que não tenha a permissão Contribuir.

Próximas etapas

Em seguida, saiba mais sobre a proteção oferecida por verificações em recursos protegidos.