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 repository tramite 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.

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 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 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 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 Block, la versione 1.2 non può essere pubblicata.

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 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 repository, le impostazioni di origine del pacchetto sono configurate su Publish: BLOCK e Upstream: ALLOW. Il tuo 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 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 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 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 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)
Apri la AWS CodeArtifact console su https://console.aws.amazon.com/codesuite/codeartifact/home
. -
Nel pannello di navigazione, scegli Repository e scegli il repository che contiene il pacchetto che desideri modificare.
-
Nella tabella Pacchetti, cerca e seleziona il pacchetto che desideri modificare.
-
Nella pagina di riepilogo del pacchetto, in Origin controls, scegli Modifica.
-
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
In caso contrario, configurali AWS CLI seguendo la procedura riportata di seguitoConfigurazione con AWS CodeArtifact.
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
eBLOCK
con le impostazioni di controllo dell'origine del pacchetto desiderate.
aws codeartifact put-package-origin-configuration --domain
my_domain
\ --repositorymy_repo
--formatnpm
--packagemy_package
\ --restrictions publish=ALLOW
,upstream=BLOCK
Repository editoriali e 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.
Le impostazioni di controllo dell'origine del pacchetto
com.mycompany.mypackage
sono Publish: ALLOW e Upstream: ALLOW. Secom.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
Le impostazioni di controllo dell'origine del pacchetto
com.mycompany.mypackage
sono Publish: ALLOW e Upstream: BLOCK. Puoi pubblicare nel tuo repository qualsiasi versionecom.mycompany.mypackage
di che non esista già perché le versioni del pacchetto non sono raggiungibili.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.