Politiques de domaine - CodeArtifact

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Politiques de domaine

CodeArtifact prend en charge l'utilisation d'autorisations basées sur les ressources pour contrôler l'accès. Les autorisations basées sur les ressources vous permettent de spécifier qui a accès à une ressource et quelles actions ils peuvent effectuer sur celle-ci. Par défaut, seul le AWS compte propriétaire du domaine peut créer des référentiels dans le domaine et y accéder. Vous pouvez appliquer un document de politique à un domaine pour permettre aux autres IAM principaux d'y accéder.

Pour plus d'informations, consultez les sections Politiques et autorisations et Stratégies basées sur l'identité et Stratégies basées sur les ressources.

Activer l'accès multicompte à un domaine

Une politique de ressources est un fichier texte au JSON format. Le fichier doit spécifier un principal (acteur), une ou plusieurs actions et un effet (AllowouDeny). Pour créer un référentiel dans un domaine appartenant à un autre compte, le principal doit CreateRepository obtenir l'autorisation sur la ressource du domaine.

Par exemple, la politique de ressources suivante accorde au compte 123456789012 l'autorisation de créer un référentiel dans le domaine.

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

Pour autoriser la création de référentiels avec des balises, vous devez inclure l'codeartifact:TagResourceautorisation. Cela permettra également au compte d'ajouter des balises au domaine et à tous les référentiels qu'il contient.

La politique de domaine est évaluée pour toutes les opérations effectuées sur le domaine et pour toutes les ressources du domaine. Cela signifie que la politique de domaine peut être utilisée pour appliquer des autorisations aux référentiels et aux packages du domaine. Lorsque l'Resourceélément est défini sur*, l'instruction s'applique à toutes les ressources du domaine. Par exemple, si la politique ci-dessus est également incluse codeartifact:DescribeRepository dans la liste des IAM actions autorisées, elle autorisera l'appel DescribeRepository à tous les référentiels du domaine. Une politique de domaine peut être utilisée pour appliquer des autorisations à des ressources spécifiques du domaine en utilisant une ressource spécifique ARNs dans l'Resourceélément.

Note

Les politiques de domaine et de référentiel peuvent être utilisées pour configurer les autorisations. Lorsque les deux politiques sont présentes, les deux politiques sont évaluées et une action est autorisée si l'une ou l'autre politique l'autorise. Pour de plus amples informations, veuillez consulter Interaction entre le référentiel et les politiques de domaine.

Pour accéder aux packages d'un domaine appartenant à un autre compte, un principal doit GetAuthorizationToken obtenir l'autorisation sur la ressource du domaine. Cela permet au propriétaire du domaine de contrôler les comptes autorisés à lire le contenu des référentiels du domaine.

Par exemple, la politique de ressources suivante accorde au compte l'123456789012autorisation de récupérer un jeton d'authentification pour n'importe quel référentiel du domaine.

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

Un principal qui souhaite récupérer des packages depuis un point de terminaison du référentiel doit ReadFromRepository obtenir l'autorisation sur la ressource du référentiel en plus de l'GetAuthorizationTokenautorisation sur le domaine. De même, un directeur qui souhaite publier des packages sur un point de terminaison du référentiel doit PublishPackageVersion obtenir l'autorisation en plus deGetAuthorizationToken.

Pour plus d'informations sur les PublishPackageVersion autorisations ReadFromRepository et, consultez la section Politiques du référentiel.

Exemple de politique de domaine

Lorsque plusieurs comptes utilisent un domaine, les comptes doivent bénéficier d'un ensemble d'autorisations de base pour permettre l'utilisation complète du domaine. La politique de ressources suivante répertorie un ensemble d'autorisations qui permettent l'utilisation complète du domaine.

{ "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" } } ] }
Note

Il n'est pas nécessaire de créer une politique de domaine si un domaine et tous ses référentiels appartiennent à un seul compte et ne doivent être utilisés qu'à partir de ce compte.

Exemple de politique de domaine avec AWS Organizations

Vous pouvez utiliser la clé de aws:PrincipalOrgID condition pour accorder l'accès à un CodeArtifact domaine à partir de tous les comptes de votre organisation, comme suit.

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

Pour plus d'informations sur l'utilisation de la clé de aws:PrincipalOrgID condition, consultez la section Clés contextuelles de condition AWS globales dans le guide de IAM l'utilisateur.

Définissez une politique de domaine

Vous pouvez utiliser la put-domain-permissions-policy commande pour associer une politique à un domaine.

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

Lorsque vous appelezput-domains-permissions-policy, la politique de ressources du domaine est ignorée lors de l'évaluation des autorisations. Cela garantit que le propriétaire d'un domaine ne peut pas s'empêcher d'accéder au domaine, ce qui l'empêcherait de mettre à jour la politique de ressources.

Note

Vous ne pouvez pas autoriser un autre AWS compte à mettre à jour la politique de ressources d'un domaine à l'aide d'une stratégie de ressources, car la politique de ressources est ignorée lors de l'appel put-domain-permissions-policy.

Exemple de sortie :

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

La sortie de la commande contient le nom de ressource Amazon (ARN) de la ressource de domaine, le contenu complet du document de politique et un identifiant de révision. L'identifiant de révision peut être transmis à put-domain-permissions-policy l'aide de l'--policy-revisionoption. Cela garantit qu'une révision connue du document est remplacée, et non une version plus récente définie par un autre rédacteur.

Lire une politique de domaine

Pour lire une version existante d'un document de politique, utilisez la get-domain-permissions-policy commande. Pour formater la sortie à des fins de lisibilité, utilisez le module --output et --query policy.document avec le json.tool module Python, comme suit.

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

Exemple de sortie :

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

Supprimer une politique de domaine

Utilisez la delete-domain-permissions-policy commande pour supprimer une politique d'un domaine.

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

Le format de sortie est identique à celui des delete-domain-permissions-policy commandes get-domain-permissions-policy et.