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. Resource-basedle autorizzazioni consentono di specificare chi ha accesso a un repository e quali azioni possono 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 Resource-Based Policy and Policy and Identity-Based Resource-Based Policy.
Crea una politica sulle risorse per concedere l'accesso in lettura
Una policy sulle risorse è un file di testo in formato JSON. Il file deve specificare un principale (attore), una o più azioni e un effetto (AllowoDeny). Ad esempio, la seguente politica sulle risorse concede all'account l'123456789012autorizzazione a scaricare pacchetti dal repository.
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. La politica di dominio deve concedere almeno codeartifact:GetAuthorizationToken l'autorizzazione al principale. Per un esempio di politica di dominio completa per la concessione dell'accesso tra account, consulta questo. Esempio di politica 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 ma codeartifact:ReadFromRepository come 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, 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 in aggiunta al ReadFromRepository fatto che un utente che scarica pacchetti da un repository deve interagire con esso anche in altri modi.
Imposta una politica
Dopo aver creato un documento di policy, usa il put-repository-permissions-policy comando per allegarlo a un repository:
aws codeartifact put-repository-permissions-policy --domainmy_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 dal repository, il che 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 quando si chiama 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 della policy e un identificatore di revisione. Puoi passare l'identificatore di revisione a utilizzando l'opzione. put-repository-permissions-policy --policy-revision Ciò garantisce che venga sovrascritta una revisione nota del documento 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 politico. Per formattare l'output in modo che sia leggibile, usate il --output comando e --query policy.document insieme al modulo Pythonjson.tool.
aws codeartifact get-repository-permissions-policy --domainmy_domain--domain-owner111122223333\ --repositorymy_repo--output text --query policy.document | python -m json.tool
Output di esempio:
Eliminazione di una policy
Utilizzate il delete-repository-permissions-policy comando per eliminare una policy da un repository.
aws codeartifact delete-repository-permissions-policy --domainmy_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 tale 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 in lettura all'utente IAM bob nell'account123456789012.
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 degli ARN dei CodeArtifact pacchetti è 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 contiene la stringa vuota per il campo namespace. Ad esempio, quanto segue è l'ARN per un pacchetto senza ambito e con nome react nel repository nel dominio. my_repo 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
Importante
Per concedere il permesso di pubblicare Maven e le versioni NuGet del pacchetto, aggiungi le seguenti autorizzazioni oltre a. codeartifact:PublishPackageVersion
NuGet:
codeartifact:ReadFromRepositorye 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 l'autorizzazione di scrittura su tutti i pacchetti del my_repo repository.
Interazione tra le policy del repository e del dominio
CodeArtifact supporta le politiche relative alle risorse su domini e repository. Le politiche relative alle risorse sono opzionali. Ogni dominio può avere una policy e ogni repository del dominio può avere una propria policy 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 negata. Le politiche di dominio e repository vengono valutate utilizzando le seguenti regole:
-
Nessuna politica in materia di risorse viene valutata quando si eseguono operazioni a livello di account come o. ListDomains ListRepositories
-
Nessuna politica di repository viene valutata quando si eseguono operazioni a livello di dominio come o. DescribeDomain ListRepositoriesInDomain
-
La policy di dominio non viene valutata durante l'esecuzione. PutDomainPermissionsPolicy Tieni presente che questa regola previene i blocchi.
-
La politica del dominio viene valutata durante l'esecuzione PutRepositoryPermissionsPolicy, ma la politica del repository non viene valutata.
-
Un rifiuto esplicito in una politica ha la precedenza su un permesso in un'altra politica.
-
Un'autorizzazione esplicita è richiesta solo in una politica delle risorse. L'omissione di un'azione da una politica di repository non comporterà un rifiuto implicito se la politica di dominio consente l'azione.
-
Se nessuna policy relativa alle risorse consente un'azione, il risultato è un rifiuto implicito, a meno che l'account del mittente chiamante non sia il proprietario del dominio o l'account dell'amministratore del repository e una policy basata sull'identità non consenta l'azione.
Le politiche relative alle risorse sono opzionali se utilizzate per concedere l'accesso in uno scenario con un solo account, in cui l'account chiamante utilizzato per accedere a un repository è lo stesso dell'account del proprietario del dominio e 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 dell'account del proprietario del dominio o dell'amministratore del repository. Cross-account l'accesso CodeArtifact segue le regole IAM generali per l'accesso tra account, come descritto in Determinare se una richiesta tra account è consentita nella IAM User Guide.
-
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 un dominio o una policy di repository. Tieni presente che in questo caso, non è richiesta alcuna autorizzazione esplicita in una policy basata sull'identità.
-
A un titolare dell'account amministratore del repository può essere concesso l'accesso al repository tramite una policy 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 di un altro account viene concesso l'accesso solo se consentito da almeno una policy sulle risorse e da almeno una policy basata sull'identità, senza che nessuna politica neghi esplicitamente l'azione.