

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

# Policy del repository
<a name="repo-policies"></a>

CodeArtifact utilizza autorizzazioni basate sulle risorse per controllare l'accesso. Le autorizzazioni basate sulle risorse ti consentono di specificare chi ha accesso a un repository e quali operazioni può eseguire su di esso. Per impostazione predefinita, solo il proprietario ha accesso a un repository. Puoi applicare un documento di policy che consenta ad altri responsabili IAM di accedere al tuo repository.

Per ulteriori informazioni, consulta Politiche basate sulle [risorse e Politiche basate sull'[identità](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html) e Politiche basate sulle](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) risorse.

## Crea una politica delle risorse per concedere l'accesso in lettura
<a name="creating-a-resource-policy-to-grant-read-access"></a>

Una politica delle risorse è un file di testo in formato JSON. Il file deve specificare un principale (attore), una o più azioni e un effetto (`Allow`o`Deny`). Ad esempio, la seguente politica in materia di risorse concede all'account l'`123456789012`autorizzazione a scaricare i pacchetti dal repository.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codeartifact:ReadFromRepository"
            ],
            "Effect": "Allow",
            "Principal": {
                 "AWS": "arn:aws:iam::123456789012:root"
            },
            "Resource": "*"
        }
    ]
}
```

------

Poiché la policy viene valutata solo per le operazioni sul repository a cui è collegata, non è necessario specificare una risorsa. Poiché la risorsa è implicita, è possibile impostarla su. `Resource` `*` Affinché un gestore di pacchetti possa scaricare un pacchetto da questo repository, sarà inoltre necessario creare una politica di dominio per l'accesso tra account diversi. La politica del dominio deve concedere almeno `codeartifact:GetAuthorizationToken` l'autorizzazione al principale. Per un esempio di una politica di dominio completa per la concessione dell'accesso a più account, consulta questo. [Esempio di policy di dominio](domain-policies.md#domain-policy-example)

**Nota**  
L'`codeartifact:ReadFromRepository`azione può essere utilizzata solo su una risorsa del repository. Non puoi inserire l'Amazon Resource Name (ARN) di un pacchetto come risorsa con `codeartifact:ReadFromRepository` l'azione per consentire l'accesso in lettura a un sottoinsieme di pacchetti in un repository. Un determinato principale può leggere tutti i pacchetti in un repository o nessuno di essi.

Poiché l'unica azione specificata nel repository è `ReadFromRepository` che gli utenti e i ruoli dell'account `1234567890` possono scaricare i pacchetti dal repository. Tuttavia, non possono eseguire altre azioni su di essi (ad esempio, elencare i nomi e le versioni dei pacchetti). In genere, si concedono le autorizzazioni nella seguente politica, oltre al `ReadFromRepository` fatto che un utente che scarica pacchetti da un repository deve interagire con esso anche in altri modi.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codeartifact:DescribePackageVersion",
                "codeartifact:DescribeRepository",
                "codeartifact:GetPackageVersionReadme",
                "codeartifact:GetRepositoryEndpoint",
                "codeartifact:ListPackages",
                "codeartifact:ListPackageVersions",
                "codeartifact:ListPackageVersionAssets",
                "codeartifact:ListPackageVersionDependencies",
                "codeartifact:ReadFromRepository"
            ],
            "Effect": "Allow",
            "Principal": {
                 "AWS": "arn:aws:iam::123456789012:root"
            },
            "Resource": "*"
        }
    ]
}
```

------

## Imposta una politica
<a name="setting-a-policy"></a>

Dopo aver creato un documento di policy, utilizzate il `put-repository-permissions-policy` comando per allegarlo a un repository:

```
aws codeartifact put-repository-permissions-policy --domain my_domain --domain-owner 111122223333 \
          --repository my_repo --policy-document file:///PATH/TO/policy.json
```

Quando si chiama`put-repository-permissions-policy`, la politica delle risorse sul repository viene ignorata durante la valutazione delle autorizzazioni. Ciò garantisce che il proprietario di un dominio non possa bloccarsi dall'archivio, il che gli impedirebbe di aggiornare la politica delle risorse.

**Nota**  
 Non è possibile concedere le autorizzazioni a un altro AWS account per aggiornare la politica delle risorse su un repository utilizzando una politica delle risorse, poiché la politica delle risorse viene ignorata durante la chiamata. put-repository-permissions-policy 

Output di esempio:

```
{
    "policy": {
        "resourceArn": "arn:aws:codeartifact:region-id:111122223333:repository/my_domain/my_repo",
        "document": "{ ...policy document content...}",
        "revision": "MQlyyTQRASRU3HB58gBtSDHXG7Q3hvxxxxxxx="
    }
}
```

L'output del comando contiene l'Amazon Resource Name (ARN) della risorsa del repository, il contenuto completo del documento di policy e un identificatore di revisione. Puoi passare l'identificatore di revisione all'utilizzo dell'opzione. `put-repository-permissions-policy` `--policy-revision` Ciò garantisce che una revisione nota del documento venga sovrascritta e non una versione più recente impostata da un altro autore.

## Leggi una politica
<a name="reading-a-policy"></a>

Usa il `get-repository-permissions-policy` comando per leggere una versione esistente di un documento di policy. Per formattare l'output in modo da renderlo leggibile, usa `--output` and `--query policy.document` insieme al modulo `json.tool` Python.

```
aws codeartifact get-repository-permissions-policy --domain my_domain --domain-owner 111122223333 \
          --repository my_repo --output text --query policy.document | python -m json.tool
```

Output di esempio:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:root"
            },
            "Action": [
                "codeartifact:DescribePackageVersion",
                "codeartifact:DescribeRepository",
                "codeartifact:GetPackageVersionReadme",
                "codeartifact:GetRepositoryEndpoint",
                "codeartifact:ListPackages",
                "codeartifact:ListPackageVersions",
                "codeartifact:ListPackageVersionAssets",
                "codeartifact:ListPackageVersionDependencies",
                "codeartifact:ReadFromRepository"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Eliminazione di una policy
<a name="deleting-a-policy"></a>

Utilizzate il `delete-repository-permissions-policy` comando per eliminare una policy da un repository.

```
aws codeartifact delete-repository-permissions-policy --domain my_domain --domain-owner 111122223333 \
          --repository my_repo
```

Il formato dell'output è lo stesso del `get-repository-permissions-policy` comando.

## Concedi l'accesso in lettura ai principali
<a name="granting-read-access-to-specific-principals"></a>

 Quando si specifica l'utente root di un account come principale in un documento di policy, si concede l'accesso a tutti gli utenti e i ruoli di quell'account. Per limitare l'accesso a utenti o ruoli selezionati, utilizza il relativo ARN nella `Principal` sezione della policy. Ad esempio, utilizza quanto segue per concedere l'accesso `bob` in lettura all'account `123456789012` utente IAM.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codeartifact:ReadFromRepository"
            ],
            "Effect": "Allow",
            "Principal": {
                 "AWS": "arn:aws:iam::123456789012:user/bob"
            },
            "Resource": "*"
        }
    ]
}
```

------

## Concedi l'accesso in scrittura ai pacchetti
<a name="granting-write-access-to-specific-packages"></a>

 L'`codeartifact:PublishPackageVersion`azione viene utilizzata per controllare l'autorizzazione a pubblicare nuove versioni di un pacchetto. La risorsa utilizzata con questa azione deve essere un pacchetto. Il formato del CodeArtifact pacchetto ARNs è il seguente.

```
arn:aws:codeartifact:region-id:111122223333:package/my_domain/my_repo/package-format/package-namespace/package-name
```

L'esempio seguente mostra l'ARN per un pacchetto npm con ambito `@parity` e nome `ui` nel `my_repo` repository in domain. `my_domain` 

```
arn:aws:codeartifact:region-id:111122223333:package/my_domain/my_repo/npm/parity/ui
```

L'ARN per un pacchetto npm senza ambito ha la stringa vuota per il campo namespace. Ad esempio, quanto segue è l'ARN per un pacchetto senza ambito e con nome `react` nel `my_repo` repository nel dominio. `my_domain`

```
arn:aws:codeartifact:region-id:111122223333:package/my_domain/my_repo/npm//react
```

La seguente politica concede all'account `123456789012` l'autorizzazione a pubblicare versioni di `@parity/ui` nel repository. `my_repo`

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codeartifact:PublishPackageVersion"
            ],
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:root"
            },
            "Resource": "arn:aws:codeartifact:us-east-1:111122223333:package/my_domain/my_repo/npm/parity/ui"
        }
    ]
}
```

------

**Importante**  
Per concedere l'autorizzazione alla pubblicazione di Maven e delle versioni dei NuGet pacchetti, aggiungi le seguenti autorizzazioni oltre a. `codeartifact:PublishPackageVersion`  
NuGet: `codeartifact:ReadFromRepository` e specifica la risorsa del repository
Maven: `codeartifact:PutPackageMetadata`

 Poiché questa politica specifica un dominio e un repository come parte della risorsa, consente la pubblicazione solo se collegati a quel repository. 

## Concedi l'accesso in scrittura a un repository
<a name="granting-write-access-to-a-repository"></a>

 È possibile utilizzare i caratteri jolly per concedere il permesso di scrittura per tutti i pacchetti in un repository. Ad esempio, utilizzate la seguente politica per concedere a un account il permesso di scrivere su tutti i pacchetti del `my_repo` repository.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codeartifact:PublishPackageVersion"
            ],
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:root"
            },
            "Resource": "arn:aws:codeartifact:us-east-1:111122223333:package/my_domain/my_repo/*"
        }
    ]
}
```

------

## Interazione tra le politiche del repository e del dominio
<a name="interaction-repo-domain-policies"></a>

 CodeArtifact supporta le politiche delle risorse su domini e repository. Le politiche relative alle risorse sono facoltative. Ogni dominio può avere una politica e ogni repository del dominio può avere una propria politica di repository. Se sono presenti sia una policy di dominio che una policy di repository, entrambe vengono valutate per determinare se una richiesta a un CodeArtifact repository è consentita o rifiutata. Le politiche di dominio e di repository vengono valutate utilizzando le seguenti regole:
+ Nessuna politica delle risorse viene valutata quando si eseguono operazioni a livello di account come o. [ListDomains[ListRepositories](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListRepositories.html)](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListDomains.html)
+ Non viene valutata alcuna politica di repository quando si eseguono operazioni a livello di dominio come o. [DescribeDomain[ListRepositoriesInDomain](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListRepositoriesInDomain.html)](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DescribeDomain.html)
+ La politica del dominio non viene valutata durante l'esecuzione. [PutDomainPermissionsPolicy](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PutDomainPermissionsPolicy.html) Tieni presente che questa regola impedisce i blocchi.
+ La politica del dominio viene valutata durante l'esecuzione [PutRepositoryPermissionsPolicy](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PutRepositoryPermissionsPolicy.html), ma la politica del repository non viene valutata.
+ Una negazione esplicita in qualsiasi policy ha la precedenza su un'autorizzazione contenuta in un'altra policy.
+ Un'autorizzazione esplicita è richiesta solo in una politica delle risorse. L'omissione di un'azione da una policy di repository non comporterà un rifiuto implicito se la policy del dominio consente l'azione.
+ Quando nessuna policy relativa alle risorse consente un'azione, il risultato è un rifiuto implicito, a meno che l'account del principale chiamante non sia l'account del proprietario del dominio o dell'amministratore del repository e una politica basata sull'identità consenta l'azione.

 Le politiche relative alle risorse sono facoltative se utilizzate per concedere l'accesso in uno scenario con account singolo, in cui l'account chiamante utilizzato per accedere a un repository è lo stesso del proprietario del dominio e dell'account dell'amministratore del repository. Le politiche relative alle risorse sono necessarie per concedere l'accesso in uno scenario con più account in cui l'account del chiamante non è lo stesso del proprietario del dominio o dell'account dell'amministratore del repository. *L'accesso tra account in CodeArtifact segue le regole generali IAM per l'accesso tra account diversi, come descritto in [Determinare se una richiesta tra account è consentita](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic-cross-account.html#policy-eval-cross-account) nella Guida per l'utente IAM.*
+ A un titolare dell'account del proprietario del dominio può essere concesso l'accesso a qualsiasi archivio del dominio tramite una politica basata sull'identità. Tieni presente che in questo caso, non è richiesta alcuna autorizzazione esplicita in una politica di dominio o di repository.
+ A un titolare dell'account del proprietario del dominio può essere concesso l'accesso a qualsiasi repository tramite una politica di dominio o di repository. Tieni presente che in questo caso, non è richiesta alcuna autorizzazione esplicita in una politica basata sull'identità.
+ A un responsabile dell'account dell'amministratore del repository può essere concesso l'accesso al repository tramite una politica basata sull'identità. Tieni presente che in questo caso, non è richiesta alcuna autorizzazione esplicita in una politica di dominio o di repository.
+ A un principale di un altro account viene concesso l'accesso solo se consentito da almeno una politica delle risorse e da almeno una politica basata sull'identità, senza che alcuna politica neghi esplicitamente l'azione.