

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
<a name="package-origin-controls"></a>

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](dependency-substitution-attacks.md). 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, vedere[Impostazioni di controllo dell'origine dei pacchetti](#package-origin-control-settings).

Per rimuovere il record del pacchetto dopo aver utilizzato l'operazione `put-package-origin-configuration` API, usa `delete-package` (vedi[Elimina un pacchetto o una versione del pacchetto](delete-package.md)).

## Scenari comuni di controllo dell'accesso ai pacchetti
<a name="package-origin-control-scenarios"></a>

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.](https://docs.aws.amazon.com/it_it/codeartifact/latest/ug/images/package-origin-controls-one.png)


**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.](https://docs.aws.amazon.com/it_it/codeartifact/latest/ug/images/package-origin-controls-two.png)


**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
<a name="package-origin-control-settings"></a>

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](package-group-origin-controls.md).

**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
<a name="default-package-origin-control-settings"></a>

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](package-groups.md) e[Controlli dell’origine dei gruppi di pacchetti](package-group-origin-controls.md).

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, vedere[Modifica dei controlli di origine dei pacchetti](#edit-package-origin-controls).

Altrimenti, se un pacchetto è associato a un gruppo di pacchetti con almeno un'impostazione di restrizione pari a `BLOCK` o`ALLOW_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
<a name="package-origin-controls-interaction-package-groups"></a>

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 di`ALLOW`. 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<br />UPSTREAM: CONSENTI | PUBBLICARE: CONSENTIRE<br />UPSTREAM: CONSENTI | PUBBLICARE: CONSENTIRE<br />UPSTREAM: CONSENTI | 
| PUBBLICA: BLOCCA<br />UPSTREAM: CONSENTI | PUBBLICARE: CONSENTIRE<br />UPSTREAM: CONSENTI | PUBBLICA: BLOCCA<br />UPSTREAM: CONSENTI | 
| PUBBLICARE: CONSENTIRE<br />UPSTREAM: CONSENTI | PUBBLICARE: CONSENTIRE<br />UPSTREAM: BLOCCA | PUBBLICARE: CONSENTIRE<br />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
<a name="edit-package-origin-controls"></a>

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, vedere[Impostazioni predefinite per il controllo dell'origine dei pacchetti](#default-package-origin-control-settings). 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](https://console.aws.amazon.com/codesuite/codeartifact/home).

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

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

1. Dalla pagina di riepilogo del pacchetto, nei controlli ** Origin**, scegli ** Modifica**.

1. 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 in[Configurazione con AWS CodeArtifact](get-set-up-for-codeartifact.md).

1. 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
<a name="package-publishing-upstreams"></a>

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`

1. 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`

1. 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.