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

Politiche di dominio

CodeArtifact supporta l'utilizzo di autorizzazioni basate sulle risorse per controllare l'accesso. Le autorizzazioni basate sulle risorse consentono di specificare chi ha accesso a una risorsa e quali azioni può 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 responsabili IAM di accedervi.

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

Abilita l'accesso tra più account a un dominio

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 (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 in materia di risorse concede all'account l'123456789012autorizzazione a creare un repository nel dominio.

{ "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 aggiungere tag al dominio e a tutti i repository in esso contenuti.

La politica del dominio viene valutata per tutte le operazioni relative al dominio e a 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 del dominio. Quando l'Resourceelemento è impostato su*, l'istruzione si applica a tutte le risorse del dominio. Ad esempio, se la policy di cui sopra fosse inclusa anche codeartifact:DescribeRepository nell'elenco delle azioni IAM consentite, la policy consentirebbe di richiamare DescribeRepository ogni repository del dominio. È possibile utilizzare una policy di dominio per applicare autorizzazioni a risorse specifiche del dominio utilizzando ARN di risorse specifiche nell'elemento. Resource

Nota

È possibile utilizzare sia le politiche di dominio che quelle di repository per configurare le autorizzazioni. Quando sono presenti entrambe le politiche, entrambe verranno valutate e, se consentita da una delle due politiche, sarà consentita un'azione. Per ulteriori informazioni, consulta Interazione tra le politiche 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 sugli account che possono leggere il contenuto degli archivi del dominio.

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

{ "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 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 PublishPackageVersion autorizzazioni ReadFromRepository e, vedere Repository Policies.

Esempio di policy di dominio

Quando più account utilizzano un dominio, è necessario concedere agli account un set di autorizzazioni di base per consentire il pieno utilizzo del dominio. La seguente politica delle risorse elenca una serie di autorizzazioni che consentono il pieno utilizzo del dominio.

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

È possibile utilizzare la chiave di aws:PrincipalOrgID condizione per concedere l'accesso a un CodeArtifact dominio da tutti gli account dell'organizzazione, come segue.

{ "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 aws:PrincipalOrgID condition, consulta AWS Global Condition Context Keys nella IAM User Guide.

Imposta una politica di dominio

È possibile utilizzare il put-domain-permissions-policy comando per allegare una politica 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, la politica delle risorse sul dominio viene ignorata durante la valutazione delle autorizzazioni. Ciò garantisce che il proprietario di un dominio non possa escludersi dal dominio, 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 dominio utilizzando una politica delle risorse, poiché la politica delle risorse viene ignorata durante la chiamata. 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 di policy e un identificatore di revisione. L'identificatore di revisione può essere passato a utilizzando l'opzione. put-domain-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 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 da renderlo leggibile, usa --output e --query policy.document insieme al modulo json.tool 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:

{ "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 politica 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 and.