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 (Allow
oDeny
). Ad esempio, la seguente politica in materia di risorse concede all'account l'123456789012
autorizzazione 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:ReadFromRepository
azione 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-owner111122223333
\ --repositorymy_repo
--policy-documentfile:///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-owner111122223333
\ --repositorymy_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-owner111122223333
\ --repositorymy_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: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 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
NuGet:
codeartifact:ReadFromRepository
e specifica la risorsa del repositoryMaven:
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.