Acessar repositórios, artefatos e outros recursos

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Em tempo de execução, cada trabalho em um pipeline pode acessar outros recursos no Azure DevOps. Por exemplo, um trabalho pode:

  • Fazer check-out o código-fonte de um Repositório do Git
  • Adicionar uma tag ao repositório
  • Acessar um feed no Azure Artifacts
  • Carregar logs do agente para o serviço
  • Carregar resultados de teste e outros artefatos do agente para o serviço
  • Atualizar um item de trabalho

O Azure Pipelines usa tokens de acesso ao trabalho para executar essas tarefas. Um token de acesso ao trabalho é um token de segurança gerado dinamicamente pelo Azure Pipelines para cada trabalho em tempo de execução. O agente no qual o trabalho está sendo executado usa o token de acesso ao trabalho para acessar esses recursos no Azure DevOps. Você pode controlar a quais recursos seu pipeline tem acesso controlando como as permissões são concedidas aos tokens de acesso ao trabalho.

As permissões do token são derivadas (a) do escopo da autorização de trabalho e (b) das permissões definidas na conta de serviço de build de projeto ou coleção.

Escopo da autorização do trabalho

Você pode definir o escopo da autorização do trabalho como coleção ou projeto. Ao definir o escopo como coleção, você opta por permitir que os pipelines acessem todos os repositórios na coleção ou organização. Ao definir o escopo como projeto, você opta por restringir o acesso somente aos repositórios que estão no mesmo projeto que o pipeline.

O escopo da autorização de trabalho pode ser definido para toda a organização do Azure DevOps ou para um projeto específico.

Observação

No Azure DevOps Server 2020, Limitar o escopo da autorização de trabalho ao projeto atual se aplica apenas a pipelines YAML e pipelines de build clássicos. Essa configuração não se aplica a pipelines de lançamento clássicos. Os pipelines de lançamento clássicos sempre são executados com o escopo da coleção de projetos.

Para definir o escopo da autorização de trabalho para a organização:

  • Navegue até a página de configurações da sua organização na interface do usuário do Azure DevOps.
  • Selecione Configurações em Pipelines.
  • Habilite Limitar o escopo da autorização de trabalho ao projeto atual para limitar o escopo ao projeto. Essa é a configuração recomendada, pois aprimora a segurança dos pipelines.

Para definir o escopo da autorização de trabalho para um projeto específico:

  • Navegue até a página de configurações do projeto na interface do usuário do Azure DevOps.
  • Selecione Configurações em Pipelines.
  • Habilite Limitar o escopo da autorização de trabalho ao projeto atual para limitar o escopo ao projeto. Essa é a configuração recomendada, pois aprimora a segurança dos pipelines.
  • Para definir o escopo da autorização de trabalho no nível da organização para todos os projetos, escolhaConfigurações da organização>Pipelines>Configurações.
  • Para definir o escopo da autorização de trabalho para um projeto específico, escolha Configurações do projeto>Pipelines>Configurações.

Habilite uma ou mais das configurações a seguir. A habilitação dessas configurações é recomendada, pois melhora a segurança dos pipelines.

  • Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de não lançamento – essa configuração se aplica a pipelines YAML e pipelines de build clássicos e não se aplica a pipelines de lançamento clássicos.
  • Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de lançamento – essa configuração se aplica somente a pipelines de lançamento clássicos.

Observação

Se o escopo estiver definido como projeto no nível da organização, você não poderá alterar o escopo em cada projeto.

Importante

Se o escopo não for restrito no nível da organização ou do projeto, cada trabalho em seu pipeline YAML obterá um token de acesso de trabalho no escopo da coleção. Em outras palavras, seu pipeline tem acesso a qualquer repositório em qualquer projeto da sua organização. Se um invasor conseguir obter acesso a apenas um pipeline em apenas um projeto, essa pessoa poderá obter acesso a qualquer repositório em sua organização. Por isso, é recomendável restringir o escopo no mais alto nível (configurações da organização) para restringir o ataque a apenas um projeto.

Se você usar o Azure DevOps Server 2019, todos os trabalhos YAML serão executados com o escopo da autorização de trabalho definido como coleção. Em outras palavras, esses trabalhos têm acesso a todos os repositórios em sua coleção de projetos. Não é possível alterar isso no Azure DevOps Server 2019.

Os pipelines YAML não estão disponíveis no TFS.

Observação

Se o pipeline estiver em um projeto público, o escopo da autorização do trabalho será automaticamente restrito ao projeto, independentemente do que você definir em qualquer configuração. Os trabalhos em um projeto público podem acessar recursos como artefatos de build ou resultados de teste somente dentro do projeto, mas não de outros projetos da organização.

Limitar o escopo da autorização de trabalho para repositórios do Azure DevOps referenciados

Além das configurações de escopo da autorização de trabalho descritas na seção anterior, o Azure Pipelines fornece uma configuração Limitar o escopo da autorização de trabalho para repositórios do Azure DevOps referenciados.

Os pipelines podem acessar todos os repositórios do Azure DevOps em projetos autorizados, a menos que Limitar o escopo da autorização de trabalho para repositórios do Azure DevOps referenciados esteja habilitada. Com essa opção habilitada, você pode reduzir o escopo de acesso para todos os pipelines apenas para repositórios do Azure DevOps explicitamente referenciados por uma etapa checkout ou uma instrução uses no trabalho de pipeline que usa esse repositório.

Para obter mais informações, confira Repositórios Git do Azure Repos – Limitar o escopo da autorização de trabalho para repositórios do Azure DevOps referenciados.

Proteger o acesso a repositórios em pipelines YAML

Além das configurações de escopo da autorização de trabalho descritas na seção anterior, o Azure Pipelines fornece uma configuração Proteger acesso a repositórios em pipelines YAML .

Os pipelines podem acessar todos os repositórios do Azure DevOps em projetos autorizados, a menos que a opção Proteger o acesso a repositórios em pipelines YAML esteja habilitada. Com essa opção habilitada, você pode reduzir o escopo de acesso para todos os pipelines apenas para repositórios do Azure DevOps explicitamente referenciados por uma etapa checkout ou uma instrução uses no trabalho de pipeline que usa esse repositório.

Para obter mais informações, confira Repositórios Git do Azure Repos – Proteger o acesso a repositórios em pipelines YAML.

Importante

A opção Proteger o acesso a repositórios em pipelines YAML é habilitada por padrão para novas organizações e projetos criados após maio de 2020.

Identidades de build com escopo

O Azure DevOps usa duas identidades internas para executar pipelines.

  • Uma identidade com escopo de coleção, que tem acesso a todos os projetos na coleção (ou organização no caso do Azure DevOps Services)
  • Uma identidade com escopo de projeto, que tem acesso a apenas um projeto

Essas identidades são permissões alocadas necessárias para executar atividades de tempo de execução de build/lançamento ao efetuar retorno de chamada para o sistema do Azure DevOps. Há permissões padrão internas, e você também pode gerenciar suas permissões conforme necessário.

O nome da identidade com escopo de coleção tem o seguinte formato:

  • Project Collection Build Service ({OrgName})
  • Por exemplo, se o nome da organização for fabrikam-tailspin, essa conta terá o nome Project Collection Build Service (fabrikam-tailspin).

O nome da identidade com escopo de projeto tem o seguinte formato:

  • {Project Name} Build Service ({Org Name})
  • Por exemplo, se o nome da organização for fabrikam-tailspin e o nome do projeto for SpaceGameWeb, essa conta terá o nome SpaceGameWeb Build Service (fabrikam-tailspin).

Por padrão, a identidade com escopo de coleção é usada, a menos que seja configurada de outra forma, conforme descrito na seção anterior, Escopo da autorização do trabalho.

Gerenciar permissões da conta de serviço de build

Um resultado da configuração do acesso no escopo do projeto pode ser que a identidade no escopo do projeto pode não ter permissões que o escopo da coleção tinha para um determinado recurso.

Talvez você queira alterar as permissões do token de acesso ao trabalho em cenários como os seguintes:

  • Você deseja que o pipeline acesse um feed que está em um projeto diferente.
  • Você deseja que o pipeline seja impedido de alterar código no repositório.
  • Você deseja que o pipeline seja impedido de criar itens de trabalho.

Para atualizar as permissões do token de acesso ao trabalho:

  • Primeiro, determine o escopo da autorização do trabalho para o pipeline. Consulte a seção acima para entender o escopo da autorização do trabalho. Se o escopo da autorização do trabalho for coleção, a conta de serviço de build correspondente na qual gerenciar permissões será o de Build de Coleção de Projetos (nome-da-coleção). Se o escopo da autorização do trabalho for projeto, a conta de serviço de build na qual gerenciar permissões será Serviço de Build nome-do-projeto (nome-da-coleção).

  • Para restringir ou permitir acesso adicional ao Serviço de Build de Coleção de Projetos (nome-da-coleção):

    • Selecione Gerenciar segurança no menu de estouro na página Pipelines.
    • Em Usuários, selecione Serviço de Build de Coleção de Projetos (nome-da-coleção).
    • Faça alterações nas permissões relacionadas a pipelines para essa conta.
    • Navegue até as configurações da organização para sua organização do Azure DevOps (ou configurações de coleção para sua coleção de projetos).
    • Selecione Permissões em Segurança.
    • Na guia Usuários, procure Serviço de Build de Coleção de Projetos (nome-da-coleção).
    • Faça as alterações necessárias nas permissões relacionadas a pipelines para essa conta.
    • Como o Serviço de Build de Coleção de Projetos (nome-da-coleção) é um usuário em sua organização ou coleção, você pode adicionar essa conta explicitamente a qualquer recurso , por exemplo, a um feed no Azure Artifacts.
  • Para restringir ou permitir acesso adicional ao Serviço de Build do Nome-Do-Projeto (nome-da-coleção):

    • A conta de serviço de build na qual você pode gerenciar permissões só será criada depois que você executar o pipeline uma vez. Verifique se você já executou o pipeline uma vez.
    • Selecione Gerenciar segurança no menu de estouro na página Pipelines.
    • Em Usuários, selecione Serviço de Build do Nome-Do-Projeto (nome-da-coleção).
    • Faça alterações nas permissões relacionadas a pipelines para essa conta.
    • Navegue até as configurações da organização para sua organização do Azure DevOps (ou configurações de coleção para sua coleção de projetos).
    • Selecione Permissões em Segurança.
    • Na guia Usuários, procure Serviço de Build do Nome-Do-Projeto (nome-da-coleção).
    • Faça as alterações necessárias nas permissões relacionadas a pipelines para essa conta.
    • Como o Serviço de Build do Nome-Do-Projeto (nome-da-coleção) é um usuário em sua organização ou coleção, você pode adicionar essa conta explicitamente a qualquer recurso , por exemplo, a um feed no Azure Artifacts.

Configurar permissões para um projeto acessar outro projeto na mesma coleção de projetos

Neste exemplo, a identidade de build com escopo de projeto fabrikam-tailspin/SpaceGameWeb recebe permissões para acessar o projeto fabrikam-tailspin/FabrikamFiber.

  1. No projeto FabrikamFiber, navegue até Configurações do projeto, Permissões.

    Captura de tela de como definir configurações de projeto.

  2. Crie um grupo chamado Projetos Externos e adicione a conta do Serviço de Build SpaceGameWeb. Captura de tela da criação de um novo grupo de segurança.

  3. Escolha Usuários, comece a digitar o nome SpaceGameWeb e selecione a conta do Serviço de Build SpaceGameWeb. Se você não vir nenhum resultado da pesquisa no primeiro momento, selecione Expandir pesquisa.

    Captura de tela da seleção do usuário de identidade de build com escopo de projeto SpaceGameWeb.

  4. Conceda a permissão Exibir informações no nível do projeto a esse usuário.

    Captura de tela de como conceder a permissão Exibir informações no nível do projeto a um usuário.

Exemplo – Configurar permissões para acessar outro repositório na mesma coleção de projetos

Neste exemplo, a identidade de build com escopo de projeto fabrikam-tailspin/SpaceGameWeb recebe permissão para acessar o repositório FabrikamFiber no projeto fabrikam-tailspin/FabrikamFiber.

  1. Siga as etapas para conceder permissão de identidade de construção no escopo do projeto SpaceGameWeb para acessar o projeto FabrikamFiber.

  2. No projeto FabrikamFiber, navegue até Configurações do projeto, Repositórios, FabrikamFiber.

    Configure o acesso ao repositório.

  1. Escolha o ícone +, comece a digitar o nome SpaceGameWeb e selecione a conta do Serviço de Build SpaceGameWeb.

    Adicione um usuário para acesso ao repositório.

  1. Comece a digitar o nome SpaceGameWeb, e selecione a conta do Serviço de Build SpaceGameWeb.

    Captura de tela de como adicionar um usuário para acesso ao repositório.

  1. Conceda permissões de Leitura a esse usuário.

    Captura de tela de como configurar permissões para o repositório.

Exemplo – Configurar permissões para acessar outros recursos na mesma coleção de projetos

Neste exemplo, a identidade de build com escopo de projeto fabrikam-tailspin/SpaceGameWeb recebe permissões para acessar outros recursos no projeto fabrikam-tailspin/FabrikamFiber.

  1. Siga as etapas para conceder permissão de identidade de construção no escopo do projeto SpaceGameWeb para acessar o projeto FabrikamFiber.

  2. Configure as permissões desejadas para esse usuário.

    Configure as permissões de usuário.

Perguntas frequentes

Como fazer para determinar o escopo da autorização do trabalho do meu pipeline YAML?

  • Se o projeto for um projeto público, o escopo da autorização do trabalho sempre será projeto, independentemente de outras configurações.

Todos os pipelines YAML no Azure DevOps Server 2019 são executados no escopo da autorização do trabalho de coleção.

  • Verifique as Configurações de pipeline nas Configurações da organização do Azure DevOps:
    • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual estiver habilitada, o escopo será projeto.
    • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual não estiver habilitada, verifique as Configurações de pipeline em suas Configurações de projeto no Azure DevOps:
      • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual estiver habilitada, o escopo será projeto.
      • Caso contrário, o escopo será coleção.
  • Se o pipeline estiver em um projeto privado, verifique as Configurações de pipeline em suas Configurações da organização do Azure DevOps:
    • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de não lançamento estiver habilitada, o escopo será projeto.
    • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de não lançamento não estiver habilitada, verifique as Configurações de pipeline em suas Configurações de projeto no Azure DevOps:
      • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de não lançamento estiver habilitada, o escopo será projeto.
      • Caso contrário, o escopo será coleção.

Como fazer para determinar o escopo da autorização do trabalho do meu pipeline de build clássico?

  • Se o pipeline estiver em um projeto público, o escopo da autorização do trabalho será projeto, independentemente de outras configurações.
  • Abra o editor do pipeline e navegue até a guia Opções.
    • Se o Escopo da autorização do trabalho de build for Projeto atual, o escopo será projeto.
    • Caso contrário, o escopo será coleção.
  • Verifique as Configurações de pipeline nas Configurações da organização do Azure DevOps:
    • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual estiver habilitada, o escopo será projeto.
    • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual não estiver habilitada, verifique as Configurações de pipeline em suas Configurações de projeto no Azure DevOps:
      • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual estiver habilitada, o escopo será projeto.
      • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual não estiver habilitada, abra o editor do pipeline e navegue até a guia Opções.
        • Se o Escopo da autorização do trabalho de build for Projeto atual, o escopo será projeto.
        • Caso contrário, o escopo será coleção.
  • Se o pipeline estiver em um projeto privado, verifique as Configurações de pipeline em suas Configurações da organização do Azure DevOps:
    • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de não lançamento estiver habilitada, o escopo será projeto.
    • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de não lançamento não estiver habilitada, verifique as Configurações de pipeline em suas Configurações de projeto no Azure DevOps:
      • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de não lançamento estiver habilitada, o escopo será projeto.
      • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de não lançamento não estiver habilitada, abra o editor do pipeline e navegue até a guia Opções.
        • Se o Escopo da autorização do trabalho de build for Projeto atual, o escopo será projeto.
        • Caso contrário, o escopo será coleção.

Ao criar um novo pipeline clássico, o escopo da autorização de trabalho é definido como projeto atual e o escopo da autorização de trabalho de compilação é definido como projeto por padrão.

Como fazer para determinar o escopo da autorização do trabalho do meu pipeline de lançamento clássico?

Os pipelines de lançamento clássicos no Azure DevOps Server 2020 e versões anteriores são executados com escopo de coleção.

  • Se o pipeline estiver em um projeto público, o escopo da autorização do trabalho será projeto, independentemente de outras configurações.
  • Se o pipeline estiver em um projeto privado, verifique as Configurações de pipeline em suas Configurações da organização do Azure DevOps:
    • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de lançamento estiver habilitada, o escopo será projeto.
    • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de lançamento não estiver habilitada, verifique as Configurações de pipeline em suas Configurações de projeto no Azure DevOps:
      • Se a opção Limitar o escopo da autorização de trabalho ao projeto atual para pipelines de lançamento estiver habilitada, o escopo será projeto.
      • Caso contrário, o escopo será coleção.