View a markdown version of this page

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 repository pubblico esterno. Consentire l'aggiunta delle versioni di un pacchetto tramite pubblicazione diretta e inserimento da repository pubblici rende vulnerabili a un attacco di sostituzione delle dipendenze. Per ulteriori informazioni, consulta Attacchi di sostituzione delle dipendenze. Per proteggerti da un attacco di sostituzione delle dipendenze, puoi configurare i controlli sull'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 diversi pacchetti di provenire sia da fonti interne, come la pubblicazione diretta, sia da fonti esterne, come i repository pubblici. Per impostazione predefinita, i controlli sull'origine dei pacchetti verranno configurati in base al modo in cui la prima versione di un pacchetto viene aggiunta al repository. Per informazioni sulle impostazioni di controllo dell'origine dei pacchetti e sui relativi valori predefiniti, vedereImpostazioni di controllo dell'origine dei pacchetti.

Per rimuovere il record del pacchetto dopo aver utilizzato l'operazione put-package-origin-configuration API, usa delete-package (vediElimina 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.

Nei seguenti scenari, un pacchetto interno è un pacchetto pubblicato direttamente da un gestore di pacchetti nel tuo repository, ad esempio un pacchetto creato e gestito da te o dal tuo team. Un pacchetto esterno è un pacchetto presente in un repository pubblico che può essere inserito nel 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 Publish: Allow e Upstream: Block. Dopo che il pacchetto esiste nel tuo repository, un pacchetto con lo stesso nome viene pubblicato in un repository pubblico connesso al tuo 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 sull'origine dei pacchetti sono configurati per bloccare l'importazione 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 nel repository pubblico. Normalmente, RePoA acquisisce la versione 3.0 dopo che il pacchetto è stato richiesto da un gestore di pacchetti. Poiché l'importazione dei pacchetti è impostata su Blocca, la versione 3.0 non viene inserita nel CodeArtifact repository e non è disponibile per i gestori di pacchetti ad essa collegati.

Grafica semplice che mostra una nuova versione di un pacchetto esterno bloccata da un repository 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 che hai collegato al tuo repository. Quando un gestore di pacchetti connesso 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 tuo repository, le impostazioni di origine del pacchetto sono configurate su Publish: BLOCK e Upstream: ALLOW. Successivamente, provi a 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 o state cercando di pubblicare direttamente la versione esatta del pacchetto che già esiste esternamente. CodeArtifact rifiuterà la versione che stai tentando di pubblicare, ma ti consentirà 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 repository pubblico. Il tuo repository contiene la versione 3.0 che ha acquisito 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 Blocca, 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 che hai connesso al tuo repository. Quando un gestore di pacchetti connesso 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 tuo repository, le impostazioni di origine del pacchetto sono configurate su Publish: BLOCK e Upstream: ALLOW. Il tuo team decide di dover pubblicare le versioni patchate 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 tuo repository e inserite da repository 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 dei pacchetti

Con i controlli sull'origine dei pacchetti, puoi configurare in che modo le versioni dei pacchetti possono essere aggiunte a un repository. I seguenti elenchi 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.

  • CONSENTI: le versioni dei pacchetti possono essere pubblicate direttamente.

  • BLOCCA: le versioni dei pacchetti non possono essere pubblicate direttamente.

A monte

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

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

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

Impostazioni predefinite per il controllo dell'origine dei pacchetti

Le impostazioni predefinite per il controllo dell'origine dei pacchetti 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 Utilizzo dei 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 del pacchetto predefiniti per un pacchetto si baseranno sul modo in cui la prima versione di quel pacchetto viene aggiunta al repository.

  • 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 acquisita 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 sull'origine dei pacchetti devono essere impostati manualmente per tali pacchetti. Gli attuali valori predefiniti sono stati impostati sui 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, vedereModifica dei controlli di origine dei pacchetti.

Altrimenti, se un pacchetto è associato a un gruppo di pacchetti con almeno un'impostazione di restrizione pari a BLOCK oALLOW_SPECIFIC_REPOSITORIES, 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 vince BLOCK sempre su un'impostazione diALLOW. La tabella seguente elenca alcuni esempi di configurazioni e le relative impostazioni effettive di controllo dell'origine.

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

PUBBLICARE: CONSENTIRE

UPSTREAM: CONSENTI

PUBBLICARE: CONSENTIRE

UPSTREAM: CONSENTI

PUBBLICARE: CONSENTIRE

UPSTREAM: CONSENTI

PUBBLICA: BLOCCA

UPSTREAM: CONSENTI

PUBBLICARE: CONSENTIRE

UPSTREAM: CONSENTI

PUBBLICA: BLOCCA

UPSTREAM: CONSENTI

PUBBLICARE: CONSENTIRE

UPSTREAM: CONSENTI

PUBBLICARE: CONSENTIRE

UPSTREAM: BLOCCA

PUBBLICARE: CONSENTIRE

UPSTREAM: BLOCCA

Ciò significa che se un pacchetto ha le impostazioni di origine di Publish: ALLOW e Upstream: ALLOW, allora si riferisce effettivamente 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 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, esegui i passaggi della 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. Dalla pagina di riepilogo del pacchetto, nei controlli Origin, scegli Modifica.

  5. In Modifica i 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 del pacchetto, scegli Blocca.

    • Per consentire l'inserimento di pacchetti da repository esterni e il prelievo di pacchetti da repository upstream, nei sorgenti upstream, scegli Consenti. Per bloccare l'acquisizione e l'estrazione delle versioni dei pacchetti da repository esterni e upstream, scegli Blocca.

Per aggiungere o modificare i controlli di origine dei pacchetti (AWS CLI)
  1. Se non lo hai fatto, AWS CLI configuralo seguendo i passaggi inConfigurazione 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.

    • Sostituiscilo my_repo con il CodeArtifact repository che contiene il pacchetto da 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

Pubblicazione e repository upstream

CodeArtifact non consente la pubblicazione di versioni dei 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 Potresti comunque 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 che non esiste già perché le versioni del pacchetto non sono raggiungibili. com.mycompany.mypackage

  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.