Editar controles de origem do pacote - CodeArtifact

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Editar controles de origem do pacote

Em AWS CodeArtifact, as versões do pacote podem ser adicionadas a um repositório publicando-as diretamente, retirando-as de um repositório upstream ou ingerindo-as de um repositório público externo. Permitir que versões de um pacote sejam adicionadas por publicação direta e ingestão de repositórios públicos torna você vulnerável a um ataque de substituição de dependências. Para ter mais informações, consulte Ataques de substituição de dependências. Para se proteger contra um ataque de substituição de dependência, você pode configurar os controles de origem do pacote em um pacote em um repositório para limitar como as versões desse pacote podem ser adicionadas ao repositório.

A configuração dos controles de origem do pacote deve ser considerada por qualquer equipe que queira permitir que novas versões de pacotes diferentes venham tanto de fontes internas, como publicação direta, quanto de fontes externas, como repositórios públicos. Por padrão, os controles de origem do pacote serão configurados com base em como a primeira versão de um pacote é adicionada ao repositório. Para obter informações sobre as configurações de controle de origem do pacote e seus valores padrão, consulte Configurações de controle de origem do pacote.

Para remover o registro do pacote depois de usar a operação da API put-package-origin-configuration, use delete-package (consulte Excluir um pacote ou uma versão do pacote).

Cenários comuns de controle de acesso a pacotes

Esta seção inclui alguns cenários comuns quando uma versão de pacote é adicionada a um CodeArtifact repositório. As configurações de controle de origem do pacote serão definidas para novos pacotes, dependendo de como a primeira versão do pacote for adicionada.

Nos cenários a seguir, um pacote interno é um pacote publicado diretamente de um gerenciador de pacotes no seu repositório, como um pacote que você ou sua equipe cria e mantém. Um pacote externo é um pacote que existe em um repositório público que pode ser ingerido em seu repositório com uma conexão externa.

Uma versão de pacote externo é publicada para um pacote interno existente

Nesse cenário, considere um pacote interno, packageA. Sua equipe publica a primeira versão do pacote do PackageA em um repositório. CodeArtifact Como essa é a primeira versão desse pacote, as configurações de controle de origem do pacote são automaticamente definidas como Publicar: Permitir e Upstream: Bloquear. Depois que o pacote existe no seu repositório, um pacote com o mesmo nome é publicado em um repositório público conectado ao seu CodeArtifact repositório. Isso pode ser uma tentativa de ataque de substituição de dependência contra o pacote interno ou pode ser apenas uma coincidência. Independentemente disso, os controles de origem do pacote são configurados para bloquear a ingestão da nova versão externa para se protegerem contra um possível ataque.

Na imagem a seguir, o RepoA é seu CodeArtifact repositório com uma conexão externa com um repositório público. Seu repositório contém as versões 1.1 e 2.1 de packageA, mas a versão 3.0 é publicada no repositório público. Normalmente, repoA poderia ingerir a versão 3.0 depois que o pacote fosse solicitado por um gerenciador de pacotes. Como a ingestão de pacotes está definida como Bloquear, a versão 3.0 não é ingerida em seu CodeArtifact repositório e não está disponível para gerenciadores de pacotes conectados a ele.

Gráfico simples mostrando uma nova versão de pacote externo sendo bloqueada de um repositório público.

Uma versão de pacote interno é publicada para um pacote externo existente

Nesse cenário, um pacote, packageB, existe externamente em um repositório público que você conectou ao seu repositório. Quando um gerenciador de pacotes conectado ao seu repositório solicita packageB, a versão do pacote é ingerida no seu repositório a partir do repositório público. Como esta é a primeira versão do pacote de packageB adicionada ao seu repositório, as configurações de origem do pacote são definidas como Publicação: BLOQUEAR e Upstream: PERMITIR. Mais tarde, você tenta publicar uma versão com o mesmo nome de pacote no repositório. Ou você não conhece o pacote público e está tentando publicar um pacote não relacionado com o mesmo nome, ou está tentando publicar uma versão corrigida ou está tentando publicar diretamente a versão exata do pacote que já existe externamente. CodeArtifact rejeitará a versão que você está tentando publicar, mas permitirá que você anule explicitamente a rejeição e publique a versão, se necessário.

Na imagem a seguir, o RepoA é seu CodeArtifact repositório com uma conexão externa com um repositório público. Seu repositório contém a versão 3.0 que foi ingerida do repositório público. Você deseja publicar a versão 1.1 no seu repositório. Normalmente, você poderia publicar a versão 1.2 em repoA, mas como a publicação está definida como Bloquear, a versão 1.2 não pode ser publicada.

Gráfico simples mostrando uma nova versão de pacote externo sendo bloqueada de um repositório público.

Publicar uma versão corrigida de um pacote externo existente

Nesse cenário, um pacote, packageB, existe externamente em um repositório público que você conectou ao seu repositório. Quando um gerenciador de pacotes conectado ao seu repositório solicita packageB, a versão do pacote é ingerida no seu repositório a partir do repositório público. Como esta é a primeira versão do pacote de packageB adicionada ao seu repositório, as configurações de origem do pacote são definidas como Publicação: BLOQUEAR e Upstream: PERMITIR. Sua equipe decide que precisa publicar versões corrigidas desse pacote no repositório. Para poder publicar versões de pacotes diretamente, sua equipe altera as configurações de controle de origem do pacote para Publicação: PERMITIR e Upstream: BLOQUEAR. Agora, as versões desse pacote podem ser publicadas diretamente no seu repositório e ingeridas de repositórios públicos. Depois que sua equipe publica as versões corrigidas do pacote, ela reverte as configurações de origem do pacote para Publicação: BLOQUEAR e Upstream: PERMITIR.

Configurações de controle de origem do pacote

Com os controles de origem do pacote, você pode configurar como as versões do pacote podem ser adicionadas a um repositório. As listas a seguir incluem as configurações e os valores disponíveis do controle de origem do pacote.

nota

As configurações e os valores disponíveis são diferentes ao configurar os controles de origem em grupos de pacotes. Para ter mais informações, consulte Controles de origem do grupo de pacotes.

Publicar

Essa configuração define se as versões do pacote podem ser publicadas diretamente no repositório usando gerenciadores de pacotes ou ferramentas similares.

  • PERMITIR: as versões do pacote podem ser publicadas diretamente.

  • BLOCK: as versões do pacote não podem ser publicadas diretamente.

Upstream

Essa configuração define se as versões do pacote podem ser ingeridas de repositórios externos públicos ou retidas de repositórios upstream quando solicitadas por um gerenciador de pacotes.

  • PERMITIR: Qualquer versão do pacote pode ser retida de outros CodeArtifact repositórios configurados como repositórios upstream ou ingerida de uma fonte pública com uma conexão externa.

  • BLOCO: As versões do pacote não podem ser retidas de outros CodeArtifact repositórios configurados como repositórios upstream ou ingeridas de uma fonte pública com uma conexão externa.

Configurações de controle de origem do pacote padrão

As configurações padrão de controle de origem do pacote são definidas com base nas configurações de controle de origem do grupo de pacotes associado ao pacote. Para obter mais informações sobre grupos de pacotes e controles de origem de grupos de pacotes, consulte Trabalhando com grupos de pacotes em CodeArtifact Controles de origem do grupo de pacotes e.

Se um pacote estiver associado a um grupo de pacotes com configurações de restrição ALLOW para cada tipo de restrição, os controles de origem do pacote padrão para um pacote serão baseados em como a primeira versão desse pacote é adicionada ao repositório.

  • Se a primeira versão do pacote for publicada diretamente por um gerenciador de pacotes, as configurações serão Publicação: PERMITIR e Upstream: BLOQUEAR.

  • Se a primeira versão do pacote for ingerida de uma fonte pública, as configurações serão Publicação: BLOQUEAR e Upstream: PERMITIR.

nota

Pacotes que existiam em CodeArtifact repositórios antes de maio de 2022 terão os controles de origem de pacote padrão de Publish: ALLOW e Upstream: ALLOW. Os controles de origem do pacote devem ser definidos manualmente para esses pacotes. Os valores padrão atuais foram definidos em novos pacotes desde aquela época e começaram a ser aplicados quando o atributo foi lançado em 14 de julho de 2022. Para obter mais informações sobre a configuração de controles de origem de pacotes, consulte Editar controles de origem do pacote.

Caso contrário, se um pacote estiver associado a um grupo de pacotes que tenha pelo menos uma configuração de restrição deBLOCK, as configurações padrão de controle de origem desse pacote serão definidas como Publish: ALLOW e Upstream: ALLOW.

Como os controles de origem do pacote interagem com os controles de origem do grupo de pacotes

Como os pacotes têm configurações de controle de origem e seus grupos de pacotes associados têm configurações de controle de origem, é importante entender como essas duas configurações diferentes interagem umas com as outras.

A interação entre as duas configurações é que uma configuração de BLOCK sempre vence uma configuração deALLOW. A tabela a seguir lista alguns exemplos de configurações e suas configurações efetivas de controle de origem.

Configuração de controle de origem do pacote Configuração de controle de origem do grupo de pacotes Configuração efetiva de controle de origem

PUBLICAR: PERMITIR

UPSTREAM: PERMITIR

PUBLICAR: PERMITIR

UPSTREAM: PERMITIR

PUBLICAR: PERMITIR

UPSTREAM: PERMITIR

PUBLICAR: BLOQUEAR

UPSTREAM: PERMITIR

PUBLICAR: PERMITIR

UPSTREAM: PERMITIR

PUBLICAR: BLOQUEAR

UPSTREAM: PERMITIR

PUBLICAR: PERMITIR

UPSTREAM: PERMITIR

PUBLICAR: PERMITIR

MONTANTE: BLOCO

PUBLICAR: PERMITIR

MONTANTE: BLOCO

O que isso significa é que um pacote com configurações de origem de Publish: ALLOW e Upstream: ALLOW está efetivamente adiando as configurações de controle de origem do grupo de pacotes associado.

Editar controles de origem do pacote

Os controles de origem do pacote são configurados automaticamente com base em como a primeira versão de um pacote é adicionada ao repositório. Para obter mais informações, consulte Configurações de controle de origem do pacote padrão. Para adicionar ou editar controles de origem de pacote para um pacote em um CodeArtifact repositório, execute as etapas no procedimento a seguir.

Para adicionar ou editar controles de origem do pacote (console)
  1. Abra o AWS CodeArtifact console em https://console.aws.amazon.com/codesuite/codeartifact/home.

  2. No painel de navegação, escolha Repositórios e escolha o repositório que contém o pacote que você deseja editar.

  3. Na tabela Pacotes, pesquise e selecione o pacote que você deseja editar.

  4. Na página de resumo do pacote, em Controles de origem, escolha Editar.

  5. Em Editar controles de origem, escolha os controles de origem do pacote que deseja definir para esse pacote. As duas configurações de controle de origem do pacote, Publicação e Upstream, devem ser definidas ao mesmo tempo.

    • Para permitir a publicação direta de versões do pacote, em Publicação, escolha Permitir. Para bloquear a publicação de versões do pacote, escolha Bloquear.

    • Para permitir a ingestão de pacotes de repositórios externos e a extração de pacotes de repositórios upstream, em Fontes upstream, escolha Permitir. Para bloquear toda a ingestão e extração de versões de pacotes de repositórios externos e upstream, escolha Bloquear.

Para adicionar ou editar controles de origem do pacote (AWS CLI)
  1. Caso contrário, configure o AWS CLI seguindo as etapas emConfigurando com AWS CodeArtifact.

  2. Use o comando put-package-origin-configuration para adicionar ou editar controles de origem do pacote. Substitua os campos a seguir:

    • Substitua my_domain pelo CodeArtifact domínio que contém o pacote que você deseja atualizar.

    • Substitua my_repo pelo CodeArtifact repositório que contém o pacote que você deseja atualizar.

    • Substitua npm pelo formato do pacote que você deseja atualizar.

    • Substitua my_package pelo nome do pacote que você deseja atualizar.

    • Substitua PERMITIR e BLOQUEAR pelas configurações de controle de origem do pacote desejadas.

    aws codeartifact put-package-origin-configuration --domain my_domain \ --repository my_repo --format npm --package my_package \ --restrictions publish=ALLOW,upstream=BLOCK

Repositórios de publicação e upstream

CodeArtifact não permite a publicação de versões de pacotes que estejam presentes em repositórios upstream acessíveis ou em repositórios públicos. Por exemplo, suponha que você queira publicar um pacote Maven com.mycompany.mypackage:1.0 em um repositório myrepo e myrepo tenha um repositório upstream com uma conexão externa com Maven Central. Considere os seguintes cenários:

  1. As configurações de controle de origem do pacote em com.mycompany.mypackage são Publicação: PERMITIR e Upstream: PERMITIR. Se com.mycompany.mypackage:1.0 estiver presente no repositório upstream ou no Maven Central, CodeArtifact rejeita qualquer tentativa de publicar nele myrepo com um erro de conflito 409. Você ainda pode publicar uma versão diferente, como com.mycompany.mypackage:1.1.

  2. As configurações de controle de origem do pacote em com.mycompany.mypackage são Publicação: PERMITIR e Upstream: BLOQUEAR. Você pode publicar qualquer versão do com.mycompany.mypackage no seu repositório que ainda não exista porque as versões do pacote não estão acessíveis.

  3. As configurações de controle de origem do pacote em com.mycompany.mypackage são Publicação: BLOQUEAR e Upstream: PERMITIR. Você não pode publicar nenhuma versão do pacote diretamente no seu repositório.