Policy del repository - 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à.

Policy del repository

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 IAM responsabili di accedere al tuo repository.

Per ulteriori informazioni, vedere Politiche basate sulle risorse e Politiche basate sull'identità e Politiche basate sulle risorse.

Crea una politica delle risorse per concedere l'accesso in lettura

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

{ "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

Nota

L'codeartifact:ReadFromRepositoryazione può essere utilizzata solo su una risorsa del repository. Non puoi inserire 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.

{ "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

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 chiamaput-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

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:

{ "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

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

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, utilizzali ARN nella Principal sezione della politica. Ad esempio, utilizza quanto segue per concedere l'accesso in lettura all'IAMutente bob nell'account123456789012.

{ "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

L'codeartifact:PublishPackageVersionazione 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 il ARN 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

Il pacchetto ARN for a npm senza scope ha la stringa vuota per il campo namespace. Ad esempio, quanto segue è il ARN caso di un pacchetto senza ambito e con nome react nel my_repo repository in domain. 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 my_repo repository.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:PublishPackageVersion" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Resource": "arn:aws:codeartifact:region-id: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

  1. NuGet: codeartifact:ReadFromRepository e specifica la risorsa del repository

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

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

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

Interazione tra le politiche del repository e del dominio

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

  • Non viene valutata alcuna politica di repository quando si eseguono operazioni a livello di dominio come o. DescribeDomainListRepositoriesInDomain

  • La politica del dominio non viene valutata durante l'esecuzione. PutDomainPermissionsPolicy Tieni presente che questa regola impedisce i blocchi.

  • La politica del dominio viene valutata durante l'esecuzione PutRepositoryPermissionsPolicy, 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 diversi CodeArtifact segue le IAM regole generali per l'accesso tra account diversi, come descritto in Determinare se una richiesta tra più account è consentita 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.