Partilhar via


Proteja-se contra pacotes públicos maliciosos

Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022

As fontes upstream de Artefatos do Azure permitem que os desenvolvedores centralizem o gerenciamento de pacotes usando um único feed para armazenar pacotes publicados e aqueles consumidos de registros públicos, como NuGet.org.

As fontes upstream oferecem várias vantagens para o gerenciamento de dependências, incluindo simplicidade, confiabilidade e integridade do pacote. Consulte O que são fontes primárias? para mais detalhes.

Permitir versões de origem externa

Esse recurso permite que os desenvolvedores controlem se desejam consumir versões de pacotes de registros públicos, como NuGet.org ou npmjs.com.

Quando a alternância Permitir versões externas estiver habilitada para um pacote específico, as versões do registro público ficarão disponíveis para serem salvas no feed. Por padrão, essa opção é desativada, adicionando uma camada extra de segurança reduzindo a exposição a pacotes potencialmente mal-intencionados de registros públicos. A alteração dessa configuração não afeta as versões do pacote já salvas no feed. Essas versões permanecem acessíveis independentemente dessa configuração. Você deve ser um proprietário do feed para habilitar o recurso permitir versões de origem externa.

Permitir versões externas para um pacote

Para habilitar o consumo de versões externas para um pacote específico, siga estas etapas:

Nota

Você deve ser um Proprietário de Feed para autorizar versões originadas externamente.

  1. Entre no Azure DevOps e navegue até o seu projeto.

  2. Selecione Artefatose, em seguida, selecione o seu feed no menu suspenso.

  3. Selecione o seu pacote, selecione o botão de reticências para obter mais opções e, em seguida, selecione Permitir versões de origem externa.

  4. Alterne Permitir versões externas para ativar o recurso e selecione Fechar quando terminar.

    Uma captura de tela exibindo como habilitar versões externas para um pacote específico no Azure Artifacts.

Permitir versões externas usando a API REST

Para ativar versões externas para um pacote específico usando a API REST, use os seguintes endpoints:

Tipo de embalagem Pontos de extremidade da API
NuGet - Configurar o comportamento de upstreaming
- Obter o comportamento de upstream
NPM - Configurar o comportamento de upstreaming
- Definir o comportamento de upstreaming com alcance específico
- Obter comportamento de upstreaming de pacotes
- Obter o comportamento de 'upstreaming' de pacotes com escopo
Píton - Obter o comportamento de upstream
- Configurar o comportamento de upstreaming
Maven - Obter o comportamento de upstream
- Configurar o comportamento de upstreaming
Carga - Obter o comportamento de upstream
- Configurar o comportamento de upstreaming

Permitir versões externas usando o PowerShell

Para habilitar versões externas para um pacote específico usando o PowerShell, siga estas etapas:

  1. Crie um token de acesso pessoal com Empacotamento>Ler, Escrever, & Gerenciar permissões.

  2. Crie uma variável de ambiente para seu token de acesso pessoal.

    $env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
    
  3. Converta seu token de acesso pessoal em uma cadeia de caracteres codificada em Base64 e construa o cabeçalho da solicitação HTTP.

    $token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar")))
    $headers = @{
        Authorization = "Basic $token"
    }
    
  4. Construa o URL do ponto de extremidade com base no seu tipo de feed:

    • Feed com escopo do projeto:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=7.2-preview.1"
      
    • Feed no âmbito da organização:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=7.2-preview.1"
      
  5. Execute o comando a partir da tabela com base no seu cenário:

    Ação Description Command
    Obter Comportamento de Upstream Recupere o estado de comportamento upstream do seu pacote. Usa $url e $headers de etapas anteriores. Invoke-RestMethod -Uri $url -Headers $headers
    Configurar comportamento de upstream Permita versões de origem externa para o seu pacote definindo versionsFromExternalUpstreams como AllowExternalVersions. $body = '{"versionsFromExternalUpstreams": "AllowExternalVersions"}'
    Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Patch -ContentType "application/json"
    Limpar Comportamento de Upstreaming Redefina o comportamento upstream definindo versionsFromExternalUpstreams como Auto. $body = '{"versionsFromExternalUpstreams": "Auto"}'
    Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Patch -ContentType "application/json"

Nota

As alterações no comportamento upstream podem levar tempo para se propagar pelo serviço. Se o pacote não estiver disponível após a atualização das configurações, aguarde até 3 horas para que as alterações entrem em vigor.

Cenários aplicáveis

Esta seção descreve cenários comuns em que versões externas (pacotes de repositórios públicos) são bloqueadas ou permitidas para serem salvas no feed. Para o restante deste artigo, nos referimos a pacotes de registros públicos como pacotes públicos e pacotes armazenados em um feed de Artefatos do Azure como pacotes privados.

Cenário 1: As versões públicas estão bloqueadas

As versões públicas são impedidas de serem salvas no feed quando o recurso Permitir versões externas está habilitado nos dois casos a seguir:

Versão do pacote privado tornada pública

Se um pacote privado for posteriormente tornado público, o feed bloqueará quaisquer novas versões com o mesmo nome de pacote de fontes públicas.

Uma ilustração mostrando uma versão interna do pacote tornada pública.

Ter pacotes privados e públicos

Quando uma equipa usa pacotes privados e públicos, o feed bloqueia quaisquer novas versões de pacotes do registo público quando a permissão de versões externas está ativada.

Uma ilustração mostrando os pacotes privados e públicos disponíveis.

Cenário 2: Versões públicas são permitidas

As versões públicas podem ser salvas no feed quando o recurso Permitir versões externas está habilitado nos três casos a seguir:

Todos os pacotes são privados

Se todos os pacotes forem privados e a equipe não planeja usar pacotes públicos, habilitar essa configuração não terá impacto no fluxo de trabalho da equipe.

Uma ilustração mostrando um fluxo apenas com pacotes privados.

Todos os pacotes são públicos

Se a equipe consome exclusivamente pacotes públicos de registros ou repositórios de código aberto, habilitar a configuração não afeta seu fluxo de trabalho.

Uma ilustração mostrando feed apenas com pacotes públicos.

Pacote público tornado privado

Quando um pacote público é posteriormente convertido em privado, ativar a configuração permitir versões externas não afeta o fluxo de trabalho da equipe.

Uma ilustração mostrando um pacote convertido de público para privado.