View a markdown version of this page

Criteri di dominio - 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à.

Criteri di dominio

CodeArtifact supporta l'utilizzo di autorizzazioni basate sulle risorse per controllare l'accesso. Resource-basedle autorizzazioni consentono di specificare chi ha accesso a una risorsa e quali azioni possono eseguire su di essa. Per impostazione predefinita, solo l'account AWS proprietario del dominio può creare e accedere ai repository nel dominio. Puoi applicare un documento di policy a un dominio per consentire ad altri principali IAM di accedervi.

Per ulteriori informazioni, consulta Politiche e autorizzazioni e Identity-Based Politiche e Resource-Based politiche.

Abilita l'accesso tra account a un dominio

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). Per creare un repository in un dominio di proprietà di un altro account, al principale deve essere concessa l'CreateRepositoryautorizzazione sulla risorsa del dominio.

Ad esempio, la seguente politica sulle risorse concede all'account l'123456789012autorizzazione a creare un repository nel dominio.

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

Per consentire la creazione di repository con tag, è necessario includere l'autorizzazione. codeartifact:TagResource Ciò consentirà inoltre all'account di accedere per aggiungere tag al dominio e a tutti i repository in esso contenuti.

La politica del dominio viene valutata per tutte le operazioni sul dominio e su tutte le risorse all'interno del dominio. Ciò significa che la politica del dominio può essere utilizzata per applicare le autorizzazioni ai repository e ai pacchetti nel dominio. Quando l'Resourceelemento è impostato su*, l'istruzione si applica a tutte le risorse del dominio. Ad esempio, se la policy precedente fosse inclusa anche codeartifact:DescribeRepository nell'elenco delle azioni IAM consentite, la policy consentirebbe di chiamare DescribeRepository tutti i repository del dominio. Una policy di dominio può essere utilizzata per applicare le autorizzazioni a risorse specifiche del dominio utilizzando ARN di risorse specifici nell'elemento. Resource

Nota

È possibile utilizzare sia le politiche di dominio che quelle di repository per configurare le autorizzazioni. Quando sono presenti entrambe le policy, entrambe le policy verranno valutate e sarà consentita un'azione se consentita da una delle policy. Per ulteriori informazioni, consulta Interazione tra le policy del repository e del dominio.

Per accedere ai pacchetti in un dominio di proprietà di un altro account, a un principale deve essere concessa l'GetAuthorizationTokenautorizzazione sulla risorsa del dominio. Ciò consente al proprietario del dominio di esercitare il controllo su quali account possono leggere il contenuto dei repository del dominio.

Ad esempio, la seguente politica sulle risorse concede all'account l'123456789012autorizzazione a recuperare un token di autenticazione per qualsiasi repository del dominio.

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

A un principale che desidera recuperare i pacchetti da un endpoint del repository deve essere concessa l'ReadFromRepositoryautorizzazione sulla risorsa del repository oltre all'autorizzazione sul dominio. GetAuthorizationToken Allo stesso modo, a un principale che desidera pubblicare pacchetti su un endpoint del repository deve essere concessa l'autorizzazione in aggiunta a. PublishPackageVersion GetAuthorizationToken

Per ulteriori informazioni sulle autorizzazioni ReadFromRepository e sulle PublishPackageVersion autorizzazioni, vedere Repository Policies.

Esempio di politica di dominio

Quando più account utilizzano un dominio, è necessario concedere agli account un set di autorizzazioni di base per consentire l'uso completo del dominio. La seguente politica sulle risorse elenca una serie di autorizzazioni che consentono l'uso completo del dominio.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "BasicDomainPolicy", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:DescribeDomain", "codeartifact:CreateRepository" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::123456789012:root" } } ] }
Nota

Non è necessario creare una politica di dominio se un dominio e tutti i relativi repository sono di proprietà di un singolo account e devono essere utilizzati solo da quell'account.

Esempio di politica di dominio con AWS Organizations

Puoi utilizzare la chiave aws:PrincipalOrgID condizionale per concedere l'accesso a un CodeArtifact dominio da tutti gli account della tua organizzazione, come segue.

JSON
{ "Version":"2012-10-17", "Statement": { "Sid": "DomainPolicyForOrganization", "Effect": "Allow", "Principal": "*", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:DescribeDomain", "codeartifact:CreateRepository" ], "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID":["o-xxxxxxxxxxx"]} } } }

Per ulteriori informazioni sull'utilizzo della chiave di aws:PrincipalOrgID condizione, consulta AWS Global Condition Context Keys nella IAM User Guide.

Imposta una policy di dominio

È possibile utilizzare il put-domain-permissions-policy comando per allegare una policy a un dominio.

aws codeartifact put-domain-permissions-policy --domain my_domain --domain-owner 111122223333 \ --policy-document file://</PATH/TO/policy.json>

Quando si chiamaput-domains-permissions-policy, CodeArtifact ignora la politica delle risorse sul dominio durante la valutazione delle autorizzazioni. Ciò garantisce che il proprietario di un dominio non possa bloccarsi dal dominio, il che impedirebbe loro 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 dominio utilizzando una politica delle risorse, poiché la politica delle risorse viene ignorata quando si chiama put-domain-permissions-policy.

Output di esempio:

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

L'output del comando contiene l'Amazon Resource Name (ARN) della risorsa di dominio, il contenuto completo del documento della policy e un identificatore di revisione. L'identificatore di revisione può essere passato utilizzando l'opzione. put-domain-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 di dominio

Per leggere una versione esistente di un documento di policy, usa il get-domain-permissions-policy comando. Per formattare l'output in modo che sia leggibile, usate il --query policy.document comando --output e insieme al json.tool modulo Python, come segue.

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

Output di esempio:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "BasicDomainPolicy", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:CreateRepository" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:root" } } ] }

Eliminare una politica di dominio

Usa il delete-domain-permissions-policy comando per eliminare una policy da un dominio.

aws codeartifact delete-domain-permissions-policy --domain my_domain --domain-owner 111122223333

Il formato dell'output è lo stesso dei delete-domain-permissions-policy comandi get-domain-permissions-policy e.