Compartilhar via


Proteja-se contra pacotes públicos maliciosos

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

As fontes upstream do Azure Artifacts 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 gerenciar dependências, incluindo simplicidade, confiabilidade e integridade do pacote. Consulte O que são fontes upstream? para obter mais detalhes.

Permitir versões de origem externa

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

Depois que 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 está desabilitada, adicionando uma camada extra de segurança reduzindo a exposição a pacotes potencialmente mal-intencionados de registros públicos. Alterar essa 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 que permite 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:

Observação

Você deve ser um proprietário do feed para permitir versões de origem externa.

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

  2. Selecione Artefatos e, em seguida, selecione seu feed no menu suspenso.

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

  4. Alterne Permitir Versões Externas para habilitar o recurso e selecione Fechar quando terminar.

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

Permitir versões externas usando a API REST

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

Tipo de pacote Pontos Finais da API
NuGet - Configurar o comportamento de envio upstream
- Obter comportamento de contribuição para o upstream
npm - Configurar o comportamento de envio upstream
- Definir o comportamento de upstreaming delimitado
- Verificar o comportamento do upstreaming do pacote
- Obter o comportamento de upstreaming de pacotes com escopo
Pitão - Obter comportamento de contribuição para o upstream
- Configurar o comportamento de envio upstream
Especialista - Obter comportamento de contribuição para o upstream
- Configurar o comportamento de envio upstream
Carga - Obter comportamento de contribuição para o upstream
- Configurar o comportamento de envio upstream

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 permissões de Embalagem>Leitura, gravação & gerenciamento.

  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 de solicitação HTTP.

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

    • Feed do projeto com escopo:

      $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 da organização com escopo:

      $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 da tabela com base em seu cenário:

    Ação Description Command
    Obter Comportamento de Encaminhamento 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 Permitir versões de origem externa para o pacote definindo versionsFromExternalUpstreams como AllowExternalVersions. $body = '{"versionsFromExternalUpstreams": "AllowExternalVersions"}'
    Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Patch -ContentType "application/json"
    Limpar o 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"

Observação

As alterações no comportamento upstream podem levar tempo para serem propagadas pelo serviço. Se o pacote não estiver disponível depois de atualizar as configurações, permita 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 registros públicos) são bloqueadas ou permitidas de 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 do Azure Artifacts como pacotes privados.

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

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

Versão do pacote privado tornada pública

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

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

Ter pacotes públicos e privados

Quando uma equipe usa pacotes privados e públicos, o feed bloqueia qualquer nova versão de pacote do registro público quando a opção "permitir versão externa" está habilitada.

Uma ilustração mostrando os pacotes públicos e privados 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 estiver 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 o feed apenas com pacotes privados.

Todos os pacotes são públicos

Se a equipe consumir exclusivamente pacotes públicos de registros ou repositórios de software livre, habilitar a configuração não afetará seu fluxo de trabalho.

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

Pacote público tornado privado

Quando um pacote público é convertido posteriormente em privado, habilitar 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.