Modifica dei controlli di origine dei pacchetti - CodeArtifact

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Modifica dei controlli di origine dei pacchetti

In AWS CodeArtifact, le versioni dei pacchetti possono essere aggiunte a un repository pubblicandole direttamente, estraendole da un repository upstream o importandole da un archivio pubblico esterno. Consentire l'aggiunta di versioni di pacchetto di un pacchetto sia mediante la pubblicazione diretta che l'importazione da archivi pubblici rende vulnerabili a un attacco di sostituzione delle dipendenze. Per ulteriori informazioni, consulta Attacchi di sostituzione delle dipendenze. Per proteggersi da un attacco di sostituzione delle dipendenze, è possibile configurare i controlli di origine dei pacchetti su un pacchetto in un repository per limitare il modo in cui le versioni di quel pacchetto possono essere aggiunte al repository.

La configurazione dei controlli di origine dei pacchetti dovrebbe essere presa in considerazione da qualsiasi team che desideri consentire alle nuove versioni di pacchetti diversi di provenire sia da fonti interne, come la pubblicazione diretta, sia da fonti esterne, come gli archivi pubblici. Per impostazione predefinita, i controlli di origine dei pacchetti verranno configurati in base al modo in cui la prima versione di un pacchetto viene aggiunta all'archivio. Per informazioni sulle impostazioni del controllo dell'origine del pacchetto e sui relativi valori predefiniti, vedereImpostazioni di controllo dell'origine del pacchetto.

Per rimuovere il record del pacchetto dopo aver utilizzato l'operazione put-package-origin-configuration API, utilizzare delete-package (vediEliminare un pacchetto o una versione del pacchetto).

Scenari comuni di controllo dell'accesso ai pacchetti

Questa sezione include alcuni scenari comuni in cui una versione del pacchetto viene aggiunta a un CodeArtifact repository. Le impostazioni di controllo dell'origine dei pacchetti verranno impostate per i nuovi pacchetti a seconda di come viene aggiunta la prima versione del pacchetto.

Negli scenari seguenti, un pacchetto interno è un pacchetto pubblicato direttamente da un gestore di pacchetti nel repository, ad esempio un pacchetto creato e gestito dall'utente o dal suo team. Un pacchetto esterno è un pacchetto esistente in un archivio pubblico che può essere inserito nel tuo repository con una connessione esterna.

Viene pubblicata una versione esterna del pacchetto per un pacchetto interno esistente

In questo scenario, si consideri un pacchetto interno, PackageA. Il tuo team pubblica la prima versione del pacchetto per PackageA in un repository. CodeArtifact Poiché questa è la prima versione del pacchetto, le impostazioni di controllo dell'origine del pacchetto vengono impostate automaticamente su Pubblica: Consenti e Upstream: Block. Dopo che il pacchetto è presente nell'archivio, un pacchetto con lo stesso nome viene pubblicato in un archivio pubblico collegato al repository. CodeArtifact Potrebbe trattarsi di un tentativo di attacco di sostituzione delle dipendenze contro il pacchetto interno o potrebbe essere solo una coincidenza. Indipendentemente da ciò, i controlli di origine dei pacchetti sono configurati per bloccare l'ingestione della nuova versione esterna per proteggersi da un potenziale attacco.

Nell'immagine seguente, RePoA è il tuo CodeArtifact repository con una connessione esterna a un repository pubblico. Il tuo repository contiene le versioni 1.1 e 2.1 di PackageA, ma la versione 3.0 è pubblicata nell'archivio pubblico. Normalmente, RePoA ingerisce la versione 3.0 dopo che il pacchetto è stato richiesto da un gestore di pacchetti. Poiché l'ingestione dei pacchetti è impostata su Block, la versione 3.0 non viene inserita nel CodeArtifact repository e non è disponibile per i gestori di pacchetti ad esso collegati.

Grafica semplice che mostra una nuova versione del pacchetto esterno bloccata da un archivio pubblico.

Viene pubblicata una versione interna del pacchetto per un pacchetto esterno esistente

In questo scenario, un pacchetto, packageB, esiste esternamente in un repository pubblico collegato al repository. Quando un gestore di pacchetti collegato al tuo repository richiede PackageB, la versione del pacchetto viene inserita nel tuo repository dal repository pubblico. Poiché questa è la prima versione del pacchetto di PackageB aggiunta al repository, le impostazioni di origine del pacchetto sono configurate su Publish: BLOCK e Upstream: ALLOW. Successivamente, si tenta di pubblicare una versione con lo stesso nome di pacchetto nel repository. O non siete a conoscenza del pacchetto pubblico e state cercando di pubblicare un pacchetto non correlato con lo stesso nome, oppure state cercando di pubblicare una versione con patch, oppure state cercando di pubblicare direttamente la versione esatta del pacchetto che già esiste esternamente. CodeArtifact rifiuterà la versione che state tentando di pubblicare, ma vi permetterà di ignorare esplicitamente il rifiuto e di pubblicare la versione se necessario.

Nell'immagine seguente, RePoA è il tuo CodeArtifact repository con una connessione esterna a un archivio pubblico. Il tuo repository contiene la versione 3.0 che ha importato dal repository pubblico. Vuoi pubblicare la versione 1.1 nel tuo repository. Normalmente, è possibile pubblicare la versione 1.2 su RePoA, ma poiché la pubblicazione è impostata su Block, la versione 1.2 non può essere pubblicata.

Grafica semplice che mostra una nuova versione del pacchetto esterno bloccata da un archivio pubblico.

Pubblicazione di una versione patchata di un pacchetto esterno esistente

In questo scenario, un pacchetto, packageB, esiste esternamente in un repository pubblico collegato al repository. Quando un gestore di pacchetti collegato al tuo repository richiede PackageB, la versione del pacchetto viene inserita nel tuo repository dal repository pubblico. Poiché questa è la prima versione del pacchetto di PackageB aggiunta al repository, le impostazioni di origine del pacchetto sono configurate su Publish: BLOCK e Upstream: ALLOW. Il team decide che deve pubblicare le versioni del pacchetto con patch di questo pacchetto nel repository. Per poter pubblicare direttamente le versioni dei pacchetti, il team modifica le impostazioni di controllo dell'origine del pacchetto in Publish: ALLOW e Upstream: BLOCK. Le versioni di questo pacchetto possono ora essere pubblicate direttamente nel repository e importate da archivi pubblici. Dopo che il team ha pubblicato le versioni del pacchetto con patch, ripristina le impostazioni di origine del pacchetto su Publish: BLOCK e Upstream: ALLOW.

Impostazioni di controllo dell'origine del pacchetto

Con i controlli sull'origine dei pacchetti, è possibile configurare il modo in cui le versioni dei pacchetti possono essere aggiunte a un repository. Gli elenchi seguenti includono le impostazioni e i valori disponibili per il controllo dell'origine dei pacchetti.

Nota

Le impostazioni e i valori disponibili sono diversi quando si configurano i controlli di origine sui gruppi di pacchetti. Per ulteriori informazioni, consulta Controlli dell'origine dei gruppi di pacchetti.

Pubblicare

Questa impostazione configura se le versioni dei pacchetti possono essere pubblicate direttamente nel repository utilizzando gestori di pacchetti o strumenti simili.

  • ALLOW: le versioni dei Package possono essere pubblicate direttamente.

  • BLOCK: Le versioni dei pacchetti non possono essere pubblicate direttamente.

A monte

Questa impostazione configura se le versioni dei pacchetti possono essere importate da archivi pubblici esterni o conservate dagli archivi upstream quando richiesto da un gestore di pacchetti.

  • CONSENTI: qualsiasi versione del pacchetto può essere conservata da altri CodeArtifact repository configurati come archivi upstream o importata da una fonte pubblica con una connessione esterna.

  • BLOCK: le versioni dei pacchetti non possono essere conservate da altri CodeArtifact repository configurati come repository upstream o importate da una fonte pubblica con una connessione esterna.

Impostazioni predefinite per il controllo dell'origine dei pacchetti

Le impostazioni di controllo dell'origine dei pacchetti predefinite sono configurate in base alle impostazioni di controllo dell'origine del gruppo di pacchetti associato al pacchetto. Per ulteriori informazioni sui gruppi di pacchetti e sui controlli di origine dei gruppi di pacchetti, vedere Lavorare con i gruppi di pacchetti in CodeArtifact eControlli dell'origine dei gruppi di pacchetti.

Se un pacchetto è associato a un gruppo di pacchetti con impostazioni di restrizione ALLOW per ogni tipo di restrizione, i controlli di origine dei pacchetti predefiniti per un pacchetto si baseranno su come la prima versione di quel pacchetto viene aggiunta all'archivio.

  • Se la prima versione del pacchetto viene pubblicata direttamente da un gestore di pacchetti, le impostazioni saranno Publish: ALLOW e Upstream: BLOCK.

  • Se la prima versione del pacchetto viene importata da una fonte pubblica, le impostazioni saranno Publish: BLOCK e Upstream: ALLOW.

Nota

I pacchetti che esistevano nei CodeArtifact repository prima di maggio 2022 circa avranno i controlli di origine dei pacchetti predefiniti Publish: ALLOW e Upstream: ALLOW. I controlli di origine dei pacchetti devono essere impostati manualmente per tali pacchetti. Gli attuali valori predefiniti sono stati impostati su nuovi pacchetti da quel momento e hanno iniziato a essere applicati quando la funzionalità è stata lanciata il 14 luglio 2022. Per ulteriori informazioni sull'impostazione dei controlli di origine dei pacchetti, consultaModifica dei controlli di origine dei pacchetti.

Altrimenti, se un pacchetto è associato a un gruppo di pacchetti con almeno un'impostazione di restrizione diBLOCK, le impostazioni di controllo dell'origine predefinite per quel pacchetto saranno impostate su Publish: ALLOW e Upstream: ALLOW.

In che modo i controlli di origine dei pacchetti interagiscono con i controlli di origine dei gruppi di pacchetti

Poiché i pacchetti hanno impostazioni di controllo dell'origine e i gruppi di pacchetti associati hanno impostazioni di controllo dell'origine, è importante capire come queste due diverse impostazioni interagiscono tra loro.

L'interazione tra le due impostazioni è che un'impostazione di BLOCK sempre vince su un'impostazione diALLOW. La tabella seguente elenca alcuni esempi di configurazioni e le relative impostazioni di controllo dell'origine effettive.

Impostazione del controllo dell'origine del pacchetto Impostazione del controllo dell'origine del gruppo di pacchetti Impostazione efficace del controllo dell'origine

PUBBLICA: CONSENTI

UPSTREAM: CONSENTI

PUBBLICA: CONSENTI

UPSTREAM: CONSENTI

PUBBLICA: CONSENTI

UPSTREAM: CONSENTI

PUBBLICA: BLOCCA

UPSTREAM: CONSENTI

PUBBLICA: CONSENTI

UPSTREAM: CONSENTI

PUBBLICA: BLOCCA

UPSTREAM: CONSENTI

PUBBLICA: CONSENTI

UPSTREAM: CONSENTI

PUBBLICA: CONSENTI

UPSTREAM: BLOCCA

PUBBLICA: CONSENTI

UPSTREAM: BLOCCA

Ciò significa che un pacchetto con le impostazioni di origine di Publish: ALLOW e Upstream: ALLOW viene effettivamente rimandato alle impostazioni di controllo dell'origine del gruppo di pacchetti associato.

Modifica dei controlli di origine dei pacchetti

I controlli di origine dei pacchetti vengono configurati automaticamente in base al modo in cui la prima versione del pacchetto di un pacchetto viene aggiunta al repository, per ulteriori informazioni, vedereImpostazioni predefinite per il controllo dell'origine dei pacchetti. Per aggiungere o modificare i controlli di origine del pacchetto per un pacchetto in un CodeArtifact repository, effettuate i passaggi indicati nella procedura seguente.

Per aggiungere o modificare i controlli di origine del pacchetto (console)
  1. Apri la AWS CodeArtifact console all'indirizzo https://console.aws.amazon.com/codesuite/codeartifact/home.

  2. Nel riquadro di navigazione, scegli Repository e scegli il repository che contiene il pacchetto che desideri modificare.

  3. Nella tabella Pacchetti, cerca e seleziona il pacchetto che desideri modificare.

  4. Nella pagina di riepilogo del pacchetto, in Origin controls, scegli Modifica.

  5. In Modifica controlli di origine, scegli i controlli di origine del pacchetto che desideri impostare per questo pacchetto. Entrambe le impostazioni di controllo dell'origine del pacchetto, Publish e Upstream, devono essere impostate contemporaneamente.

    • Per consentire la pubblicazione diretta delle versioni dei pacchetti, in Pubblica, scegli Consenti. Per bloccare la pubblicazione delle versioni dei pacchetti, scegli Blocca.

    • Per consentire l'inserimento di pacchetti da repository esterni e l'estrazione di pacchetti da repository upstream, in Origini upstream, scegli Consenti. Per bloccare tutte le importazioni e l'estrazione di versioni di pacchetti da repository esterni e upstream, scegliete Blocca.

Per aggiungere o modificare i controlli di origine dei pacchetti ()AWS CLI
  1. In caso contrario, configurali AWS CLI seguendo la procedura riportata di seguitoConfigurazione con AWS CodeArtifact.

  2. Usa il put-package-origin-configuration comando per aggiungere o modificare i controlli di origine del pacchetto. Sostituisci i seguenti campi:

    • Sostituisci my_domain con il CodeArtifact dominio che contiene il pacchetto che desideri aggiornare.

    • Sostituisci my_repo con il CodeArtifact repository che contiene il pacchetto che desideri aggiornare.

    • Sostituisci npm con il formato del pacchetto che desideri aggiornare.

    • Sostituisci my_package con il nome del pacchetto che desideri aggiornare.

    • Sostituisci ALLOW e BLOCK con le impostazioni di controllo dell'origine del pacchetto desiderate.

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

Archiviazione e archivi upstream

CodeArtifact non consente la pubblicazione di versioni di pacchetti presenti in repository upstream raggiungibili o in archivi pubblici. Ad esempio, supponiamo di voler pubblicare un pacchetto Maven in un repository e myrepo di disporre di un repository upstream con una myrepo connessione esterna com.mycompany.mypackage:1.0 a Maven Central. Considerate i seguenti scenari.

  1. Le impostazioni di controllo dell'origine del pacchetto com.mycompany.mypackage sono Publish: ALLOW e Upstream: ALLOW. Se com.mycompany.mypackage:1.0 è presente nel repository upstream o in Maven Central, CodeArtifact rifiuta qualsiasi tentativo di pubblicazione su di esso con un errore di conflitto 409. myrepo È comunque possibile pubblicare una versione diversa, ad esempio. com.mycompany.mypackage:1.1

  2. Le impostazioni di controllo dell'origine del pacchetto com.mycompany.mypackage sono Publish: ALLOW e Upstream: BLOCK. Puoi pubblicare nel tuo repository qualsiasi versione com.mycompany.mypackage di che non esista già perché le versioni del pacchetto non sono raggiungibili.

  3. Le impostazioni di controllo dell'origine del pacchetto com.mycompany.mypackage sono Publish: BLOCK e Upstream: ALLOW. Non puoi pubblicare alcuna versione del pacchetto direttamente nel tuo repository.