View a markdown version of this page

CodeBuild création d'un rôle de provisioning - AWS Proton

Avis de fin de support : le 7 octobre 2026, AWS le support pour AWS Proton. Après le 7 octobre 2026, vous ne pourrez plus accéder à la AWS Proton console ni aux AWS Proton ressources. Votre infrastructure déployée restera intacte. Pour plus d'informations, consultez le Guide AWS Proton de dépréciation et de migration des services.

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.

CodeBuild création d'un rôle de provisioning

Les outils d'infrastructure en tant que code (iAAC) tels que CloudFormation Terraform nécessitent des autorisations pour les nombreux types de ressources. AWS Par exemple, si un modèle iAAC déclare un compartiment Amazon S3, il a besoin d'autorisations pour créer, lire, mettre à jour et supprimer des compartiments Amazon S3. Il est considéré comme une bonne pratique en matière de sécurité de limiter les rôles aux autorisations minimales requises. Compte tenu de l'étendue des AWS ressources, il est difficile de créer des politiques de moindre privilège pour les modèles iAAC, en particulier lorsque les ressources gérées par ces modèles peuvent changer ultérieurement. Par exemple, dans vos dernières modifications apportées à un modèle géré par AWS Proton, vous ajoutez une ressource de base de données RDS.

La configuration des autorisations appropriées facilite les déploiements de votre IaC. AWS Proton CodeBuild Le provisioning exécute des commandes CLI arbitraires fournies par le client dans un CodeBuild projet situé dans le compte du client. Généralement, ces commandes créent et suppriment une infrastructure à l'aide d'un outil d'infrastructure en tant que code (IAAC) tel que AWS CDK. Lors du déploiement d'une AWS ressource dont le modèle utilise CodeBuild Provisioning, AWS une compilation est lancée dans un CodeBuild projet géré par. AWS Un rôle est transmis à CodeBuild, qui CodeBuild suppose d'exécuter des commandes. Ce rôle, appelé rôle de CodeBuild provisionnement, est fourni par le client et contient les autorisations requises pour provisionner l'infrastructure. Il est censé être assumé uniquement par CodeBuild et ne AWS Proton peut même pas être assumé.

Création du rôle

Le rôle de CodeBuild provisionnement peut être créé dans la console IAM ou dans le. AWS CLI Pour le créer dans AWS CLI :

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version": "2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AWSProtonCodeBuildProvisioningBasicAccess

Cela joint également leAWSProtonCodeBuildProvisioningBasicAccess, qui contient les autorisations minimales requises par le CodeBuild service pour exécuter une compilation.

Si vous préférez utiliser la console, veillez à ce qui suit lors de la création du rôle :

  1. Pour Entité de confiance, sélectionnez AWS Service, puis sélectionnez CodeBuild.

  2. À l'étape Ajouter des autorisations, sélectionnez toutes AWSProtonCodeBuildProvisioningBasicAccess les autres politiques que vous souhaitez joindre.

Accès administrateur

Si vous associez la AdministratorAccess politique au rôle de CodeBuild provisionnement, cela garantit que tout modèle iAAC n'échouera pas en raison d'un manque d'autorisations. Cela signifie également que toute personne capable de créer un modèle d'environnement ou un modèle de service peut effectuer des actions de niveau administrateur, même si cet utilisateur n'est pas administrateur. AWS Proton ne recommande pas de l'utiliser AdministatorAccess avec le rôle de CodeBuild provisionnement. Si vous décidez de l'utiliser AdministratorAccess avec le rôle de CodeBuild provisionnement, faites-le dans un environnement sandbox.

Vous pouvez créer un rôle AdministratorAccess dans la console IAM ou en exécutant cette commande :

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version": "2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
Création d'un Minimally-Scoped rôle

Si vous souhaitez créer un rôle avec des autorisations minimales, il existe plusieurs approches :

  • Déployez avec des autorisations d'administrateur, puis réduisez la portée du rôle. Nous vous recommandons d'utiliser IAM Access Analyzer.

  • Utilisez des politiques gérées pour donner accès aux services que vous prévoyez d'utiliser.

AWS CDK

Si vous utilisez AWS CDK with AWS Proton et que vous avez exécuté cdk bootstrap sur chaque environnement account/Region, il existe déjà un rôle pourcdk deploy. Dans ce cas, associez la politique suivante au rôle de CodeBuild provisionnement :

{ "Action": "sts:AssumeRole", "Resource": [ "arn:aws:iam::account-id:role/cdk-*-deploy-role-*", "arn:aws:iam::account-id:role/cdk-*-file-publishing-role-*" ], "Effect": "Allow" }
VPC personnalisé

Si vous décidez de vous exécuter CodeBuild dans un VPC personnalisé, vous aurez besoin des autorisations suivantes dans votre CodeBuild rôle :

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": [ "arn:aws:ec2:region:account-id:*/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:region:account-id:network-interface/*", "Condition": { "StringEquals": { "ec2:AuthorizedService": "codebuild.amazonaws.com" } } }

Vous pouvez également utiliser la politique AmazonEC2FullAccess gérée, même si elle inclut des autorisations dont vous n'avez peut-être pas besoin. Pour joindre la politique gérée à l'aide de l'interface de ligne de commande :

aws iam create-role --role-name AWSProtonCodeBuildProvisioning --assume-role-policy-document '{"Version": "2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"codebuild.amazonaws.com"},"Action":"sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSProtonCodeBuildProvisioning --policy-arn arn:aws:iam::aws:policy/AdministratorAccess