Acessar repositórios, artefatos e outros recursos

Serviços de DevOps do Azure | 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:

  • Confira o código-fonte de um repositório Git
  • Adicionar uma tag ao repositório
  • Aceder a um feed nos Artefactos do Azure
  • 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 utiliza tokens de acesso a tarefas para efetuar estas tarefas. Um token de acesso a trabalho é um token de segurança gerado dinamicamente pelos Pipelines do Azure para cada trabalho em tempo de execução. O agente no qual a tarefa está em execução utiliza o token de acesso à tarefa para aceder a estes recursos no Azure DevOps. Pode controlar os recursos aos quais o pipeline tem acesso ao controlar a forma como as permissões são concedidas aos tokens de acesso a tarefas.

As permissões do token derivam (a) do âmbito de autorização da tarefa e (b) das permissões que definiu na conta de serviço de compilação de projetos ou coleções.

Escopo da autorização de trabalho

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

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

Nota

No Azure DevOps Server 2020, Limitar o escopo de autorização de trabalho ao projeto atual aplica-se somente a pipelines YAML e pipelines de compilação clássicos. Não se aplica aos pipelines de liberação clássicos. Os pipelines de liberação clássicos sempre são executados com o escopo da coleção de projetos.

Para definir o escopo de 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 de autorização de trabalho ao projeto atual para limitar o escopo ao projeto. Essa é a configuração recomendada, pois aumenta a segurança de seus pipelines.

Para definir o escopo de 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 de autorização de trabalho ao projeto atual para limitar o escopo ao projeto. Essa é a configuração recomendada, pois aumenta a segurança de seus pipelines.
  • Para definir o escopo de autorização de trabalho no nível da organização para todos os projetos, escolha Configurações de pipelines>de configurações>da organização.
  • Para definir o escopo de autorização de trabalho para um projeto específico, escolha Configurações de pipelines de configurações>do> projeto.

Habilite uma ou mais das seguintes configurações. Recomenda-se habilitar essas configurações, pois aumenta a segurança de seus pipelines.

  • Limitar o escopo de autorização de trabalho ao projeto atual para pipelines sem liberação - Esta configuração se aplica a pipelines YAML e pipelines de construção clássicos e não se aplica a pipelines de liberação clássicos.
  • Limitar o escopo de autorização de trabalho ao projeto atual para pipelines de liberação - Esta configuração se aplica apenas aos pipelines de liberação clássicos.

Nota

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

Importante

Se o escopo não estiver restrito no nível da organização ou do projeto, cada trabalho em seu pipeline YAML receberá um token de acesso ao trabalho com escopo de coleção. Em outras palavras, seu pipeline tem acesso a qualquer repositório em qualquer projeto de sua organização. Se um adversário for capaz de obter acesso a um único pipeline em um único projeto, ele poderá obter acesso a qualquer repositório em sua organização. É por isso que é recomendável restringir o escopo no nível mais alto (configurações da organização) para conter o ataque a um único projeto.

Se você usar o Azure DevOps Server 2019, todos os trabalhos do YAML serão executados com o escopo de autorização de trabalho definido como coleta. 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.

Nota

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

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

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

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

Para obter mais informações, consulte Azure Repos Git repositories - Limit job authorization scope to referenced Azure DevOps repositories.

Proteja o acesso a repositórios em pipelines YAML

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

Os pipelines podem acessar qualquer repositório 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 para apenas repositórios de DevOps do Azure explicitamente referenciados por uma checkout etapa ou uma uses instrução no trabalho de pipeline que usa esse repositório.

Para obter mais informações, consulte Azure Repos Git repositories - Protect access to repositories in YAML pipelines.

Importante

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

Identidades de compilação 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 para Serviços de DevOps do Azure)
  • Uma identidade com escopo de projeto, que tem acesso a um único projeto

Essas identidades são alocadas permissões necessárias para executar atividades de tempo de execução de compilação/liberação ao chamar de volta para o sistema Azure DevOps. Há permissões padrão internas e você também pode gerenciar suas próprias 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, esta conta tem o nome Project Collection Build Service (fabrikam-tailspin).

O nome da identidade do escopo do 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 configurada de outra forma, conforme descrito na seção anterior Escopo de autorização de trabalho.

Gerenciar permissões de conta de serviço de compilação

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

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

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

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

  • Primeiro, determine o escopo de autorização de trabalho para seu pipeline. Consulte a seção acima para entender o escopo da autorização de trabalho. Se o escopo de autorização de trabalho for coleção, a conta de serviço de compilação correspondente para gerenciar permissões é Project Collection Build Service (your-collection-name). Se o escopo de autorização de trabalho for projeto, a conta de serviço de compilação para gerenciar permissões é Your-project-name Build Service (your-collection-name).

  • Para restringir ou conceder acesso adicional ao Project Collection Build Service (seu-nome-da-coleção):

    • Selecione Gerenciar segurança no menu de estouro na página Pipelines .
    • Em Usuários, selecione Project Collection Build Service (your-collection-name).
    • Faça quaisquer alterações nas permissões relacionadas a pipelines para esta 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 Project Collection Build Service (your-collection-name).
    • Faça quaisquer alterações nas permissões não relacionadas a pipelines para esta conta.
    • Como o Project Collection Build Service (your-collection-name) é 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 conceder acesso adicional ao serviço de compilação Your-project-name (your-collection-name):

    • A conta de serviço de compilação na qual você pode gerenciar permissões só será criada depois que você executar o pipeline uma vez. Certifique-se de que você já executou o pipeline uma vez.
    • Selecione Gerenciar segurança no menu de estouro na página Pipelines .
    • Em Usuários, selecione Seu nome de projeto Serviço de compilação (seu-nome-da-coleção).
    • Faça quaisquer alterações nas permissões relacionadas a pipelines para esta 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 por Your-project-name build service (your-collection-name).
    • Faça quaisquer alterações nas permissões não relacionadas a pipelines para esta conta.
    • Como o Serviço de Criação Your-project-name (your-collection-name) é 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 compilação do escopo do fabrikam-tailspin/SpaceGameWeb projeto recebe permissões para acessar o fabrikam-tailspin/FabrikamFiber projeto.

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

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

  2. Crie um novo Grupo chamado Projetos Externos e adicione a conta do Serviço de Construção SpaceGameWeb. Captura de ecrã a mostrar a criação de um novo grupo de segurança.

  3. Escolha Usuários, comece a digitar o nome SpaceGameWeb e selecione a conta SpaceGameWeb Build Service . Se você não vir nenhum resultado da pesquisa inicialmente, selecione Expandir pesquisa.

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

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

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

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

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

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

  2. No projeto FabrikamFibra, 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 SpaceGameWeb Build Service .

    Adicionar usuário para acesso ao repositório.

  1. Comece a digitar o nome SpaceGameWeb e selecione a conta SpaceGameWeb Build Service .

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

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

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

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

Neste exemplo, a identidade de compilação do escopo do fabrikam-tailspin/SpaceGameWeb projeto recebe permissões para acessar outros recursos no fabrikam-tailspin/FabrikamFiber projeto.

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

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

    Configure permissões de usuário.

FAQ

Como determino o escopo de autorização de trabalho do meu pipeline YAML?

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

Todos os pipelines YAML no Azure DevOps Server 2019 são executados sob o escopo de autorização de trabalho de coleta .

  • Verifique as configurações do Pipeline nas configurações da Organização do Azure DevOps:
    • Se Limitar o escopo de autorização de trabalho ao projeto atual estiver habilitado, o escopo será projeto.
    • Se Limitar o escopo de autorização de trabalho ao projeto atual não estiver habilitado, verifique as configurações de Pipeline nas configurações do Project no Azure DevOps:
      • Se Limitar o escopo de autorização de trabalho ao projeto atual estiver habilitado, o escopo será projeto.
      • Caso contrário, o escopo é a coleta.
  • Se o pipeline estiver em um projeto privado, verifique as configurações do Pipeline nas configurações da Organização do Azure DevOps:
    • Se a opção Limitar o escopo de autorização de trabalho ao projeto atual para pipelines que não são de liberação estiver habilitada, o escopo será projeto.
    • Se Limitar o escopo de autorização de trabalho ao projeto atual para pipelines de não lançamento não estiver habilitado, verifique as configurações de Pipeline em suas configurações de Projeto no Azure DevOps:
      • Se a opção Limitar o escopo de autorização de trabalho ao projeto atual para pipelines que não são de liberação estiver habilitada, o escopo será projeto.
      • Caso contrário, o escopo é a coleta.

Como determino o escopo de autorização de trabalho do meu pipeline de compilação clássico?

  • Se o pipeline estiver em um projeto público, o escopo da autorização de trabalho será o projeto , independentemente de quaisquer outras configurações.
  • Abra o editor do pipeline e navegue até a guia Opções .
    • Se o escopo de autorização de trabalho de compilação for Projeto atual, o escopo será projeto.
    • Caso contrário, o escopo é a coleta.
  • Verifique as configurações do Pipeline nas configurações da Organização do Azure DevOps:
    • Se Limitar o escopo de autorização de trabalho ao projeto atual estiver habilitado, o escopo será projeto.
    • Se Limitar o escopo de autorização de trabalho ao projeto atual não estiver habilitado, verifique as configurações de Pipeline nas configurações do Project no Azure DevOps:
      • Se Limitar o escopo de autorização de trabalho ao projeto atual estiver habilitado, o escopo será projeto.
      • Se a opção Limitar o escopo de 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 de autorização de trabalho de compilação for Projeto atual, o escopo será projeto.
        • Caso contrário, o escopo é a coleta.
  • Se o pipeline estiver em um projeto privado, verifique as configurações do Pipeline nas configurações da Organização do Azure DevOps:
    • Se a opção Limitar o escopo de autorização de trabalho ao projeto atual para pipelines que não são de liberação estiver habilitada, o escopo será projeto.
    • Se Limitar o escopo de autorização de trabalho ao projeto atual para pipelines de não lançamento não estiver habilitado, verifique as configurações de Pipeline em suas configurações de Projeto no Azure DevOps:
      • Se a opção Limitar o escopo de autorização de trabalho ao projeto atual para pipelines que não são de liberação estiver habilitada, o escopo será projeto.
      • Se a opção Limitar o escopo de autorização de trabalho ao projeto atual para pipelines que não são de liberação não estiver habilitada, abra o editor do pipeline e navegue até a guia Opções .
        • Se o escopo de autorização de trabalho de compilação for Projeto atual, o escopo será projeto.
        • Ou então, escopo é cobrança.

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

Como determino o escopo de autorização de trabalho do meu pipeline de liberação clássico?

Os pipelines de versão clássicos no Azure DevOps Server 2020 e abaixo são executados com escopo de coleta .

  • Se o pipeline estiver em um projeto público, o escopo da autorização de trabalho será o projeto , independentemente de quaisquer outras configurações.
  • Se o pipeline estiver em um projeto privado, verifique as configurações do Pipeline nas configurações da Organização do Azure DevOps:
    • Se Limitar o escopo de autorização de trabalho ao projeto atual para pipelines de liberação estiver habilitado, o escopo será projeto.
    • Se Limitar o escopo de autorização de trabalho ao projeto atual para pipelines de liberação não estiver habilitado, verifique as configurações de Pipeline em suas configurações de projeto no Azure DevOps:
      • Se Limitar o escopo de autorização de trabalho ao projeto atual para pipelines de liberação estiver habilitado, o escopo será projeto.
      • Caso contrário, o escopo é a coleta.